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




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


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




Пост 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 
ПрофильЦитата Ответить
постоянный участник




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


SergKis пишет:

 цитата:
Function mySearchString()


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

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




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


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


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

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




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


SergKis пишет:

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


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

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




Пост 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 
ПрофильЦитата Ответить
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 
ПрофильЦитата Ответить
moderator




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


Петр пишет:

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


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

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




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


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

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

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

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

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

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




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


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

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




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


SergKis пишет:

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


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

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




Пост 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 
ПрофильЦитата Ответить
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 
ПрофильЦитата Ответить
постоянный участник




Пост 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 
ПрофильЦитата Ответить
постоянный участник




Пост 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 
ПрофильЦитата Ответить
постоянный участник




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

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