Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть V) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть V) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Dima: Но там не только это название не влезло по ширине в хидер , что без правки что с ней. Ширину колонки можно и нужную задать. В примере это не было целью. Но мысль я думаю Вы уже поняли. gfilatov2002 пишет: но обрати внимание после этого изменения на отображение восьмой колонки "без доставки" Все нормально с ней. Хидер на месте да и данные в таблице. Нет ?

gfilatov2002: Dima пишет: данные в таблице Нажми стрелку вниз и следи за данными в этой колонке. Во всех строках выше нижней будет дублирование данных одной и той же ячейки. Для устранения этой проблемы и требуется дополнительная перерисовка в текущем коде...

Dima: gfilatov2002 Собрал этот пример. Проблемы не увидел. Ездил долго. Можете выложить свой EXE (этого примера) , хочу его пощупать !? В колонке 8 стоит str(random(100)) , так что да, данные могут и дублироваться в строках. Стоит его заменить на что то не рандомное и проблемы нет. И все же жду EXE , если не сложно.


Haz: мерцание как на елочной гирлянде :) Дополню, причина мерцания в логике алгоритма - строка с курсором постоянно перекрашивается : Как стандартно отрабатывается :GoDown() когда курсор в последней строке. 1. Курсор в последней строке , она раскрашена в соответствии с :SetColor( {5,6} … ) 2. К позиции курсора ( в последней строке ) применяется метод :DrawLine() в результате чего вся строка перекрашивается установленными цветами :SetColor( {1,2} … ) Т.е. строка курсора сменила цвет. 3. Производится вызов скрола ВСЕГО окна бровса вверх на высоту одной строки. В этот момент строка курсора по прежнему соответствует :SetColor( {1,2} … ) 4. К позиции курсора ( в последней строке ) применяется метод :DrawSelect() в результате чего вся строка перекрашивается установленными цветами :SetColor( {5,6} … ) Видим, что между 1 и 4 строка курсора МЕНЯЕТ цвет , отсюда и мигания Как предлагается отрабатываеть :GoDown() когда курсор в последней строке. 1. Курсор в последней строке , она раскрашена в соответствии с :SetColor( {5,6} … ) 2. Производится вызов скрола окна бровса БЕЗ последней строки вверх на высоту одной строки. В этот момент строка курсора по прежнему остается :SetColor( {5,6} … ) 3. К строке ::nRowPos – 1 применяется метод :DrawLine() для обновления данных 4. К позиции курсора ( в последней строке ) применяется метод :DrawSelect() для обновления данных Видим, что между 1 и 4 строка курсора НЕ МЕНЯЕТ цвет PS при :GoUp() все зеркально

Dima: Дополню , так как забыл о правке еще одной в методе GoDown() было [pre2] If lTranspar //V90 ::Paint() //V90 Else //V90 ::nRowPos := nLines ::TSBrwScroll( 1 ) EndIf //V90 [/pre2] Стало [pre2] If lTranspar //V90 ::Paint() //V90 Else //V90 ::nRowPos := nLines ::TSBrwScroll( 1 ) ::Skip(-1) ::DrawLine( ::nRowPos -1 ) // добавил 10.07.2015 ::Skip(+1) EndIf //V90 [/pre2]

gfilatov2002: Dima пишет: забыл о правке еще одной Эта правка решает проблему с дублированием данных в 8-й колонке при движении вниз по таблице. Принимается с благодарностью за настойчивость

Dima: gfilatov2002 Cишник тоже надо поправить , Has выше написал для чего. Сорри что дергаю

gfilatov2002: Dima пишет: Cишник тоже надо поправить Да, уже сделал (я рассматривал эти правки а одном пакете) Теперь все изменения выглядят в changelog так: * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - correction of calculation of total column width in the Method ReSize; - minor correction in the Method GoUp; - conspicuous reducing of cursor blinking in the Method GoDown; - correction of a rare bug in the Method PageUp; - used SRCAND raster in the C-function DrawBitmap(); - added handling of <Enter>/<Space> keys similar to LDblClick action; - added the new TSColumn variable cName for optional column name. Contributed by users from the Russian HMG forum. Если есть замечания к этому тексту - пишите...

Dima: gfilatov2002 пишет: Если есть замечания к этому тексту - пишите... Все в порядке ! Ждем RC3 (Bcc и MinGW). ЗЫ Будут еще полезняхи от users from the Russian HMG forum , работаем над этим ;)

SergKis: gfilatov2002 пишет:... - added the new TSColumn variable cName for optional column name. Может стоит добавить метод для получения номера колонки по имени cName в TsBrowse, типа METHOD nColumn( cName ) ... а то получается cName есть, а добыть по нему номер колонки нет, надо городить что то дополнительно

Haz: SergKis пишет: Может стоит добавить метод для получения номера колонки по имени Согласен правда там весь огород в одну строку получился METHOD nColumn( cName ) INLINE MAX( AScan( ::aColumns, {|oCol| UPPER(oCol:cName) == UPPER( cName ) } ), 1 )

SergKis: Haz пишет:правда там весь огород в одну строку получился METHOD nColumn( cName ) INLINE MAX( AScan( ::aColumns, {|oCol| UPPER(oCol:cName) == UPPER( cName ) } ), 1 ) Огород - это когда в каждый проект сувать FUNCTION nColumn( oBrw, cName ) RETURN MAX( AScan( oBrw:aColumns, {|oCol| UPPER(oCol:cName) == UPPER( cName ) } ), 1 )

Dima: Haz пишет: + SergKis пишет: :) правда там весь огород в одну строку получился Действительно почему бы не добавить , мелочь а приятно да и полезно. Вроде даже в Xbrowse FW такого нет (могу ошибаться , так как слез с него...).

Haz: SergKis пишет: Огород - это когда в каждый проект сувать Да я за не хочу в каждый проект

gfilatov2002: Dima пишет: почему бы не добавить Добавил метод METHOD nColumn( cName ), и теперь требуется небольшой пример для проверки/демонстрации этих изменений

Haz: gfilatov2002 пишет: теперь требуется небольшой пример для проверки/демонстрации этих изменени когда нужно ? сделаем !

gfilatov2002: Haz пишет: когда нужно ? До понедельника терпит...

Haz: gfilatov2002 пишет: Добавил метод METHOD nColumn( cName ), У меня как INLINE его добавить не вышло , описал обычным вызовом Григорий , еще дополнение CLASS TSBROWSE добавить переменную ( позволит ловить строку в которой курсор ) DATA lDrawSelect AS LOGICAL INIT .F. в методе DrawSelect() ее переключать перед lSelected := ::lCanSelect .and. ( AScan( ::aSelected, If( ::lIsDbf, ( ::cAlias )->( RecNo() ), ::nAt ) ) ) > 0 добавить ::lDrawSelect := TRUE перед return Self добавить ::lDrawSelect := FALSE ***************************************************** Пример использование будет в примере ) oBrw:ChangeFont( { || IF(oBrw:lDrawSelect, aFont[2], aFont[1]) } ,, ) - меняем шрифт в строке курсора на жирный

gfilatov2002: Haz пишет: добавить переменную Принимается Haz пишет: использование будет в примере Уже интересно

Haz: gfilatov2002 пишет: Уже интересно тут лежит http://files.icq.net/get/u5MzLxXRzQVfYBkIbGxT9M55a8f0ac1be PS Пример собран на библиотеке с учетом всех предложенных изменений



полная версия страницы