On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
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 
Профиль
Ответов - 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 так же положил архив

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




Пост N: 2444
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.05.25 10:08. Заголовок: SergKis пишет: на f..


SergKis пишет:

 цитата:
на ftp так же положил архив


Забрал...

SergKis пишет:

 цитата:
правка _TBrowse(...)


Принято с благодарностью

SergKis пишет:

 цитата:
новые demo4., demo5.prg


Как всегда, просто и лаконично Одним словом - профессионально!

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




Пост N: 4738
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.05.25 17:12. Заголовок: gfilatov2002 Положи..


gfilatov2002
Положил на ftp demo6, добавил немного дизайна и показ удаленных записей

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




Пост N: 2445
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.05.25 21:22. Заголовок: SergKis пишет: доба..


SergKis пишет:

 цитата:
добавил немного дизайна и показ удаленных записей


Спасибо

Спасибо: 0 
Профиль
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)

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




Пост N: 2446
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.05.25 12:13. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправьте в demo7.prg


OK

Спасибо: 0 
Профиль
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 <<<---------- окно не закрывается
------------

Куда копать ?

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




Пост N: 4740
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.05.25 18:26. Заголовок: Andrey пишет Куда ко..


Andrey пишет
 цитата:
Куда копать ?


Надо понимать, как это работает, ставя в ON RELEASE ... ?v HMG_GetForms() окно еще есть, т.к. RELEASE НЕ закончил работу работает блок кода заданный, т.е. твой

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




Пост N: 7994
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.05.25 21:39. Заголовок: SergKis пишет: Надо..


SergKis пишет:

 цитата:
Надо понимать, как это работает, ставя в ON RELEASE ... ?v HMG_GetForms() окно еще есть, т.к. RELEASE НЕ закончил работу работает блок кода заданный, т.е. твой


Там минимум кода. В других местах работает этот код.
А в этом коде на этом и ВИСИТ програ, значит не завершается...
Почему не завершается, что мешает ???
Хочу понять что неправильно делаю.

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




Пост N: 4741
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.05.25 03:16. Заголовок: gfilatov2002 Положи..


gfilatov2002
Положил на ftp пример по вопросу Андрея "ВИСИТ програ" + readme.txt

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




Пост N: 2447
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.05.25 12:58. Заголовок: SergKis пишет: прим..


SergKis пишет:

 цитата:
пример по вопросу Андрея "ВИСИТ програ" + readme.txt


Благодарю за пример и пояснения к нему.
Поправил код библиотеки для возврата фокуса на модальное окно из функции AlertInfo().
Убрал из примера строку EnableWindow( ky := ow:Handle ), и он отработал нормально.
Благодарю за помощь!

Спасибо: 0 
Профиль
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
} )

Надо проверить возврат в модальном окне
Пример могу выслать, если нужно.

Спасибо: 0 
Профиль
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

Спасибо: 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, если статусбара нет на форме.

Спасибо: 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 ) )



Спасибо: 0 
Профиль
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 )



Спасибо: 0 
Профиль
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

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




Пост N: 2450
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.06.25 17:17. Заголовок: SergKis пишет: Для ..


SergKis пишет:

 цитата:
Для этого надо получать объект контрола


Понял.
Тогда, вероятно, имеет смысл вернутся к первому предложению.

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




Пост N: 7998
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.06.25 15:32. Заголовок: Ещё небольшое предло..


Ещё небольшое предложение.
Имеем такой синтаксис: This.&(cn).Enabled := .T.
Если писать по другому, то такой - ow:Enabler(cn, .T.)
Иногда ошибаешься и пишешь так - ow:Enabled(cn, .T.)
Можно в препроцессоре добавить замену для такого случая ?

Спасибо: 0 
Профиль
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.

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