On-line: Andrey, PSP, SergKis, гостей 0. Всего: 3 [подробнее..]
АвторСообщение
постоянный участник


Пост N: 420
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)


TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений
К примеру

 цитата:

DEFINE TBROWSE oBrw2 ;
AT 60,450 ;
ALIAS cAlias ;
OF Form1 ;
WIDTH 330 ;
HEIGHT 340 ;
FONT "Verdana" ;
SIZE 9 ;
ON DBLCLICK CopyRec();
ON GOTFOCUS fModelo_Hab(2) ;
AUTOFILTER ;
CELLED EDIT;
VALUE nRec;
GRID


Здесь я собрал параметры из разных tBrows
Можно или нет и какие парметры заменить
выражением ( и каким) ?
oBrw2:....
oBrw2:....



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 180 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]


постоянный участник




Пост N: 7166
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.12.21 22:37. Заголовок: Опять старая проблем..


Опять старая проблема вылезла, несколько лет назад такое было и не решили как исправить.
Глюк показа в левом нижнем углу колонки SELECTOR - при условии что цвет фона ПОДВАЛА последней колонки отличается от основного цвета. Вот так на картинке:


Т.е. цвет фона последней колонки ОРАНЖЕВЫЙ и он перескакивает на SELECTOR - кружок (2).
Вот код как это происходит:
   // цвета изменить 
nClrNoDbf := GetSysColor( COLOR_BTNFACE )
oCol := oBrw:GetColumn("ORDKEYNO")
oCol:nClrBack := nClrNoDbf

// цвет фона шапки таблицы + подвала списка колонок - (1)
FOR nI := oBrw:nColumn("ORDKEYNO") TO Len( oBrw:aColumns )
oCol := oBrw:aColumns[ nI ]
cCol := oCol:cName
cTyp := oCol:cFieldTyp
IF cTyp $ "+=^" // Type: [+] [=] [^]
oCol:nClrHeadBack := CLR_ORANGE
oCol:nClrFootBack := CLR_ORANGE
ENDIF
NEXT

// Левый верхний уголок - (3) исправление фона
oBrw:nClrSelectorHdBack := nClrNoDbf

Как исправить уголок (2) ?
Может можно сделать в коде ТСБ примерно такую переменную ?
   // Левый нижний уголок  
oBrw:nClrSelectorHdFoot := nClrNoDbf


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3993
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.12.21 22:57. Заголовок: Andrey пишет Как исп..


Andrey пишет
 цитата:
Как исправить уголок (2) ?
Может можно сделать в коде ТСБ примерно такую переменную ?


Можно использовать ту же переменную, что и для Header, т.е. сделать такую правку
 
METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse
...
IF ::lFooting .AND. ::lDrawFooters
...
If !( nJ == 1 .AND. ::lSelector ) // JP
nClrBack := iif( oColumn:nClrFootBack != NIL, oColumn:nClrFootBack, nClrFootBack )
ELSEIF ::nClrSelectorHdBack != NIL
nClrBack := ::nClrSelectorHdBack

ELSE
nClrBack := ATail( ::aColumns ):nClrFootBack
ENDIF
nClrBack := ::GetValProp( nClrBack, nClrBack, nJ )


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 217
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 11.12.21 13:18. Заголовок: SergKis пишет: Жела..


SergKis пишет:

 цитата:
Желательно, перейти на MODA


Сергей, спасибо за такой детальный совет, буду копать у себя.
PS: Помогло DO EVENTS. Нет, не помогло.

SergKis пишет:

 цитата:
А как вы получаете :nCell := 0 ?


Нашел ошибку! Да, у меня перед Activate формы с броузом, стоял блок
восстанова параметров из INI-файла - там был ноль и тупо присвоило ::nCell := 0
У себя я, конечно, исправил, но, может для присвоения ::nCel сделать метод класса с проверкой?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7171
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.12.21 22:41. Заголовок: Пытаюсь положить окн..


Пытаюсь положить окно в размер ТСБ, не получается... Окно больше и со сдвигом идёт ...
Делаю так:
 
cForm := oBrw:cParentWnd
nRow := GetProperty(cForm, "Row") + GetTitleHeight() + oBrw:nTop
nCol := GetProperty(cForm, "Col") + GetBorderWidth() + oBrw:nLeft
nH := oBrw:nBottom - oBrw:nTop
nW := oBrw:nRight - oBrw:nLeft

DEFINE WINDOW Forma_Zero AT nRow, nCol CLIENTAREA nW, nH MODAL NOCAPTION ;
BACKCOLOR aBColor ON LOSTFOCUS oWnd:Release()

oWnd := ThisWindow.Object


Подскажите пожалуйста, где промахнулся...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1820
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 15.12.21 09:55. Заголовок: Andrey пишет: где п..


Andrey пишет:

 цитата:
где промахнулся..


В алгоритме, берешь oBrw:hWnd и по его координатам (getwindowrect() ) рисуешь свое

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7174
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.12.21 16:55. Заголовок: Haz пишет: берешь o..


Haz пишет:

 цитата:
берешь oBrw:hWnd и по его координатам (getwindowrect() ) рисуешь свое


Спасибо БОЛЬШОЕ !

Вот пример. Когда окно по ценру, то окно wZero по таблице закрывается пиксель в пиксель !!!
А если окно сдвинуть, то наступает фигня...
Может команда нужна типа SET DIALOGBOX CENTER OF PARENT ?
Как исправить ?
Вот исходник - Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4008
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.12.21 21:15. Заголовок: Andrey пишет Как исп..


Andrey пишет
 цитата:
Как исправить ?


Вспомнил, что с Игорем сделали недавно метод :GetCellSize(), применил
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1825
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 15.12.21 21:23. Заголовок: SergKis пишет: прим..


SergKis пишет:

 цитата:
применил

необычное решение

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7176
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.12.21 13:27. Заголовок: Супер ! :sm208:..


Супер !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4009
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.12.21 14:41. Заголовок: Andrey Обработаем l..


Andrey
Обработаем lHead и передадим параметры Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7196
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.12.21 07:15. Заголовок: Непонятка возникла п..


Непонятка возникла по ТСБ.
Ставлю отключение вывода суперхидера/шапки/нумератора/подвала
oBrw:lDrawHeaders  := .F.

Всё скрывается, отлично но:
(1) теряется формат полей "T=@"
(2) размеры ТСБ уменьшаются снизу
Вот картинка:


И ещё один вопрос.
Как мне можно оставить Нумератор и Подвал в ТСБ ?
Или только отдельно Подвал ?
Или только отдельно Нумератор ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 220
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 14.01.22 12:34. Заголовок: Копирование TSBrowse


Никто не копировал объект OBRW TSBrowse?
Я сформировал TSBrowse на одной форме со всеми картинками, блоками кода и т.д. и
хотел бы скопировать(клонировать) этот объект на другую форму, это возможно?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4033
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.01.22 14:40. Заголовок: krutoff пишет Я сфор..


krutoff пишет
 цитата:
Я сформировал TSBrowse на одной форме со всеми картинками, блоками кода и т.д. и
хотел бы скопировать(клонировать) этот объект на другую форму, это возможно?


Чисто технически копировать можно, но колонки это объекты и в скопированном варианте будут ссылки на одни и те же колонки, при lEdit := .T. каждый тсб будет создавать каждый свои :oEdit, хорошо это или плохо, хз.
Делал копирование колонок
 
aColOld := {}
FOR EACH oCol IN oBrw:aColumns
AADD( aColOld, oCol:Clone() )
NEXT

менял колонки в oBrw:aColumns (добавлял переменные в oCol) и потом восстанавливал обратно из aColOld.
Можно создать новый DEFINE TBROWSE ... и методом oBrw:AddColumn( oCol ) перегнать туда массив aColOld, но надо помнить, что в колонках в :bData, через FieldWBlock("FieldName", select(oBrw:cAlias)), заложена область dbf файла.
Можно создать базу колонок и потом исп. ее для создания разных тсб (алиас для тсб задается). Примеры: app_oopcolumns и app_ooptsbbox
Если исп. _TBrowse(...) с oTsb := oHmgData() ... параметрами, то для др. разных тсб можно использовать параметры настройки одного объекта oTsb, возможно, это неплохой вариант.

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4086
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.03.22 13:06. Заголовок: Пример из серии Craz..


Пример из серии Crazy https://TransFiles.ru/w6x7n
Возможно будет кому то интересен.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 160
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 26.04.22 15:19. Заголовок: Редактирование даты


Имеется код:
DEFINE TBROWSE Br_sch AT h_tlbar,0 ALIAS 'sch' WIDTH w_br HEIGHT h_br BOLD CELLED
...
ADD COLUMN TO Br_sch HEADER 'Ввод в'+CRLF+'работу' SIZE w_dtv ;
DATA FieldWBlock('dtuse', Select('sch')) ;
ALIGN DT_CENTER, DT_CENTER ;
PREEDIT {|uVar| oldVal := uVar, IF(Status = 1, .T., .F.)} ;
POSTEDIT {|uVar| postMod(uVar,'введен'), Br_sch:DrawSelect()} ;
EDITABLE
...
Пользователи недовольны тем, как приходится набирать дату, процесс получается довольно
протяженный пока выберешь год, потом месяц и наконец дату.
В примере d:\MiniGUI\SAMPLES\Advanced\Tsb_Basic дата вводится простыми цифрами, но как
это сделать в моём случае я так и не сообразил.
Помогите люди добрые.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7649
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.04.22 17:05. Заголовок: у меня так примерно ..


у меня так примерно
oBrw3:SetColSize("data_c", 85 )
oBrw3:GetColumn("data_c"):cHeading :="Дата"+CRLF+"создания"
oBrw3:GetColumn("data_c"):cPicture :="@D"
oBrw3:GetColumn( "data_c"):lEdit := kaka("master")
obrw3:GetColumn("data_c"):bPrevEdit := { |a, b, lLock| SetGetAdjustBrw(b,{2,0,-2,-3}) , If( lLock := (b:cAlias)->(RLock()), (b:cAlias)->(dbUnLock()), Msgstop("Запись заблокирована","Внимание")), lLock }
oBrw3:GetColumn("data_c"):nAlign:=DT_CENTER
oBrw3:lPickerMode := .F.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 161
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 27.04.22 05:13. Заголовок: Dima пишет: oBrw3:l..


Dima пишет:

 цитата:
oBrw3:lPickerMode := .F.


Спасибо, помогла данная установка.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 162
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 08.06.22 18:08. Заголовок: Редактирование логического поля


Наткнулся на непонятную ситуацию

DEFINE TBROWSE ...
...
ADD COLUMN TO Br_sch HEADER '' SIZE w_lod ;
DATA FieldWBlock('lm1', Select('sch')) ;
CHECKBOX ;
PREEDIT {|| preMod('lm1')} ;
EDITABLE
...
У меня редактирование логического поля происходит по уcловию
из preMod. Всё работает, когда используется клавиатура, но когда
используется мышь то двойной клик по полю хоть и вызывает выполнение
функции preMod, её возврат не анализируется и поле lm1 всегда
меняет своё значение на противоположное.
Такое впечатление, что двойной клик мышью вызывает сначала
безусловное редактирование логического поля, а потом обработку
из PREEDIT.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4134
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.06.22 20:47. Заголовок: alex_II пишет PREEDI..


alex_II пишет
 цитата:
PREEDIT {|| preMod('lm1')}


Что возвращает эта конструкция и какие значения имеют oCol:lCheckBoxNoReturn .OR. ::lCheckBoxAllReturn ?
То о чем спрашиваете тут (метод :Edit(...))Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 163
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 09.06.22 05:30. Заголовок: PREEDIT возвращает ...


PREEDIT возвращает .F.
oCol:lCheckBoxNoReturn = .T.
::lCheckBoxAllReturn = .T.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 180 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 117
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет