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 
Профиль
Новых ответов нет , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [см. все]


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




Пост N: 3878
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.09.21 17:26. Заголовок: gfilatov2002 Предла..


gfilatov2002
Предлагаю в GetBox для valid исп. вызов со средой This. контрола, т.е.
 
FUNCTION OGETEVENTS( hWnd, nMsg, wParam, lParam )
...
CASE nMsg == WM_INVALID
...
//IF ! Eval( oGet:postblock, oGet )
IF ! Do_ControlEventProcedure ( oGet:postblock, __mvGet( oGet:name ), oGet )
// valid
SetFocus( hWnd )
...

Пример тут Скрытый текст


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




Пост N: 7055
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.09.21 18:06. Заголовок: SergKis пишет: Func..


SergKis пишет:

 цитата:
Function mySearchString()


Функцию исправить ! Уже есть правильная у Григория.

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




Пост N: 3879
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.09.21 19:32. Заголовок: Andrey пишет Уже ест..


Andrey пишет
 цитата:
Уже есть правильная у Григория.


Тут другое, блок кода на valid запускается сейчас по Eval(...), что со средой This, неопределенно
предлагаю ... (см. выше). Тогда This среда будет для текущего GETBOX.
В примере, что у тебя ThisWindow.Name попадаем на окно GetBox, но можем и промахнуться, а This.Name им GetBox нет, есть опять имя окна.

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




Пост N: 1930
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.09.21 20:53. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предлагаю в GetBox для valid исп. вызов со средой This. контрола


Принято
Благодарю за помощь

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




Пост N: 3881
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.09.21 13:53. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправил в примере выше bValid(), выделил цветом.
Позволяет тогда без смены времени (в пределах времени tooltip) управлять длительностью сообщения ShowGetValid, т.е. нажав клавишу или клик мышой на getbox (InkeyGui сработает), переключится фокус и сообщение уйдет, потом возвращаем фокус на getbox или сообщение будет держаться пока время InkeyGui не кончится

PS
ShowGetValid имеет 6 вариантов image E,e,I,i,W,w, т.е. тут
ShowGetValid( hGet, This.Name+": Задайте правильно значение времени ! ", 'ОШИБКА '+ThisWindow.Name, 'E' )
Можно использовать CRLF и chr(9) в тексте
ShowGetValid( hGet, This.Name+": Text 1 !"+CRLF+"Text 2"+chr(9)+"ku-ku", 'ИНФОРМАЦИЯ '+ThisWindow.Name, 'i' )

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




Пост N: 1931
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.09.21 14:26. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправил в примере выше bValid()


Спасибо, теперь работает хорошо

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


Пост N: 1708
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 14.09.21 19:42. Заголовок: Andrey пишет: Уже е..


Andrey пишет:

 цитата:
Уже есть правильная у Григория


Судя по RC2 - пока нету..

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


Пост N: 1709
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.09.21 14:36. Заголовок: Предложения по измен..


Предложения по изменению c_datepicker.c


Скрытый текст


Что нового

Добавлена функция GetDatePickDate()
GetDatePickDate( c ) == hb_Date( GetDatePickYear ( c ), GetDatePickMonth ( c ), GetDatePickDay ( c ) )

SetDatePick в качестве второго аргумента может получать тип Date
SetDatePick(c, Date())

dtp_SetDatetime в качестве второго аргумента может получать тип Date, тогда она работает как SetDatePick()
dtp_SetDatetime(c, Date())

Улучшена совместимость с xHarbour

Также теперь функции SetDatePick(), SetTimePick(), dtp_SetDatetime() в зависимости от того успешно или нет они отработали,
возвращают соответственно .T. или .F.

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




Пост N: 1932
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.09.21 15:14. Заголовок: Петр пишет: Предлож..


Петр пишет:

 цитата:
Предложения по изменению c_datepicker.c


Узнаю руку мастера
Благодарю за помощь

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




Пост N: 1934
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.09.21 10:07. Заголовок: Всем кому это интересно


Опубликована свежая сборка 21.09

Благодарю за помощь Сергея Киселева, Игоря Назарова и Петра Черного

Друзья, без Вашей помощи этот релиз не состоялся бы...

P.S. Обновил также Unicode архив.

P.S. 2 Желаю всем мира и добра

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




Пост N: 3882
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 14:26. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно ссылочку на Unicode архив, старая погибла.

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




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


SergKis пишет:

 цитата:
ссылочку на Unicode архив


Отправил в личку

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




Пост N: 3883
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 16:14. Заголовок: gfilatov2002 Спасибо..


gfilatov2002
Спасибо

PS
Может есть смысл перевести Public &mVar и __mv... ф-ии на аналог _SetGetGlobal(), что то такое
STATIC _HMG_PUBLIC
FUNC _SetGetPublic(...)
...
смотрел на эту тему исходники и файлы ch, должно получиться (окна и контролы, по формируемым именам, вроде укладываются в схему)

В ф-ии _SetGetGlobal() можно убрать
 
IF ISCHAR( cVarName )
cVarName := Upper( cVarName )
ENDIF
т.к. параметр имя проходит через метод :Upp() в нем такое делается, т.к. в :New( lUpper := .T.)


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




Пост N: 1936
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.09.21 16:38. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может есть смысл перевести Public &mVar и __mv... ф-ии на аналог _SetGetGlobal(), что то такое
STATIC _HMG_PUBLIC
FUNC _SetGetPublic(...)
...


Я не против, жду ваших предложений
Но смогу ответить/рассмотреть уже только после отпуска, ухожу на две недели

SergKis пишет:

 цитата:
В ф-ии _SetGetGlobal() можно убрать


Убрал, конечно
Благодарю за помощь

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


Пост N: 1710
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.09.21 20:19. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может есть смысл перевести Public &mVar и __mv... ф-ии на аналог _SetGetGlobal()


И в чем будет ожидаемый профит ?

Убытки в виде потери совместимости и падения производительности - это понятно.

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




Пост N: 3884
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 21:43. Заголовок: Петр пишет Убытки в ..


Петр пишет
 цитата:
Убытки в виде падения производительности


Почему ?
Для public таблица описаний, если не ошибаюсь массив структуированный, а тут Hash

 цитата:
Убытки в виде потери совместимости


Где то нет Hash ?
Сейчас он внутри hmg используется в getbox, TsBrowse, может еще где

 цитата:
И в чем будет ожидаемый профит ?


Уйти на STATIC

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


Пост N: 1711
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.09.21 22:09. Заголовок: SergKis пишет: Где ..


SergKis пишет:

 цитата:
Где то нет Hash ?
Сейчас он внутри hmg используется в getbox, TsBrowse


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

SergKis пишет:

 цитата:
Уйти на STATIC


Что это даст?

Мне никогда не нравилась "внутренняя" реализация MiniGUI, но по крайней мере она существует не один год в именно в таком виде, как её реализовал Роберто Лопез. У нее есть недостатки, но есть и какая-то концепция. Вот новую концепцию хотелось бы и услышать.

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




Пост N: 3885
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 22:29. Заголовок: Петр пишет Вот новую..


Петр пишет
 цитата:
Вот новую концепцию хотелось бы и услышать.


Как то не собирался концепции разводить. Хочется просто уменьшить ко-во Public переменных в динамической памяти. При всем уважении к реализации сборщика мусора (он хорошо работает), но потери адресов public переменных происходят, так же как это было и VO (Access violation).

 цитата:
как будто в getbox без Hash обойтись не было возможности.


Можно, но с hash удобнее и код проще.

 цитата:
Старый код с ухищрениями в виде прямого доступа к публичным переменным перестанет работать


Вот потому и спросил "Может ...", т.к. пока не встречал примеров на эту тему. Не знаю кто будет организовывать прямой доступ к переменной окна или к переменной контрола для хранения индекса (речь идет только о них), т.е.
 
mVar := '_' + ParentFormName + '_' + ControlName
k := _GetControlFree()
Public &mVar. := k
или
mVar := '_' + FormName
k := AScan ( _HMG_aFormDeleted, .T. )
Public &mVar. := k
и
*-----------------------------------------------------------------------------*
FUNCTION GetControlIndex ( ControlName , ParentForm )
*-----------------------------------------------------------------------------*
LOCAL mVar := '_' + ParentForm + '_' + ControlName

RETURN __mvGetDef ( mVar , 0 )


 цитата:
по крайней мере она существует не один год в именно в таком виде, как её реализовал Роберто Лопез


Огромное САСИБО ему за это, но времени уже много прошло, жизнь идет дальше, возможно и тут надо что то менять

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


Пост N: 1712
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 17.09.21 23:09. Заголовок: SergKis пишет: но п..


SergKis пишет:

 цитата:
но потери адресов public переменных происходят


Мне понравился подход Андрея: запретить пользователям пить кофе (курить, есть, пить, спать.. ). Это лучше чем разбираться в причинах падений программы.

SergKis пишет:

 цитата:
Как то не собирался концепции разводить.


Ну ладно.
А как будет выглядеть такой вот код с использованием Hash

_HMG_ActiveFormName := IF( Empty( _HMG_ActiveFormName ), 'Form_1', _HMG_ActiveFormName )
_HMG_BeginWindowActive := .T.
ну или после препроцессора
_HMG_SYSDATA[33] := IF( Empty( _HMG_SYSDATA[33] ), "Form_1", _HMG_SYSDATA[33] )
_HMG_SYSDATA[34] := .T.

без потери производительности и с соблюдением безопасности при mt.

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




Пост N: 3886
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.21 23:33. Заголовок: Петр пишет А как буд..


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


Так и будет выглядеть, эти define не трогаем, речь идет о ф-ях __mv...
__mvPublic, __mvGet, __mvPut, ... причем для ограниченного применения ТОЛЬКО для переменных от имен form и контрола, которые динамически формируются в момент создания DEFINE ... что то. Это строки
 
mVar := '_' + ParentFormName + '_' + ControlName
k := _GetControlFree()
Public &mVar. := k
или
mVar := '_' + FormName
k := AScan ( _HMG_aFormDeleted, .T. )
Public &mVar. := k
и
*-----------------------------------------------------------------------------*
FUNCTION GetControlIndex ( ControlName , ParentForm )
*-----------------------------------------------------------------------------*
LOCAL mVar := '_' + ParentForm + '_' + ControlName

RETURN __mvGetDef ( mVar , 0 )

тут hash просто напрашивается, по мне

 цитата:
Мне понравился подход Андрея: запретить пользователям пить кофе


Так он и не запрещает. По моей рекомендации убирает из блока кода внешнюю для него public переменную и переводит на внутреннюю полученную через параметр и это место работает. Просто мест, сделанных от стандартного подхода от MiniGui, у него много, вот они начинают сыпаться со временем нарастания программы

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