| Автор | Сообщение |
|
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; - новые и обновленные старые примеры (как обычно  ).
|
 |
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4737
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.05.25 20:12. Заголовок: gfilatov2002 Предло..
gfilatov2002 Предложение\правка _TBrowse(...), h_controlmisc2.prg в примерах (новые demo4., demo5.prg) https://TransFiles.ru/75j4e на ftp так же положил архив
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2444
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.05.25 10:08. Заголовок: SergKis пишет: на f..
SergKis пишет: | цитата: | | на ftp так же положил архив |
| Забрал... SergKis пишет: Принято с благодарностью SergKis пишет: Как всегда, просто и лаконично  Одним словом - профессионально!
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4738
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.05.25 17:12. Заголовок: gfilatov2002 Положи..
gfilatov2002 Положил на ftp demo6, добавил немного дизайна и показ удаленных записей
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2445
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.05.25 21:22. Заголовок: SergKis пишет: доба..
SergKis пишет: | цитата: | | добавил немного дизайна и показ удаленных записей |
| Спасибо 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4739
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.05.25 11:49. Заголовок: gfilatov2002 Поправ..
gfilatov2002 Поправьте в demo7.prg MAIN NOSIZE TOPMOST ; ON INIT _wPost( 0) ; ON RELEASE _wSend(90) _wPost(90) в примере будет тоже нормально работать, т.к. событие быстрое, но правильнее писать всегда _wSend(90)
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2446
Зарегистрирован: 11.02.10
|
|
Отправлено: 28.05.25 12:13. Заголовок: SergKis пишет: Попр..
SergKis пишет: OK 
|
 |
|
|
Andrey
|
| постоянный участник
|
Пост N: 7993
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.05.25 17:50. Заголовок: Не работает закрытие..
Может в маленьких прогах это работает, но на больших - НЕ работает закрытие окна, прога тупо ВЕШАЕТСЯ !!! IF !Empty( _HMG_MainHandle ) ; _HMG_InplaceParentHandle := GetActiveWindow() ENDIF DEFINE WINDOW &cForm .... ; MODAL NOSIZE ; ON INIT _wPost( 0) ; ON RELEASE _wSend(98) ... :Event(98, {|ow,ky,cn| // ON Release Local ah := ow:Cargo:ahIcoDel ? ProcNL() ?? "---[ "+ow:Name+":Event("+hb_ntos(ky)+") ]---",cn ? Repl(".", 5), "=> RELEASE WINDOW <=", ow:Name ? Repl(".", 5),"Delete handle icon - ow:Cargo:ahIcoDel=" ?? ah, HB_ValToExp(ah) IF IsArray(ah) AEval(ah, {|h| DestroyIcon(h) }) // удалить хендлы иконок ENDIF (ow:Cargo:cAls)->( dbCloseArea() ) DbSelectArea(ow:Cargo:cAlsParent) // база с родительского окна ? Repl(".", 5),"Alias()=", ALIAS() ?v HMG_GetForms() ? "------------" Return Nil } ) Вот что в логе: ..... => RELEASE WINDOW <= FORM_ZAIVKA_F7Filter ..... Delete handle icon - ow:Cargo:ahIcoDel= ARRAY[1] {2949589} ..... Alias()= ZAIVKA 1 Form_Main 2 FORM_ZAIVKA 3 FORM_ZAIVKA_F7Filter <<<---------- окно не закрывается ------------ Куда копать ? 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4740
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.05.25 18:26. Заголовок: Andrey пишет Куда ко..
Andrey пишет Надо понимать, как это работает, ставя в ON RELEASE ... ?v HMG_GetForms() окно еще есть, т.к. RELEASE НЕ закончил работу  работает блок кода заданный, т.е. твой
|
 |
|
|
Andrey
|
| постоянный участник
|
Пост N: 7994
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.05.25 21:39. Заголовок: SergKis пишет: Надо..
SergKis пишет: | цитата: | Надо понимать, как это работает, ставя в ON RELEASE ... ?v HMG_GetForms() окно еще есть, т.к. RELEASE НЕ закончил работу работает блок кода заданный, т.е. твой |
| Там минимум кода. В других местах работает этот код. А в этом коде на этом и ВИСИТ програ, значит не завершается... Почему не завершается, что мешает ??? Хочу понять что неправильно делаю.
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4741
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.05.25 03:16. Заголовок: gfilatov2002 Положи..
gfilatov2002 Положил на ftp пример по вопросу Андрея "ВИСИТ програ" + readme.txt
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2447
Зарегистрирован: 11.02.10
|
|
Отправлено: 31.05.25 12:58. Заголовок: SergKis пишет: прим..
SergKis пишет: | цитата: | | пример по вопросу Андрея "ВИСИТ програ" + readme.txt |
| Благодарю за пример и пояснения к нему. Поправил код библиотеки для возврата фокуса на модальное окно из функции AlertInfo(). Убрал из примера строку EnableWindow( ky := ow:Handle ), и он отработал нормально. Благодарю за помощь!
|
 |
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 7996
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.05.25 15:58. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: | цитата: | | Поправил код библиотеки для возврата фокуса на модальное окно из функции AlertInfo(). |
| У меня нет в коде вызова Alert*(), но прога всё равно вешается ДАЖЕ просто при выходе из окна. Но при добавлении 4 строк - перестаёт вешаться: // --------- работает !!! :Event({88,"_F7Cancel"}, {|ow,ky,cn| //Отмена ?? "---[ "+ow:Name+":Event("+hb_ntos(ky)+") ]---",cn App.Cargo:aRetFltr := {} // ОБЯЗАТЕЛЬНО ! добавка для возврата на родит.окно EnableWindow( ky := ow:Handle ) ow:Enabler(cn, .T.) ow:SetFocus(ow:Cargo:cFocus) DO EVENTS // ОБЯЗАТЕЛЬНО ! добавка для возврата на родит.окно _wSend(99, ow:Name) //ThisWindow.Release Return Nil } ) Надо проверить возврат в модальном окне Пример могу выслать, если нужно.
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4743
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.06.25 10:41. Заголовок: gfilatov2002 Может ..
gfilatov2002 Может стоит добавить в GetProperty(...) получение height, width или 0 для StatusBar, без исп. _IsControlDefined(...), для вычисления клиентской области окна ? nH := This.ClientHeight - This.SplitBox.Height - This.StatusBar.Height IF ( Upper( Arg2 ) == "VSCROLLBAR" .OR. Upper( Arg2 ) == "HSCROLLBAR" ) IF .NOT. _IsWindowDefined ( Arg1 ) MsgMiniGuiError ( "Window: " + Arg1 + " is not defined." ) ENDIF ELSEIF Upper( Arg2 ) == "SPLITBOX" IF ( ix := GetFormIndex ( Arg1 ) ) > 0 .AND. IsWindowHandle ( Arg8 := _HMG_aFormReBarHandle [ix] ) IF Arg3 == "WIDTH" RETURN GetWindowWidth ( Arg8 ) ELSEIF Arg3 == "HEIGHT" RETURN GetWindowHeight ( Arg8 ) ENDIF ENDIF ELSEIF Upper( Arg2 ) == "STATUSBAR" .and. ( Arg3 == "WIDTH" .or. Arg3 == "HEIGHT" ) RetVal := 0 IF ( ix := GetControlIndex( Arg2, Arg1 ) ) > 0 IF Arg3 == "HEIGHT" RetVal := _HMG_aControlHeight[ ix ] ELSEIF Arg3 == "WIDTH" RetVal := _HMG_aControlWidth [ ix ] ENDIF ENDIF RETURN RetVal ELSE VerifyControlDefined ( Arg1 , Arg2 ) ENDIF PS. По мне, это многое упростило бы, все запросы на width, height к контролам\окнам, если их нет, возвращали бы 0
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2448
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.06.25 14:39. Заголовок: SergKis пишет: Може..
SergKis пишет: | цитата: | | Может стоит добавить в GetProperty(...) получение height, width или 0 для StatusBar |
| Благодарю за предложение, но уже сейчас это возможно, если напрямую использовать вызов этой функции | цитата: | | _getcontrolHeight("STATUSBAR","Form_1") |
| Она вернет 0, если статусбара нет на форме.
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4744
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.06.25 15:07. Заголовок: Тогда, может быть, н..
Тогда, может быть, надо выделить в i_this.ch из общего списка #xtranslate This . <c> . <p:Width> => _GetControlWidth ( <(c)>, _HMG_THISFORMNAME ) #xtranslate This . <c> . <p:Height> => _GetControlHeight ( <(c)>, _HMG_THISFORMNAME ) и в h_objects.prg CLASS TWndData добавить METHOD Enabler( cName, xVal ) INLINE SetProperty( ::cName, cName, "Enabled", ! Empty( xVal ) ) METHOD GetWidth ( cName ) INLINE iif( Empty( cName ), ::Width , _GetControlWidth ( cName, ::cName ) ) METHOD GetHeight( cName ) INLINE iif( Empty( cName ), ::Height, _GetControlHeight( cName, ::cName ) ) METHOD GetRow( cName ) INLINE iif( Empty( cName ), ::Row, _GetControlRow ( cName, ::cName ) ) METHOD GetCol( cName ) INLINE iif( Empty( cName ), ::Col, _GetControlCol ( cName, ::cName ) )
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2449
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.06.25 16:40. Заголовок: SergKis пишет: в h_..
SergKis пишет: | цитата: | | в h_objects.prg CLASS TWndData добавить |
| Но ведь в классе TCnlData (наследнике TWndData) уже есть эти определения | цитата: | ACCESS Row INLINE _GetControlRow ( ::cName, ::oWin:Name ) ... ACCESS Col INLINE _GetControlCol ( ::cName, ::oWin:Name ) ... ACCESS Width INLINE _GetControlWidth ( ::cName, ::oWin:Name ) ... ACCESS Height INLINE _GetControlHeight( ::cName, ::oWin:Name ) |
| 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4745
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.06.25 16:51. Заголовок: gfilatov2002 пишет в..
gfilatov2002 пишет | цитата: | | в классе TCnlData (наследнике TWndData) уже есть эти определения |
| Для этого надо получать объект контрола, т.е. ( This.&(cn).Object ):Height и ..., если в событии This окна, то проще использовать переменную ow {|ow,ky,cn| _LogFile(.T., ky, ow:GetHeight(cn)) } если в событии This контрола, то тогда конечно {|obtn| _LogFile(.T., obtn:Height)} но можно обойтись, конечно и This.&(cn).Height
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2450
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.06.25 17:17. Заголовок: SergKis пишет: Для ..
SergKis пишет: | цитата: | | Для этого надо получать объект контрола |
| Понял. Тогда, вероятно, имеет смысл вернутся к первому предложению. 
|
 |
|
|
Andrey
|
| постоянный участник
|
Пост N: 7998
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.06.25 15:32. Заголовок: Ещё небольшое предло..
Ещё небольшое предложение. Имеем такой синтаксис: This.&(cn).Enabled := .T. Если писать по другому, то такой - ow:Enabler(cn, .T.) Иногда ошибаешься и пишешь так - ow:Enabl ed(cn, .T.) Можно в препроцессоре добавить замену для такого случая ? 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4747
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.06.25 16:52. Заголовок: Andrey Имя Enabled у..
Andrey Имя Enabled уже занято, см. CLASS TWndDatat ACCESS Enabled INLINE IsWindowEnabled ( ::nHandle ) ASSIGN Enabled( xVal ) INLINE iif( Empty( xVal ), DisableWindow ( ::nHandle ), EnableWindow ( ::nHandle ) ) т.е. используем для состояния окна ow:Enabled := .F. ... ow:Enabled := .T.
|
 |
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|