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: 4682
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.03.25 12:57. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение добавить
 
FUNCTION _TBrowse( oParam, uAlias, cBrw, nY, nX, nW, nH )
...
IF HB_ISOBJECT( uAlias ) .and. "TODBC" $ uAlias:ClassName
oParam:oTODBC := uAlias
oParam:aHead := {}
IF HB_ISARRAY( oParam:oTODBC:Fields ) .and. Len( oParam:oTODBC:Fields ) > 0
FOR EACH o IN oParam:oTODBC:Fields
AAdd( oParam:aHead, o:FieldName )
NEXT
ELSE
AAdd( oParam:aHead, "Fields not found !" )
ENDIF
o := oParam:oTODBC
IF HB_ISARRAY( o:aRecordset ) .and. Len( o:aRecordset ) > 0
uAlias := o:aRecordset
ELSE
uAlias := { Array( Len( oParam:aHead ) ) }
ENDIF

ELSEIF HB_ISCHAR( uAlias ) .AND. ! "." $ uAlias

dbSelectArea( uAlias )
...

Пример BASIC\ODBC может быть такойСкрытый текст


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




Пост N: 2404
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.03.25 13:19. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение добавить


Добавил эти изменения
Благодарю за помощь

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




Пост N: 4683
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.03.25 16:57. Заголовок: gfilatov2002 Если д..


gfilatov2002
Если добавить в пример (выше) строки
... 
oTsb:lZebra := .T.
oTsb:cSuperHd := "Table name: " + cTbl
oTsb:lSuperHd := .T.
oTsb:aSuperHdColor := {CLR_YELLOW, CLR_BLUE} // {CLR_BLUE}

...

таблица будет иметь более законченный вид

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




Пост N: 2405
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.03.25 17:27. Заголовок: SergKis пишет: доба..


SergKis пишет:

 цитата:
добавить в пример (выше) строки


OK

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




Пост N: 7945
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.03.25 19:06. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
- добавлена возможность вносить комментарии в файлы JPG;


А это как делать и для чего ?

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




Пост N: 2406
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.03.25 20:19. Заголовок: Andrey пишет: для ч..


Andrey пишет:

 цитата:
для чего ?


Файлы формата JPEG поддерживают создание текстового комментария, в который можно записать данные о создателе файла или любую другую информацию. Теперь доступна возможность записи или удаления такого комментария из файла.
Примечание. Для использования этой возможности потребуется подключение бесплатной freeimage.dll

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




Пост N: 2407
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.03.25 10:51. Заголовок: Опубликована финальн..


Опубликована финальная MiniGUI сборка 25.03

Стандартная сборка (zip архив)

Профессиональная сборка (7z архив под паролем)

---
Также были подготовлены дополнительные сборки для следующих C компиляторов:

- MinGW GNU C 14.2.0 (32-bit и 64-bit)

- BCC 7.70 (32-bit и 64-bit)

Если есть интерес в этих сборках - пишите...

Желаю всем хорошего дня

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




Пост N: 1988
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 07.03.25 18:43. Заголовок: Завис последней строки в Tsb


в методе ::Paint()
Замена строки WHILE nI <= nLines .AND. nSkipped == 1

на WHILE nI <= ::nRowCount() .AND. nSkipped == 1

Решает вопрос. Почему nLines получает некорректное значение не разбирался

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




Пост N: 2409
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.03.25 20:00. Заголовок: Haz пишет: в методе..


Haz пишет:

 цитата:
в методе ::Paint()


Поправил
Благодарю за помощь

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




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


gfilatov2002 пишет:

 цитата:
Поправил


Григорий, это заплатка, показывающая в каком месте проблема. Поскольку, я ::lAppendMode не пользую, меня устраивает, но скорее-всего перед циклом нужно тупо повторить строчку инициализации nLines и использовать эту переменную в условиях цикла. В общем у себя оставлю так пока.

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




Пост N: 4684
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.03.25 12:31. Заголовок: Haz пишет скорее-все..


Haz пишет
 цитата:
скорее-всего перед циклом нужно тупо повторить строчку инициализации nLines и использовать эту переменную в условиях цикла


Возможно, надо значение переменной получать в цикле, т.к. прорисовка процесс длительный и появление новой строки в этот момент вносит разницу nLine и ::nRowCount(), что приводит к завису. Но нужна стабильная ситуация для проверки - у меня такого не происходит (::lAppendMode не пользую)

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




Пост N: 1990
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.03.25 13:40. Заголовок: SergKis пишет: Но ..


SergKis пишет:

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


Поймать завис последней строки легко , просто нужно чтоб совпало , что под последнюю строку осталось места чуть меньше ( на пару пикселей ) чем высота строки. И не используется метод динамичекого подбора высоты ::SetNoHoles()
В методе ::Paint() расчёт nLines правильный, происходит до ::DrawHeading() и возможно это влияет на результат возврата ::nRowCount() в последующем
Это явно видно если сравнивать значение nLines и ::nRowCount() перед циклом - к примеру
nLines = 29 а ::nRowCount() = 28.
Отсюда и попытка норисова лишнюю строку.
Разбираться в трёх строчках кода я не вижу смысла, тк ::nRowCount() в условии цикла WHILE меня полностью устраивает

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




Пост N: 4685
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.03.25 14:39. Заголовок: Игорь, спасибо, за р..


Игорь, спасибо, за разъяснение ситуации ошибки .
У меня не происходит такого по причине использования всегда ::SetNoHoles(), даже, если все высоты строк заданы и от них размера высоту тсб (клиентской области) считаю (от кол-ва row)

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




Пост N: 2410
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.03.25 17:57. Заголовок: SergKis пишет: надо..


SergKis пишет:

 цитата:
надо значение переменной получать в цикле


Так и сделал.
Поигрался с высотой строк в примере SAMPLES\Advanced\Tsb_lastrow, пример отработал нормально - залипания последнего ряда не было.
Благодарю за помощь

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




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


gfilatov2002 пишет:

 цитата:
Так и сделал.
Поигрался с высотой строк в примере SAMPLES\Advanced\Tsb_lastrow, пример отработал нормально - залипания последнего ряда не было



Пересчет переменной внутри цикла рабочая , но не эффективная идея Это приведет к увеличению времени прорисовки бровса, не значительно но все же.
Что делает этот пересчет - вызывает метод ::nRowCount(), который вызывает С-функцию CountRows(). Функция арифметически считает сколько целых строк при заданной высоте строки поместится в клиентском окне бровса между хидингами и футингами. Если хидинги и футинги инициализированы и заданы их высоты, то никакие новые строки не влияют на эту арифметику.

А вот что реально влияет на арифметику , так это изменение размера клиентской области окна ::hWnd GetClientRect( ::hWnd, @aRect ) после вызова ::oHScroll:SetRange( 1, Len( ::aColumns ) )
После прорисовки горизонтального скролбара происходит уменьшение клиентской области окна бровса и соответственно ::nRowCount() уже выдаст другое значение
Тоже поигрался - работает
Вывод -
1 убрать расчет из тела цикла
2 Вернуть nLines в параметр цикла WHILE nI <= nLines .AND. nSkipped == 1
3 Иницилизировать nLines после строки ::oHScroll:SetRange( 1, Len( ::aColumns ) )

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




Пост N: 2411
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.03.25 16:15. Заголовок: Haz пишет: Haz пише..


Haz пишет:

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


Понял

Haz пишет:

 цитата:
Вывод -
1 убрать расчет из тела цикла


Убрал.

Haz пишет:

 цитата:
3 Иницилизировать nLines после строки


Рассчитываю значение nLines прямо перед циклом WHILE nI <= nLines .AND. nSkipped == 1
Благодарю за помощь

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




Пост N: 4703
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.03.25 20:50. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправьте FUNCTION _TBrowse(...)
 
:ResetVScroll( .T. )
IF !Empty( :oHScroll )
:oHScroll:SetRange( 0, 0 )
ENDIF


END TBROWSE


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




Пост N: 2413
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.03.25 22:39. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправьте FUNCTION _TBrowse(...)


ОК
Благодарю за помощь

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




Пост N: 2414
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.04.25 11:30. Заголовок: Опубликована финальн..


Опубликована финальная MiniGUI сборка 25.04

Стандартная сборка (zip архив)

Профессиональная сборка (7z архив под паролем)

---
Также были подготовлены дополнительные сборки для следующих C компиляторов:

- MinGW GNU C 14.2.0 (32-bit и 64-bit)

- BCC 7.70 (32-bit и 64-bit)

Эти сборки доступны для всех доноров проекта.

Желаю всем хорошего дня

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




Пост N: 4704
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.04.25 12:42. Заголовок: gfilatov2002 Правка..


gfilatov2002
Правка не большая в ZipToMem
 
ON RELEASE _wSend(90) // Send event 90 on release

При Post, в завершении, окно с данными может destroy сделать раньше, чем выполнится код event 90 и других вызовов, если они есть в :Event(90,...), тут все события должны работать по Send

В Tsb_MergeRowCells
 
WITH OBJECT This.Object
:Event( 0, {|ow,ob| ob := ow:Cargo:oTbl, ob:SetFocus(), ob:DrawSelect(), ob:Show(), DoEvents() })

...
STATIC FUNCTION TablePatam(...)
...
oTsb:bInit := {|ob| ob:Hide() }

oTsb:bAfter := {|ob|
...

мелькания будет меньше

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