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




Пост 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 
ПрофильЦитата Ответить
Ответов - 215 , стр: 1 2 3 4 5 6 7 8 9 10 11 All [только новые]


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




Пост N: 4901
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.07.26 16:13. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение убрать в HMG_Alert(...) все команды для Cargo окна, т.е.
 
#ifdef _OBJECT_
This.Cargo:...
#endif

т.к. это не имеет большого смысла, по мне

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




Пост N: 8200
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.07.26 20:07. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выложил обновление 1 для сборки 26.07


А функция HB_FUNC( GETWINDOWRECT ) заменена на новую, которую мне присылали ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2064
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 25.07.26 15:20. Заголовок: Andrey пишет: А фун..


Andrey пишет:

 цитата:
А функция HB_FUNC( GETWINDOWRECT ) заменена на новую,


Стесняюсь спросить , а что в трех строчках исходника может быть нового? Много где используется эта функция в проектах и чего теперь ожидать ? Сюрпризов не предвидится?

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




Пост N: 8201
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.07.26 00:46. Заголовок: Haz пишет: Стесняю..


Haz пишет:

 цитата:

Стесняюсь спросить , а что в трех строчках исходника может быть нового?


В версии 26.03 Про которую я использовал без новой функции,
у меня прога стабильно падала 4-5 раз за день на этой функции.
После замены на новую, которую дал мне Григорий, прога перестала падать.
Вот и спрашивал Григория про новую версию - изменена ли там эта функция.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2065
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.07.26 09:58. Заголовок: Andrey пишет: прога..


Andrey пишет:

 цитата:
прога стабильно падала 4-5 раз за день на этой функции.


Помнится падала на параметре hWnd равном 0
Вот и хотелось бы понять в чем лекарство. Думаю это либо несоответствие типа указателя на структуру hWnd (long вместо long long для w64) или простая проверка на 0. Больше там падать не на чем. Если первое это исправление бага, то второе точно не фича😂, т.к. маскирует ошибку с непредсказуемым результатом.

Пысы. Глянул трассировку по той ошибке в соседней ветке, так и есть в getwindowrect передано 2 параметра, первый 0, второй 3.
Вот на первом и вылет. Исправлять надо до вызова getwindowrect, разбираться почему 0 прилетает. Что сделано сейчас в getwindowrect не знаю, но предполагаю что возможно это проверка
if valtype(hWnd) <> "p" ...
if hWnd >0

getwindowrect простая API функция , в классике возвращает { left, top, width, height} в minigui добавили второй параметр , по сути это индекс массива
, кому-то удобнее, по мне одинаково что getwindowrect(hWnd, 3), что getwindowrect (hWnd) [3] , разве что проверку на диапазон 1-4 можно сделать.. Совместимость обеспечивается и хорошо.
Красивее и читаемее объектная нотация , например
oWnd:Getwindowrect():top, что в принципе реализуемо легко в mg
При этом нужно помнить про "интерфейсные рамки" окон начиная с vista в несколько пикселей под тени , и getwindowrect возвращает координаты по внешнему контуру этих рамок. Movewindow тоже в них работает.

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




Пост N: 8202
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.07.26 07:08. Заголовок: Haz пишет: Исправля..


Haz пишет:

 цитата:
Исправлять надо до вызова getwindowrect, разбираться почему 0 прилетает.


По коду у меня так:
      oBrw:Reset()       <<<--------------------  MAINCARDTABLE(4173) 
или
oBrw:DrawFooters() <<<<----------- MYINITFORMTABLE(1058) in module: Source\Tbrw_table.prg

Т.е. нахожусть в ТСБ, открываю карточку по одной записи,
потом закрываю карточку и делаю по ТСБ oBrw:Reset(), далее вылет.
Какую трассировку поставить перед этими командами ?
Может нужно как то переключиться заново на ТСБ ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2066
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.07.26 09:31. Заголовок: И... После каждой ка..


И... После каждой карточки выдаёт?
Вопросы
Зачем reset() ? Меняется количество строк в obrw после карточки ?
Вместо карточки нейтральное окно. Например alert , не п приводит к вылету?
Переменные изолированы в карточке? Объекты и массивы передаются по ссылке и из легко попортить в функции

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




Пост N: 8203
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.07.26 18:11. Заголовок: Haz пишет: После ка..


Haz пишет:

 цитата:
После каждой карточки выдаёт?


Нет, может 4-5 раз пройти нормально, а потом юзер что-то нажимает и вылет.
У меня ни разу не вылетала 10-15 раз делал.

Зачем reset() ? Меняется количество строк в obrw после карточки ? - ДА
На остальные вопросы тоже ДА

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2067
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.07.26 19:05. Заголовок: Andrey пишет: потом..


Andrey пишет:

 цитата:
потом юзер что-то нажимает и вылет.
У меня ни разу не вылетала 10-15 раз делал.


Ищи где hWnd обнуляется , для начала переименуй во что то уникальное. Например hWnd_Brw1
По ошибке поймёшь где пересечение переменных. Скорее всего проблема именно в пересечении public private

Возможно в карточке как то затрагиваешь oBrw:hWnd, т.к валится на :reset() , очень похоже на что именно этот хендл уничтожен.

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




Пост N: 8204
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.07.26 21:19. Заголовок: Haz пишет: Возможно..


Haz пишет:

 цитата:
Возможно в карточке как то затрагиваешь oBrw:hWnd, т.к валится на :reset() , очень похоже на что именно этот хендл уничтожен.


Ничего подобного - код работал очень давно БЕЗ ТАКИХ ОШИБОК !!!
Это после перехода на новые версии, после 25-26 года появились эти ошибки.
До этого сидел на версии 23.09.2 или 23.12.9

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2068
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 29.07.26 00:02. Заголовок: Andrey пишет: код р..


Andrey пишет:

 цитата:
код работал очень давно


Первое , не факт что правильно работал, может новая версия строже к косякам.
Второе , что то я не припомню чтобы у кого то была такая устойчивая проблема , что про вылеты написана целая ветка., значит это субъективная проблема. Значит искать ошибку надо в коде.
Третье, лог ошибки говорит что в функцию сунули нулевой хендл. Можешь не верить и логу. Скинь "исправленную Getwindowrect ,
Там будет явно видна попытка купировать причину. Это кстати меня с самого начала интересует, когда спрашивал про сюрпризы.
В формате "Ничего подобного" тоже могу заявить - не вылетает и не вылетало на любой версии в этой функции вот уже более 20 лет.
Просто поспорить ниочем , это без меня тем более эта функция меня полностью устраивает своей простотой и стабильностью😉.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2552
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.07.26 09:44. Заголовок: Просто к сведению


Выложил обновление 2 для сборки 26.07

Что нового:
Скрытый текст

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

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2553
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.08.26 08:57. Заголовок: Выложил обновление 3..


Выложил обновление 3 для сборки 26.07

Что нового:
Скрытый текст

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

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




Пост N: 4903
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.08.26 07:52. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение по :FilterFTS(...), добавить символы для поиска более сложных фраз
 
METHOD FilterFTS( cFind, lUpper, lBottom, lFocus, lAll, cTokens )
METHOD FilterFTS_Line( cFind, lUpper, lAll, cTokens )

METHOD FilterFTS( cFind, lUpper, lBottom, lFocus, lAll, cTokens ) CLASS TSBrowse
...
DEFAULT lUpper := .T., lAll := .F., cTokens := "~` "
...
IF Left( cFind, 1 ) $ cTokens .AND. Len( cFind ) > 1
aFind := hb_ATokens( SubStr( cFind, 2 ), Left( cFind, 1 ) )
ELSE
...
IF ::lIsDbf
IF ! Empty( cFind )
( cAlias )->( dbSetFilter( {|| ob:FilterFTS_Line( cFind, lUpper, lAll, cTokens, ob ) }, ;
"ob:FilterFTS_Line( cFind, lUpper, lAll, cTokens, ob )" ) )
ELSE
...
METHOD FilterFTS_Line( cFind, lUpper, lAll, cTokens ) CLASS TSBrowse

LOCAL nCol, oCol, xVal, lRet := .F., aFind
DEFAULT lUpper := .T., lAll := .F., cTokens := "~` "

IF Left( cFind, 1 ) $ cTokens .and. Len( cFind ) > 1
aFind := hb_ATokens( substr( cFind, 2 ), Left( cFind, 1 ) )
ELSE
...


Спасибо: 0 
ПрофильЦитата Ответить
moderator




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


SergKis пишет:

 цитата:
добавить символы для поиска


OK
Спасибо!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 215 , стр: 1 2 3 4 5 6 7 8 9 10 11 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 61
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет