Отправлено: 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
Сергей, спасибо за такой детальный совет, буду копать у себя. PS: Помогло DO EVENTS. Нет, не помогло.
SergKis пишет:
цитата:
А как вы получаете :nCell := 0 ?
Нашел ошибку! Да, у меня перед Activate формы с броузом, стоял блок восстанова параметров из INI-файла - там был ноль и тупо присвоило ::nCell := 0 У себя я, конечно, исправил, но, может для присвоения ::nCel сделать метод класса с проверкой?
берешь oBrw:hWnd и по его координатам (getwindowrect() ) рисуешь свое
Спасибо БОЛЬШОЕ !
Вот пример. Когда окно по ценру, то окно wZero по таблице закрывается пиксель в пиксель !!! А если окно сдвинуть, то наступает фигня... Может команда нужна типа SET DIALOGBOX CENTER OF PARENT ? Как исправить ? Вот исходник - Скрытый текст
Никто не копировал объект OBRW TSBrowse? Я сформировал TSBrowse на одной форме со всеми картинками, блоками кода и т.д. и хотел бы скопировать(клонировать) этот объект на другую форму, это возможно?
Отправлено: 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, возможно, это неплохой вариант.
Имеется код: 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 дата вводится простыми цифрами, но как это сделать в моём случае я так и не сообразил. Помогите люди добрые.
Отправлено: 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.
Отправлено: 08.06.22 20:47. Заголовок: alex_II пишет PREEDI..
alex_II пишет
цитата:
PREEDIT {|| preMod('lm1')}
Что возвращает эта конструкция и какие значения имеют oCol:lCheckBoxNoReturn .OR. ::lCheckBoxAllReturn ? То о чем спрашиваете тут (метод :Edit(...))Скрытый текст
Все даты в формате GMT
3 час. Хитов сегодня: 129
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет