On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
gfilatov
модератор




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть V) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




Спасибо: 5 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


Dima
администратор




Пост N: 5133
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.07.15 23:07. Заголовок: Но там не только это..


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

gfilatov2002 пишет:

 цитата:
но обрати внимание после этого изменения на отображение восьмой колонки "без доставки"


Все нормально с ней. Хидер на месте да и данные в таблице. Нет ?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 775
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.07.15 00:20. Заголовок: Dima пишет: данные..


Dima пишет:

 цитата:
данные в таблице


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

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5134
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.07.15 08:41. Заголовок: gfilatov2002 Собрал..


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


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 608
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.07.15 11:56. Заголовок: мерцание как на ело..



 цитата:
мерцание как на елочной гирлянде :)



Дополню, причина мерцания в логике алгоритма - строка с курсором постоянно перекрашивается :

Как стандартно отрабатывается :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() все зеркально



Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5135
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.07.15 12:13. Заголовок: Дополню , так как з..


Дополню , так как забыл о правке еще одной в методе GoDown()

было
 
If lTranspar //V90
::Paint() //V90
Else //V90
::nRowPos := nLines
::TSBrwScroll( 1 )
EndIf //V90


Стало
 
If lTranspar //V90
::Paint() //V90
Else //V90
::nRowPos := nLines
::TSBrwScroll( 1 )
::Skip(-1)
::DrawLine( ::nRowPos -1 ) // добавил 10.07.2015
::Skip(+1)
EndIf //V90



Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 776
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.07.15 13:20. Заголовок: Dima пишет: забыл о..


Dima пишет:

 цитата:
забыл о правке еще одной


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

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5136
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.07.15 13:25. Заголовок: gfilatov2002 Cишник..


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

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 777
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.07.15 13:56. Заголовок: Dima пишет: Cишник ..


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.


Если есть замечания к этому тексту - пишите...

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5137
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.07.15 15:00. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Если есть замечания к этому тексту - пишите...


Все в порядке !
Ждем RC3 (Bcc и MinGW).

ЗЫ
Будут еще полезняхи от users from the Russian HMG forum , работаем над этим ;)


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




Пост N: 762
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.07.15 15:59. Заголовок: gfilatov2002 пишет:...


gfilatov2002 пишет:
 цитата:
... - added the new TSColumn variable cName for optional column name.


Может стоит добавить метод для получения номера колонки по имени cName в TsBrowse, типа
METHOD nColumn( cName ) ...
а то получается cName есть, а добыть по нему номер колонки нет, надо городить что то дополнительно


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 609
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 16.07.15 16:37. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может стоит добавить метод для получения номера колонки по имени



Согласен

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



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




Пост N: 763
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.07.15 22:04. Заголовок: Haz пишет:правда там..


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 )


Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5138
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.07.15 22:19. Заголовок: Haz пишет: + SergKis..


Haz пишет: + SergKis пишет: :)

 цитата:
правда там весь огород в одну строку получился


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

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 610
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.07.15 11:12. Заголовок: SergKis пишет: Огор..


SergKis пишет:

 цитата:
Огород - это когда в каждый проект сувать



Да я за не хочу в каждый проект

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 778
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.07.15 11:21. Заголовок: Dima пишет: почему ..


Dima пишет:

 цитата:
почему бы не добавить


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

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 611
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.07.15 11:46. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

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



когда нужно ? сделаем !

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 779
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.07.15 12:09. Заголовок: Haz пишет: когда ну..


Haz пишет:

 цитата:
когда нужно ?


До понедельника терпит...

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 612
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.07.15 14:14. Заголовок: gfilatov2002 пишет: ..


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]) } ,, ) - меняем шрифт в строке курсора на жирный









Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 780
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.07.15 14:31. Заголовок: Haz пишет: добавить..


Haz пишет:

 цитата:
добавить переменную


Принимается

Haz пишет:

 цитата:
использование будет в примере


Уже интересно

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 614
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.07.15 15:11. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Уже интересно



тут лежит
http://files.icq.net/get/u5MzLxXRzQVfYBkIbGxT9M55a8f0ac1be

PS Пример собран на библиотеке с учетом всех предложенных изменений

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 480
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет