| Автор | Сообщение |
|
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно  ).
|
 |

|
|
Ответов - 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.
|
 |

|
|
|
| moderator
|
Пост N: 2488
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.09.25 12:07. Заголовок: SergKis пишет: Може..
SergKis пишет: | цитата: | Может вместо STATIC PROCEDURE AddIfUnique( aList, cName ) сделать |
| Да, конечно. Благодарю за предложение 
|
 |

|
|
|
| постоянный участник
|
Пост N: 4799
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.09.25 12:12. Заголовок: и еще добавить в h_d..
и еще добавить в h_dbf_aux *-----------------------------------------------------------------------------* FUNCTION HMG_ConvertType( uVal, cTypeDst ) *-----------------------------------------------------------------------------* RETURN ConvertType( uVal, cTypeDst )
|
 |

|
|
|
| постоянный участник
|
Пост N: 4800
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.09.25 12:33. Заголовок: gfilatov2002 На ftp..
gfilatov2002 На ftp положил предложение, комментарий в demo.prg
|
 |

|
|
|
| постоянный участник
|
Пост 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("..."), например
|
 |

|
|
|
| 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 |
| Благодарю за предложение 
|
 |

|
|
|
| постоянный участник
|
Пост 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!
|
 |

|
|
|
| moderator
|
Пост N: 2490
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.09.25 18:02. Заголовок: SergKis пишет: Это ..
SergKis пишет: Понял, спасибо за разъяснение. 
|
 |

|
|
|
| постоянный участник
|
Пост N: 4803
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.09.25 23:52. Заголовок: gfilatov2002 Внес и..
gfilatov2002 Внес изменения в hmg 25.09 (ранее на ftp давал, сейчас свежие), положил на ftp, MDI пока не трогал В demo.prg варианты использования. Default Arg1 := _HMG_ThisFormName сделал
|
 |

|
|
|
| постоянный участник
|
Пост N: 4804
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.09.25 19:39. Заголовок: gfilatov2002 Положи..
gfilatov2002 Положил расширенный вариант примера на ftp
|
 |

|
|
|
| moderator
|
Пост N: 2491
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.09.25 22:25. Заголовок: SergKis пишет: Поло..
SergKis пишет: | цитата: | | Положил расширенный вариант примера |
| OK 
|
 |

|
|
|
|
|
| постоянный участник
|
Пост 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) } ; ...
|
 |

|
|
|
| moderator
|
Пост N: 2492
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.09.25 09:16. Заголовок: SergKis пишет: Пред..
SergKis пишет: Принято. Благодарю за помощь 
|
 |

|
|
|
| постоянный участник
|
Пост N: 8042
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.09.25 10:59. Заголовок: Andrey пишет: Верси..
Andrey пишет: | цитата: | Версия МиниГуи 25.06Pro MsgDebug() портит текущий АЛИАС базы !!! |
| Разобрался с такой ошибкой ! Если в ТСБ назначить клавиши F3, F4, ... на не существующие события на окне, то происходит такая фигня. Лечится только перепроверкой своего кода. 
|
 |

|
|
|
| постоянный участник
|
Пост N: 4806
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.09.25 19:31. Заголовок: gfilatov2002 Положил..
gfilatov2002 Положил на ftp вариант и для MDI с примерами
|
 |

|
|
|
| постоянный участник
|
Пост 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
|
 |

|
|
|
| постоянный участник
|
Пост 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 ...
|
 |

|
|
|
| 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 |
| Теперь можно управлять этой функцией с помощью установки отладочного режима в приложении:
|
 |

|
|
|
| постоянный участник
|
Пост N: 4809
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.09.25 17:43. Заголовок: gfilatov2002 пишет A..
gfilatov2002 пишет Это немного не то. Если на окне ~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 ... вполне читаемо
|
 |

|
|
|
| moderator
|
Пост N: 2494
Зарегистрирован: 11.02.10
|
|
Отправлено: 20.09.25 17:57. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: | цитата: | | можно управлять этой функцией с помощью установки отладочного режима |
| Видимо, я высказался непонятно. Теперь в отлаженной программе НЕ будет такой проверки. Если потребуется делать такую проверку, то это возможно в режиме отладки, который включается с помощью вызова
|
 |

|
|
Ответов - 129
, стр:
1
2
3
4
5
6
7
All
[только новые]
|
|