Автор | Сообщение |
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: 2189
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.02.19 08:12. Заголовок: PPS ON DBLCLICK (Thi..
PPS ON DBLCLICK (ThisWindow.Object):Post(12, This.Text_8.Index) ; //DublClick2Get() ; Такая форма записи, а не This.Index, исп. по причине отсутствия инф. о контроле, т.к. блок кода выполняется в TGET. Переданный индекс контрола, в событии создает среду This для указанного контрола. Если не передавать индекс, то среда This будет только для окна
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2190
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.02.19 15:35. Заголовок: gfilatov2002 можно ..
gfilatov2002 можно зарезервировать для исп. в событиях о Петра MESSAGEONLY _App_Wnd_App_ EVENTS _App_Wnd_Events_ TO h и METHOD PostMsg( nKey, nPar ) INLINE PostMessage( ::hWnd, WM_APP_LAUNCH, nKey, hb_defaultValue( nPar, 0 ) ) METHOD SendMsg( nKey, nPar ) INLINE SendMessage( ::hWnd, WM_APP_LAUNCH, nKey, hb_defaultValue( nPar, 0 ) ) #define WM_WND_LAUNCH (WM_USER+1044) #define WM_CTL_LAUNCH (WM_USER+1045) #define WM_APP_LAUNCH (WM_USER+1046)
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2191
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.02.19 17:43. Заголовок: gfilatov2002 Исправл..
gfilatov2002 Исправление, что бы в приоритете был индекс контрола, потом handle (было наоборот) METHOD DoEvent ( Key, nHandle ) CLASS TWndData LOCAL o := Self LOCAL i := o:Index LOCAL w := o:IsWindow LOCAL p := o:oParam:Get(Key) IF ! Empty( nHandle ) IF nHandle > 0 .and. nHandle <= Len( _HMG_aControlHandles ) // control index IF hmg_IsWindowObject( _HMG_aControlHandles[ nHandle ] ) o := hmg_GetWindowObject( _HMG_aControlHandles[ nHandle ] ) i := o:Index w := o:IsWindow ELSE i := nHandle w := .F. ENDIF ELSEIF hmg_IsWindowObject( nHandle ) // control handle o := hmg_GetWindowObject( nHandle ) i := o:Index w := o:IsWindow ENDIF ENDIF IF w RETURN Do_WindowEventProcedure ( ::oEvent:Get( Key ), i, o, Key, p ) ENDIF RETURN Do_ControlEventProcedure( ::oEvent:Get( Key ), i, o, Key, p )
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2192
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.02.19 20:02. Заголовок: gfilatov2002 Еще, из..
gfilatov2002 Еще, измените код, а то мелькает в левом верхнем углу FUNCTION HMG_Alert( cMsg, aOptions, cTitle, nType, cIcoFile, nIcoSize ) ... DEFINE WINDOW oDlg WIDTH 0 HEIGHT 0 ; TITLE cTitle ; MODAL NOSIZE // ON INIT FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize ) END WINDOW FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize ) ACTIVATE WINDOW oDlg ...
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1424
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.02.19 20:39. Заголовок: SergKis пишет: можн..
SergKis пишет: Cделал SergKis пишет: цитата: | что бы в приоритете был индекс контрола |
| Принято SergKis пишет: цитата: | мелькает в левом верхнем углу |
| Благодарю за помощь!
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2193
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.02.19 22:23. Заголовок: gfilatov2002 пишет С..
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2194
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.02.19 09:59. Заголовок: gfilatov2002 Предло..
gfilatov2002 Предложение. Вынести за скобки #ifdef _OBJECT_ процедуры 1. FUNCTION Do_WindowEventProcedure( bBlock, i, p1, p2, p3, p4 ) FUNCTION Do_ControlEventProcedure( bBlock, i, p1, p2, p3, p4 ) 2. #command ACTIVATE WINDOW <name, ...> [ <nowait: NOWAIT> ] ; [ INIT <bInit> ] ; => ; _ActivateWindow ( \{<(name)>\}, <.nowait.>, , <{bInit}> ) #command ACTIVATE WINDOW ALL [ INIT <bInit> ] ; => ; _ActivateAllWindows ( <{bInit}> ) 3. *-----------------------------------------------------------------------------* FUNCTION _ActivateWindow ( aForm, lNoWait, lDebugger, bInit ) *-----------------------------------------------------------------------------* ... * Look For Main Window FOR EACH FormName IN aForm i := GetFormIndex ( FormName ) IF HB_ISBLOCK( bInit ) Do_WindowEventProcedure( bInit, i, 'WINDOW_ACTIVATE' ) ENDIF IF _HMG_aFormType [ i ] == 'A' MainFound := .T. EXIT ENDIF NEXT ... *-----------------------------------------------------------------------------* FUNCTION _ActivateAllWindows ( bInit ) *-----------------------------------------------------------------------------* ... AAdd ( aForm, MainName ) _ActivateWindow ( aForm, , , bInit ) RETURN NIL ... Использовать после END WINDOW среду This. Form_1.Center // Form_1.Activate ACTIVATE WINDOW Form_1 INIT _logfile(.T., This.Name, _HMG_Value()) ...
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2195
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.02.19 11:05. Заголовок: gfilatov2002 Правка..
gfilatov2002 Правка. CLASS TDlu2Pix ... ASSIGN Handle( hWnd ) INLINE ( ::hWnd := hWnd, ::lError := Empty( hWnd ), ; iif( ::lError, MsgMiniGuiError("Application events are not created !"), ) ) ACCESS IsError INLINE ::lError ACCESS Wm_nApp INLINE WM_APP_LAUNCH ACCESS IsMsg INLINE ( ::lAction .and. ! ::lError ) ... METHOD Post ( nKey, nPar, xPar ) INLINE ::PostMsg( nKey, nPar, xPar ) METHOD PostMsg( nKey, nPar, xPar ) INLINE ( nPar := hb_defaultValue(nPar, 0), ; iif( ::IsMsg, ( ::oParam:Set( nKey, xPar ), ; PostMessage( ::hWnd, ::Wm_nApp, nKey, nPar ) ), Nil ) ) METHOD Send ( nKey, nPar, xPar ) INLINE ::SendMsg( nKey, nPar, xPar ) METHOD SendMsg( nKey, nPar, xPar ) INLINE ( nPar := hb_defaultValue(nPar, 0), ; iif( ::IsMsg, ( ::oParam:Set( nKey, xPar ), ; SendMessage( ::hWnd, ::Wm_nApp, nKey, nPar ) ), Nil ) ) ...
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1425
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.02.19 11:27. Заголовок: SergKis пишет: Пред..
SergKis пишет: Сделал, конечно. Только изменил кодовое слово INIT на ON INIT SergKis пишет: Благодарю за помощь
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2196
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.02.19 11:33. Заголовок: gfilatov2002 Еще, е..
gfilatov2002 Еще, если добавить CLASS TWndData ... ACCESS App INLINE ::oApp ACCESS AO INLINE ::oApp:oCargo ACCESS AP INLINE ::oApp:oProp ... можно писать короче WITH OBJECT This.Object :O:BColorGet := :AO:BColorGet // (App.Object):O:BColorGet :O:FColorGet := :AO:FColorGet // (App.Object):O:FColorGet :O:FColor1 := :AO:FColor1 // (App.Object):O:FColor1 :O:FColor2 := :AO:FColor2 // (App.Object):O:FColor2
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1426
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.02.19 11:39. Заголовок: SergKis пишет: ..
SergKis пишет: цитата: | ACCESS AO INLINE ::oApp:oCargo ACCESS AP INLINE ::oApp:oProp |
| OK
| |
|
|
SergKis
|
| постоянный участник
|
Пост N: 2197
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.02.19 11:39. Заголовок: gfilatov2002 Пропус..
gfilatov2002 Пропустил строки CLASS TDlu2Pix ... ACCESS IsMsg INLINE ( ::lAction .and. ! ::lError ) ACCESS Action INLINE ::lAction ASSIGN Action( lAction ) INLINE ::lAction := !( Empty( lAction ) ) ...
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1427
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.02.19 11:42. Заголовок: SergKis пишет: ..
SergKis пишет: цитата: | ACCESS Action INLINE ::lAction ASSIGN Action( lAction ) INLINE ::lAction := !( Empty( lAction ) ) |
| OK
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2198
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.02.19 08:25. Заголовок: gfilatov2002 Неболь..
gfilatov2002 Небольшая правка CLASS TDlu2Pix ... METHOD Event( Key, Block, p2, p3 ) INLINE iif( HB_ISBLOCK( Block ), ; ::oEvent:Set( Key, Block ), ; ( Block := hb_defaultValue(Block, ::oParam:Get( Key)), ; ::oEvent:Do ( Key, Block, p2, p3 ) ) ) ... и пример https://my-files.ru/em7ci6
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1428
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.02.19 11:38. Заголовок: SergKis пишет: Небо..
SergKis пишет: Добавил Но модуль h_objects.prg в Вашем примере - без последних изменений
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2199
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.02.19 11:52. Заголовок: gfilatov2002 Сори, ..
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2204
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.02.19 10:21. Заголовок: gfilatov2002 Можно ..
gfilatov2002 Можно добавить Скрытый текст
CLASS TDlu2Pix ... VAR nL INIT 0 VAR nT INIT 0 VAR nR INIT 0 VAR nB INIT 0 ... _METHOD GetGaps( aGaps, oWnd ) _METHOD D ( nKfc ) ... ACCESS Bottom INLINE ::MH() ACCESS LTRB INLINE { ::nL, ::nT, ::nR, ::nB } ... METHOD GetGaps( aGaps, oWnd ) CLASS TDlu2Pix LOCAL oApp, nGapW, nGapH, n If HB_ISCHAR(oWnd); oWnd := _WindowObj(oWnd) EndIf oApp := iif( Empty(oWnd), Self , oWnd:App ) nGapW := iif( Empty(oWnd), oApp:GapsWidth , oWnd:GapsWidth ) nGapH := iif( Empty(oWnd), oApp:GapsHeight, oWnd:GapsHeight ) If HB_ISNUMERIC(aGaps) n := aGaps aGaps := array(4) AFill(aGaps, n) EndIf DEFAULT aGaps := { 0, 0, nGapW, nGapH } ::nL := 0 ::nT := 0 ::nR := 0 ::nB := 0 If Len(aGaps) == 2 If ! HB_ISNUMERIC(aGaps[1]); aGaps[1] := nGapW EndIf If ! HB_ISNUMERIC(aGaps[2]); aGaps[2] := nGapH EndIf ::nL := aGaps[1] ::nR := aGaps[1] ::nT := aGaps[2] ::nB := aGaps[2] Else If Len(aGaps) != 4; ASize(aGaps, 4) EndIf If ! HB_ISNUMERIC(aGaps[1]); aGaps[1] := nGapW EndIf If ! HB_ISNUMERIC(aGaps[2]); aGaps[2] := nGapH EndIf If ! HB_ISNUMERIC(aGaps[3]); aGaps[3] := nGapW EndIf If ! HB_ISNUMERIC(aGaps[4]); aGaps[4] := nGapH EndIf ::nL := aGaps[1] ::nT := aGaps[2] ::nR := aGaps[3] ::nB := aGaps[4] EndIf If '.' $ hb_ntos(::nL); ::nL := oApp:GW( ::nL ) EndIf If '.' $ hb_ntos(::nT); ::nT := oApp:GH( ::nT ) EndIf If '.' $ hb_ntos(::nR); ::nR := oApp:GW( ::nR ) EndIf If '.' $ hb_ntos(::nB); ::nB := oApp:GH( ::nB ) EndIf aGaps[1] := ::nL aGaps[2] := ::nT aGaps[3] := ::nR aGaps[4] := ::nB RETURN aGaps ... Тогда в примере demo_misc.prg #include "demo.ch" *-----------------------------------------------------------------------------* FUNCTION _SetGaps( aGaps, oWnd ) *-----------------------------------------------------------------------------* RETURN (App.Object):GetGaps( aGaps, oWnd ) ...
| Пример https://my-files.ru/nljgq8
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1429
Зарегистрирован: 11.02.10
|
|
Отправлено: 08.02.19 11:06. Заголовок: SergKis пишет: Можн..
SergKis пишет: OK
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2205
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.02.19 22:14. Заголовок: gfilatov2002 Мысли ..
gfilatov2002 Мысли вслух. Если вынести oDlu2Pixel(...) и класс TDlu2Pix за скобки #ifdef _OBJECT_, то можно Скрытый текст
i_altsyntax.ch #xcommand END BUTTON [ ON INIT <bInit> ] ; ... _HMG_ActiveControlId, ; <bInit> ) ) ... #xcommand END BUTTONEX [ ON INIT <bInit> ] ; ... _HMG_ActiveControlHorizontal,; <bInit> ) ... #xcommand END GETBOX [<o: OBJ,OBJECT> <var>] [ ON INIT <binit> ] ; ... .NOT. _HMG_ActiveControlBorder,; <binit> ) ... #xcommand END LABEL [ ON INIT <bInit> ] ; ... _HMG_ActiveControlId,; <bInit> ) ... i_button.ch ... #xcommand @ <row>,<col> BUTTONEX <name> ; ... [ <default: DEFAULT> ] ; [ ON INIT <bInit> ] ; ... <imageheight>, <aGradInfo>, <.horizontal.>, <bInit> ) ... i_getbox.ch ... #command @ <row>, <col> GETBOX <name> ; ... [ HELPID <helpid> ] ; [ ON INIT <bInit> ] ; ... <{action2}>, <abitmap>, <btnwidth>, <.nominus.>, <.noborder.>, <bInit> ) ... i_label.ch ... #command @ <row>,<col> LABEL <name> ; ... [ <noprefix: NOPREFIX> ] ; [ ON INIT <bInit> ] ; ... <nId>, ; <bInit> ) ... h_button.prg ... FUNCTION _DefineOwnerButton ( ControlName, ParentForm, x, y, Caption, ; ... ladjust, handcursor, imagewidth, imageheight, aGradInfo, lhorizontal, bInit ) ... LOCAL k LOCAL oc, ow ... IF _HMG_lOOPEnabled Eval ( _HMG_bOnControlInit, k, mVar ) ow := _WindowObj ( ParentForm ) oc := _ControlObj( ControlHandle ) ENDIF Do_ControlEventProcedure ( bInit, k, oc, ow ) RETURN Nil ... h_getbox.prg ... FUNCTION _DefineGetBox ( ControlName, ParentFormName, x, y, w, h, Value, ; ... when, ProcedureName, ProcedureName2, abitmap, BtnWidth, lNoMinus, noborder, ; bInit ) ... LOCAL k, Style, aPicData, oGet LOCAL oc, ow ... IF _HMG_lOOPEnabled Eval ( _HMG_bOnControlInit, k, mVar ) ow := _WindowObj ( ParentFormHandle ) oc := _ControlObj( ControlHandle ) ENDIF Do_ControlEventProcedure ( bInit, k, oGet, oc, ow ) RETURN oGet ... h_label.prg ... FUNCTION _DefineLabel ( ControlName, ParentFormName, x, y, Caption, w, h, ; ... LOCAL lDialogInMemory LOCAL oc, ow ... IF autosize == .T. .AND. .NOT. lDialogInMemory _SetControlWidth ( ControlName , ParentFormName , GetTextWidth( NIL, Caption, FontHandle ) + ; iif( bold == .T. .OR. italic == .T., GetTextWidth( NIL, " ", FontHandle ), 0 ) ) _SetControlHeight ( ControlName , ParentFormName , FontSize + iif( FontSize < 14, 12, 16 ) ) ENDIF IF _HMG_lOOPEnabled Eval ( _HMG_bOnControlInit, k, mVar ) ow := _WindowObj ( ParentFormHandle ) oc := _ControlObj( ControlHandle ) ENDIF Do_ControlEventProcedure ( bInit, k, oc, ow ) RETURN Nil ... и т.д. Тогда в примере так пишем demo.prg ... // :Y += :GapsHeight :X := :Left DEFINE GETBOX Text_2c // Alternate Syntax ROW :Y += :GapsHeight COL :X WIDTH :W() HEIGHT :H() VALUE "MyPass" PICTURE "@K !!!!!!!!!" BACKCOLOR :O:BColorGet FONTCOLOR :O:FColorGet VALID {|| ( len(alltrim(This.Value)) >= 4)} TOOLTIP "Character input PASSWORD clause is set" VALIDMESSAGE "Password must contains minimum 4 characters" MESSAGE "Enter password (min 4 char.) " PASSWORD .T. END GETBOX ON INIT {|og,oc,ow| ow:Y += This.Height + ow:GapsHeight } // :Y += This.Text_2c.Height + :GapsHeight :O:aFrm[4] := :Y - :O:aFrm[1] ... По др. контролам аналогично. Используется среда контрола в ON INIT.
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 2206
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.02.19 22:23. Заголовок: PS Оборвалась переда..
| |
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|