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


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




Пост N: 4798
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.09.25 12:01. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может вместо
STATIC PROCEDURE AddIfUnique( aList, cName )
сделать (полезная ф-я)
 
*-----------------------------------------------------------------------------*
FUNCTION HMG_AddIfUnique( aList, cName )
*-----------------------------------------------------------------------------*
IF ! Empty( cName ) .AND. AScan( aList, cName, , , .T. ) == 0
AAdd( aList, cName )
RETURN .T.
ENDIF

RETURN .F.


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




Пост N: 2488
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.09.25 12:07. Заголовок: SergKis пишет: Може..


SergKis пишет:

 цитата:
Может вместо
STATIC PROCEDURE AddIfUnique( aList, cName )
сделать


Да, конечно.
Благодарю за предложение

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




Пост N: 4799
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.09.25 12:12. Заголовок: и еще добавить в h_d..


и еще добавить в h_dbf_aux
*-----------------------------------------------------------------------------*
FUNCTION HMG_ConvertType( uVal, cTypeDst )
*-----------------------------------------------------------------------------*
RETURN ConvertType( uVal, cTypeDst )

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




Пост N: 4800
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.09.25 12:33. Заголовок: gfilatov2002 На ftp..


gfilatov2002
На ftp положил предложение, комментарий в demo.prg

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




Пост N: 4801
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.09.25 16:01. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно сделать в ф-ях:
SetProperty( Arg1 , ... )
GetProperty( Arg1 , ... )
DoMethod ( Arg1 , ... )
Default Arg1 := _HMG_ThisFormName
Для использования в блоках кода, получаемых b := &("{|| ... }"), т.к. имя тек. формы не известно - получается динамически от FormName := HMG_GetUniqueName("..."), например

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




Пост N: 2489
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.09.25 17:01. Заголовок: SergKis пишет: Defa..


SergKis пишет:

 цитата:
Default Arg1 := _HMG_ThisFormName


Думаю, это можно записать таким образом:

 цитата:

IF ! Empty( _HMG_ThisFormName )
Default Arg1 := _HMG_ThisFormName
ENDIF


Благодарю за предложение

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




Пост N: 4802
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.09.25 17:52. Заголовок: gfilatov2002 пишет I..


gfilatov2002 пишет
 цитата:
IF ! Empty( _HMG_ThisFormName )


Это не имеет смысла, т.к. пишем SetProperty(, ...), т.е. будет прерывание при Empty( _HMG_ThisFormName ) и не заданном Arg1, надо использовать SET WINDOW THIS TO ... до исп. SetProperty(, ...). использование в оконных событиях и при _wPost(...), _wSend(...) событиях все будет ok!

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




Пост N: 2490
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.09.25 18:02. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это не имеет смысла


Понял, спасибо за разъяснение.

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




Пост N: 4803
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.09.25 23:52. Заголовок: gfilatov2002 Внес и..


gfilatov2002
Внес изменения в hmg 25.09 (ранее на ftp давал, сейчас свежие), положил на ftp, MDI пока не трогал
В demo.prg варианты использования.
Default Arg1 := _HMG_ThisFormName сделал

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




Пост N: 4804
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.09.25 19:39. Заголовок: gfilatov2002 Положи..


gfilatov2002
Положил расширенный вариант примера на ftp

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




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


SergKis пишет:

 цитата:
Положил расширенный вариант примера


OK

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




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


gfilatov2002
Предложение добавить
 
SetProperty( Arg1 , ... )
...
Default Arg1 := _HMG_ThisFormName

IF PCount() > 3
Default Arg2 := _HMG_ThisControlName
ENDIF

...
GetProperty( Arg1 , ... )
DoMethod ( Arg1 , ... )
...
Default Arg1 := _HMG_ThisFormName

IF PCount() > 2
Default Arg2 := _HMG_ThisControlName
ENDIF

...
для вариантов
...
ON MOUSEHOVER {|| SetProperty(,, 'Backcolor', GetProperty(,, 'Cargo', aBtnBClr2)) , SetProperty(,, 'Fontcolor', GetProperty(,, 'Cargo', aBtnFClr2)) } ;
ON MOUSELEAVE {|| SetProperty(,, 'Backcolor', GetProperty(,, 'Cargo', aBClr)), SetProperty(,, 'Fontcolor', GetProperty(,, 'Cargo', aFClr) } ;
...


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




Пост N: 2492
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.09.25 09:16. Заголовок: SergKis пишет: Пред..


SergKis пишет:

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


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

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




Пост N: 8042
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.09.25 10:59. Заголовок: Andrey пишет: Верси..


Andrey пишет:

 цитата:
Версия МиниГуи 25.06Pro
MsgDebug() портит текущий АЛИАС базы !!!


Разобрался с такой ошибкой !
Если в ТСБ назначить клавиши F3, F4, ... на не существующие события на окне, то происходит такая фигня.
Лечится только перепроверкой своего кода.

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




Пост N: 4806
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.09.25 19:31. Заголовок: gfilatov2002 Положил..


gfilatov2002
Положил на ftp вариант и для MDI с примерами

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




Пост N: 4807
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.09.25 06:48. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение отключать VerifyControlDefined(), возникающая ошибка, достаточно, понятна и без доп. контроля
 
STATIC s_lVerifyControl := .T.
...
FUNCTION GetProperty ( Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 )
...
LOCAL cHeader, nAlignHeader, cFooter, nAlingFooter, nState

IF IsLogical( Arg1 ) ; RETURN s_lVerifyControl
ENDIF

Default Arg1 := _HMG_ThisFormName
...
PROCEDURE SetProperty( Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 , Arg8 )
...
LOCAL cMacro, cProc
#endif

IF IsLogical( Arg1 ) ; s_lVerifyControl := Arg1 ; RETURN
ENDIF

Default Arg1 := _HMG_ThisFormName
...
STATIC PROCEDURE VerifyControlDefined ( cParentName , cControlName )
*-----------------------------------------------------------------------------*

IF s_lVerifyControl .AND. ! Empty ( cControlName ) ;
.AND. ! _IsControlDefined ( cControlName , cParentName )
MsgMiniGuiError ( "Control: " + cControlName + " Of " + cParentName + " Not defined." )
ENDIF

RETURN


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




Пост N: 4808
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.09.25 08:03. Заголовок: PS. В готовом модул..


PS.
В готовом модуле, такая проверка не нужна (лишняя), в ini всегда можно иметь настройку
[COM]
...
lVerifyControl = .T. ; .T. - ON , .F. - OFF
...
и команду SetProperty(App.Cargo:oIni:COM:lVerifyControl) в INIT PROCEDURE ...

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




Пост N: 2493
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.09.25 15:34. Заголовок: SergKis пишет: В го..


SergKis пишет:

 цитата:
В готовом модуле, такая проверка не нужна (лишняя)


Переписал эту функцию таким образом:

 цитата:
 
*-----------------------------------------------------------------------------*
STATIC PROCEDURE VerifyControlDefined ( cParentName , cControlName )
*-----------------------------------------------------------------------------*

IF Set( _SET_DEBUG ) .AND. !Empty ( cControlName ) .AND. !_IsControlDefined ( cControlName , cParentName )
MsgMiniGuiError ( "Control: " + cControlName + " Of " + cParentName + " Not defined." )
ENDIF

RETURN


Теперь можно управлять этой функцией с помощью установки отладочного режима в приложении:

 цитата:
AltD( 1 )



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




Пост N: 4809
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.09.25 17:43. Заголовок: gfilatov2002 пишет A..


gfilatov2002 пишет
 цитата:
AltD(1)


Это немного не то. Если на окне ~50 LABEL+GETBOX, то будет поиск по списку контролов, как минимум, 2-а раза
1. VerifyControlDefined ( cParentName , cControlName )
2. Для запрошенного действия над контролом.
И это может быть не единственное окно и список контролов достаточно большой.
В отлаженной программе 1-ый пункт не нужен - лишний прогон поиска, по мне, это приобретение ф-ии не лучшее.
В версии hmg от 2012 года не было VerifyControlDefined (...) совсем и все OK!
сообщения будут ~ такими, достаточно однотипными, что для отлаженной программы (редкое срабатывание)
 
Error BASE/1132 Переполнение массива: Неверное количество аргументов
Args:
[1] = A { ... } length: 24
[2] = N 0


Called from _SETVALUE(287) in module: h_controlmisc.prg
Called from SETPROPERTY(4397) in module: h_controlmisc.prg
Called from (b)MAIN(124) in module: demo.prg
...

вполне читаемо

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




Пост N: 2494
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.09.25 17:57. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
можно управлять этой функцией с помощью установки отладочного режима


Видимо, я высказался непонятно.
Теперь в отлаженной программе НЕ будет такой проверки.
Если потребуется делать такую проверку, то это возможно в режиме отладки, который включается с помощью вызова

 цитата:
AltD(1)



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

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