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




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


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

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

Готовится к опубликованию новая сборка №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 [только новые]


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




Пост N: 3444
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 10:04. Заголовок: Haz Тут https://Tra..


Haz
Тут https://TransFiles.ru/tif7u
Немного поправил. В таком виде работает.
Возможно, ты прав, что в hash надо хранить структуру.
В тексте сохраняю объект, но наверно, надо массив с выборочными данными

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




Пост N: 3445
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 10:22. Заголовок: Haz пишет и в двух м..


Haz пишет
 цитата:
и в двух методах GoLeft / GoRight поправить вызов Refresh() с учетом 3-го параметра


В том то и дело, что тут они не нужны, т.к. по этим методам те cell, которые есть в hash отображаются из него,
а тех что нет отображаются пополняя hash, т.е. если не делаем ::aFastDrawCell:= hb_hash(), то съедаем весь
дбф в hash и все отображение идет из него. И когда делать ::aFastDrawCell:= hb_hash(), наверно надо решать самому.
Или при смене листа, т.е. PgDn, PgUp

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




Пост N: 3446
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 10:30. Заголовок: PS И когда делать ::..


PS

 цитата:
И когда делать ::aFastDrawCell:= hb_hash(), наверно надо решать самому.


И в :Reset() обязятельно

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




Пост N: 1647
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.10.20 10:37. Заголовок: SergKis пишет: В то..


SergKis пишет:

 цитата:
В том то и дело, что тут они не нужны


я имел ввиду что по умолчанию refresh обнуляет hash, а третий параметр отключает это. В методах goLeft и goRight нужно заменить вызовы refresh с явным третьим параметром в FALSE чтоб не очищался hash

SergKis пишет:

 цитата:
И в :Reset() обязятельно


не надо, там есть вызов ::Refresh( .T., .T. )

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




Пост N: 3447
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 11:01. Заголовок: Haz пишет с явным т..


Haz пишет
 цитата:
с явным третьим параметром в FALSE чтоб не очищался hash


Что то мне подсказывает, что нужна переменная, очищать или нет hash, т.к. работать можно только с hash на широких отчетах и hash сбрасывать не надо до конца работы тсб

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




Пост N: 3448
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 12:51. Заголовок: Игорь Правку такую с..


Игорь
Правку такую сделай, так правильнее, по мне
 
METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse
...
IF lDrawCell
::TSDrawCell( oColumn:oCell, oColumn )
ENDIF
IF ::lFastDrawCell .and. ! lCell
hb_HSet( ::aFastDrawCell, cCell, __objClone( oColumn:oCell ) )
ENDIF

nStartCol += aColSizes[ nJ ] + nDeltaLen
...


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




Пост N: 1648
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.10.20 13:16. Заголовок: SergKis пишет: т.к...


SergKis пишет:

 цитата:
т.к. работать можно только с hash на широких отчетах и hash сбрасывать не надо до конца работы тсб


Нужно подумать тк записи не только вширь бровса но и по количеству записей всего. Тут скорее нужен отдельный метод :tbrw2hash() -> aHash
то есть пробежаться по всей таблице без прорисовки и получить хаш всей таблицы

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




Пост N: 3449
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 13:17. Заголовок: PS DrawSelect поправ..


PS
DrawSelect поправил на hashСкрытый текст


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




Пост N: 1649
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.10.20 13:41. Заголовок: сделал все таки так ..


сделал все таки так
 
METHOD Refresh( lPaint, lRecount, lClearHash ) CLASS TSBrowse

Default lPaint := .T., ;
lRecount := .F.,;
lClearHash := .T.


IF lClearHash
::aFastDrawCell := hb_Hash()
EndIf


If ::lFirstPaint == Nil .or. ::lFirstPaint
Return 0
EndIf


If lRecount .or. Empty( ::nLen )
::nLen := iif( ::lIsDbf, ( ::cAlias )->( Eval( ::bLogicLen ) ), Eval( ::bLogicLen ) )
EndIf

::lNoPaint := .F.

Return ::Super:Refresh( lPaint )


METHOD GoLeft() CLASS TSBrowse

...
If lDraw
::Refresh( .F.,, .F. )
EndIf

...

If ::nCell > ( ::nFreeze + 1 )

::nColPos := ::nCell := ::nFreeze + 1
::Refresh( .F.,, .F.)

If ::oHScroll != Nil
::oHScroll:GoTop()
EndIf

EndIf


METHOD GoRight() CLASS TSBrowse

If lRefresh
::lNoPaint := .F.
::Refresh( .F.,,.F. )
ElseIf ! ::lEditing
::DrawSelect()
EndIf



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




Пост N: 3450
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 13:59. Заголовок: Haz пишет то есть пр..


Haz пишет
 цитата:
то есть пробежаться по всей таблице без прорисовки и получить хаш всей таблицы


Такой вариант есть, я потому и вынес (предложение выше)
 
IF ::lFastDrawCell .and. ! lCell
hb_HSet( ::aFastDrawCell, cCell, __objClone( oColumn:oCell ) )
ENDIF
за скобки. Делаем как в примерах Tsb_Export_2
oBrw:lDrawLine := .F.
dbGotop()
do while !EOF()
oBrw:DrawLine()
dbSkip()
enddo
oBrw:lDrawLine := .T.

hash колонок создан

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




Пост N: 1650
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.10.20 14:07. Заголовок: SergKis пишет: Тако..


SergKis пишет:

 цитата:
Такой вариант есть, я потому и вынес (предложение выше)


Согласен , можно так сделать через отдельный флаг . Но чуть позже когда общая логика выстроится.
Пока погонял с изменениями на рабочем проекте. Мне нравится тяжелые бровсы с подменными значениями в колонках ожили.

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




Пост N: 3451
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 14:09. Заголовок: Haz пишет сделал все..


Haz пишет
 цитата:
сделал все таки так


По мне, нужен отд. метод и переменная в классе, т.к. можно удалить из hash
- только одну колонку
- все колонки одной строки nAt
- все колонки
Переменную и метод назвать, к примеру
DATA lFastDrawClear AS LOGICAL INIT .T.
METHOD FastDrawClear( ... )
Для начала параметр .T.\.F. потом уточнятся

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




Пост N: 3452
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 14:53. Заголовок: Haz пишет сделал все..


Haz пишет
 цитата:
сделал все таки так


Поправил, попробовал. Работает шустрее тсб

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




Пост N: 1651
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.10.20 15:06. Заголовок: SergKis пишет: По м..


SergKis пишет:

 цитата:
По мне, нужен отд. метод и переменная в классе, т.к. можно удалить из hash


Выделим в метод, это уже детали , которые дают дополнительный сервис к новому функционалу.
базовую логику можно и так обыграть.

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




Пост N: 3453
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 15:24. Заголовок: Haz пишет Выделим в ..


Haz пишет
 цитата:
Выделим в метод, это уже детали


Но переменную надо уже сейчас добавить
 
DATA lFastDrawClear AS LOGICAL INIT .T.
...
METHOD Refresh( lPaint, lRecount, lClearHash ) CLASS TSBrowse

Default lPaint := .T., ;
lRecount := .F., ;
lClearHash := ::lFastDrawClear
...


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




Пост N: 1652
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.10.20 18:16. Заголовок: SergKis пишет: Но п..


SergKis пишет:

 цитата:
Но переменную надо уже сейчас добавить


Будем считать что она есть

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




Пост N: 3454
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.10.20 19:18. Заголовок: Игорь Ты еще что то ..


Игорь
Ты еще что то правил ?
Я в перерывах на кофе правил, то что писал.
Погонял на примерах, косяков не заметил.
У меня нет проектов на этой версии hmg, надо переносить изменения в свою.
Потому и спрашиваю. Если шевелится, то буду переносить и Григорию для версии положить.

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




Пост N: 1802
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.10.20 19:22. Заголовок: SergKis пишет: Григ..


SergKis пишет:

 цитата:
Григорию для версии положить


Заранее благодарен
Погонял текущий hash-вариант на тестовой локальной базе с миллионом записей - вроде, работает нормально

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




Пост N: 1653
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.10.20 23:48. Заголовок: SergKis пишет: Ты е..


SergKis пишет:

 цитата:
Ты еще что то правил

по мелочам вызовы refresh в методах. Не критично. У меня комп только на работе. Скину завтра номера строк.
Тоже погонял, на рабочем проекте. Пользователи не заметили. Первая бэтка вышла удачной

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




Пост N: 1654
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.10.20 23:57. Заголовок: Сергей! Думаю нужны ..


Сергей! Думаю нужны три метода для этого хеша. Это check, refresh и clear возможно как ты предлагал все целиком или по колонкам. И вроде больше добавить нечего. Если только перерисовку ячейки в видимой части бровса при изменении в хеш без изменения фокуса бровса.

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