Форум » GUI » Список контролов на форме » Ответить

Список контролов на форме

mshep: Дай бог здоровья всем добрым людям! Вот опять дедушке невмоготу лазить по инструкциям, ответ раньше времени получить хочется! И по поиску на форуме не нашлось мне ничего. ((( Можно ли как-то получить массив контролов, которые имеются на форме? На форме имеется куча полей для ввода и в разных режимах необходимо делать большинство из них недоступными до определенного события, а затем наоборот - т е _ExtDisableControl ( ) _ExtDisableControl ( ) по массиву пробегаючись. Что можно тут посоветовать?

Ответов - 11

Andrey: Где то так.... // считать все объекты на форме aTemp := _GetArrayOfAllControlsForForm ( "Form_Main" ) FOR nI := 1 TO LEN(aTemp) cObj := UPPER(aTemp[nI]) IF AT("OBUT_", cObj) > 0 .OR. ; .OR. AT("IMAGE_1", cObj) > 0 SetProperty( "Form_Main", cObj, "Visible", .F. ) ENDIF NEXT ...................... ////////////////////////////////////////////////////////////////////////////////////// // Перерисовать все объекты на форме FUNCTION RedrawAll() Local aCtrls := _GetArrayOfAllControlsForForm ( _HMG_ThisFormName ) Local nI, CtrlName FOR nI := 1 TO LEN(aCtrls) CtrlName := aCTrls[nI] IF AT("DUMMYMENUNAME", UPPER(CtrlName) ) > 0 // пропуск, т.к. это объект МиниГуи-ядра ELSE SetProperty( _HMG_ThisFormName, CtrlName, "Visible" , .F. ) SetProperty( _HMG_ThisFormName, CtrlName, "Visible" , .T. ) ENDIF NEXT Return NIL /*************** MiniGUI\SAMPLES\BASIC\Form_Controls **************************/ Function _GetArrayOfAllControlsForForm ( cFormName ) /******************************************************************************/ Local nFormHandle , i , nControlCount , aRetVal := {} , x nFormHandle := GetFormHandle ( cFormName ) nControlCount := Len ( _HMG_aControlHandles ) For i := 1 To nControlCount If _HMG_aControlParentHandles == nFormHandle If ValType( _HMG_aControlHandles ) == 'N' IF ! Empty( _HMG_aControlNames ) If Ascan( aRetVal, _HMG_aControlNames ) == 0 Aadd( aRetVal, _HMG_aControlNames ) EndIf ENDIF ElseIf ValType( _HMG_aControlHandles ) == 'A' For x := 1 To Len ( _HMG_aControlHandles ) IF !Empty( _HMG_aControlNames ) If Ascan( aRetVal, _HMG_aControlNames ) == 0 Aadd( aRetVal, _HMG_aControlNames ) EndIf ENDIF Next x EndIf EndIf Next i Return Asort( aRetVal )

mshep: Вооо! Спасибо за ссылку, счас гляну, сразу в примерах и не углядел! За вечер правда уже на другой путь свернуть я успел... ((((( А можно ли станд.средствами узнать, есть ли контрол на форме, т е не обращаясь к сформированному списку имеющихся?

Andrey: If .Not. _IsWindowDefined (ParentForm) MsgMiniGuiError("Window: "+ ParentForm + " is not defined.") Endif If _IsControlDefined (ControlName,ParentForm) MsgMiniGuiError ("Control: " + ControlName + " Of " + ParentForm + " Already defined.") endif


Haz: Andrey пишет: Где то так....

mshep: Пасибки! И в каких только умных книжках все это народ находит? Наверно толстые и без картинок...

Andrey: mshep пишет: И в каких только умных книжках все это народ находит? Открвываешь в Far'е поиск в папке MiniGUI и читаешь исходники... Ничего не понимаешь, через день повторить... И так пока не поймёшь... А потом можешь и забыть... Нет никаких книжек, только работа, работа и ещё раз работа ! Пока не переделаешь кучу примеров, ничего не поймёшь....

mshep: Добрый вечер добрым людям! Подсказал бы кто мне функцию, по которой можно было бы получить список всех открытых WINDOW текущей программы и чтобы можно было отловить которые из них HIDE. И где про сию функцию посмотреть/почитать. Очень буду благодарен и удовлетворен, если кто ответит дедушке.

SergKis: mshep пишет получить список всех открытых WINDOW текущей программы _HMG_aFormNames _HMG_aFormHandles т.е. For i := 1 To Len( _HMG_aFormHandles ) ? _HMG_aFormNames[ i ] Next и чтобы можно было отловить которые из них HIDE. И где про сию функцию посмотреть/почитать. h_window.pg [pre2] *-----------------------------------------------------------------------------* FUNCTION _HideWindow ( FormName ) *-----------------------------------------------------------------------------* LOCAL i, FormHandle IF ( i := GetFormIndex ( FormName ) ) > 0 FormHandle := _HMG_aFormHandles [ i ] IF IsWindowVisible ( FormHandle ) IF _HMG_aFormType [ i ] == 'M' IF _HMG_ActiveModalHandle <> FormHandle MsgMiniGuiError ( "Non top modal windows can't be hide." ) ENDIF ENDIF HideWindow ( FormHandle ) _hmg_OnHideFocusManagement ( i ) ENDIF ENDIF RETURN NIL [/pre2]

mshep: Пасибки! И в каких книжках все все это находят?

SergKis: mshep пишет И в каких книжках все все это находят? В исходниках. Список функций по файлам MiniGui\UTILS\FuncList, собираете, смотрите, изучаете. Include\i_*.ch там все команды, к примеру i_window.ch [pre2] #xcommand DEFINE WINDOW <w> ; ... [ <helpbutton: HELPBUTTON> ] ; => ; ... _DefineWindow ( <"w">, <title>,...) ... ищем _DefineWindow она в h_window.prg, смотрим ее и в самом конце видим IF k > 0 Public &mVar. := k _HMG_aFormNames [ k ] := FormName _HMG_aFormHandles [ k ] := FormHandle _HMG_aFormActive [ k ] := .F. _HMG_aFormType [ k ] := cType _HMG_aFormParentHandle [ k ] := iif( panel, ParentHandle, 0 ) _HMG_aFormReleaseProcedure [ k ] := ReleaseProcedure _HMG_aFormInitProcedure [ k ] := InitProcedure _HMG_aFormToolTipHandle [ k ] := htooltip _HMG_aFormContextMenuHandle [ k ] := 0 _HMG_aFormMouseDragProcedure [ k ] := MouseDragProcedure _HMG_aFormSizeProcedure [ k ] := SizeProcedure _HMG_aFormClickProcedure [ k ] := ClickProcedure _HMG_aFormMouseMoveProcedure [ k ] := MouseMoveProcedure _HMG_aFormMoveProcedure [ k ] := MoveProcedure _HMG_aFormDropProcedure [ k ] := DropProcedure _HMG_aFormDeleted [ k ] := .F. _HMG_aFormBkColor [ k ] := aRGB _HMG_aFormPaintProcedure [ k ] := PaintProcedure _HMG_aFormNoShow [ k ] := noshow _HMG_aFormNotifyIconName [ k ] := NotifyIconName _HMG_aFormNotifyIconToolTip [ k ] := NotifyIconToolTip _HMG_aFormNotifyIconLeftClick [ k ] := NotifyIconLeftClick _HMG_aFormNotifyIconDblClick [ k ] := NotifyIconDblClick _HMG_aFormGotFocusProcedure [ k ] := GotFocus _HMG_aFormLostFocusProcedure [ k ] := LostFocus _HMG_aFormReBarHandle [ k ] := 0 _HMG_aFormNotifyMenuHandle [ k ] := 0 _HMG_aFormBrowseList [ k ] := {} _HMG_aFormSplitChildList [ k ] := {} _HMG_aFormVirtualHeight [ k ] := VirtualHeight _HMG_aFormVirtualWidth [ k ] := VirtualWidth _HMG_aFormFocused [ k ] := .F. _HMG_aFormScrollUp [ k ] := ScrollUp _HMG_aFormScrollDown [ k ] := ScrollDown _HMG_aFormScrollLeft [ k ] := ScrollLeft _HMG_aFormScrollRight [ k ] := ScrollRight _HMG_aFormHScrollBox [ k ] := HScrollBox _HMG_aFormVScrollBox [ k ] := VScrollBox _HMG_aFormBrushHandle [ k ] := BrushHandle _HMG_aFormFocusedControl [ k ] := 0 _HMG_aFormGraphTasks [ k ] := {} _HMG_aFormMaximizeProcedure [ k ] := MaximizeProcedure _HMG_aFormMinimizeProcedure [ k ] := MinimizeProcedure _HMG_aFormRestoreProcedure [ k ] := RestoreProcedure _HMG_aFormAutoRelease [ k ] := ! NoAutoRelease _HMG_aFormInteractiveCloseProcedure [ k ] := InteractiveCloseProcedure _HMG_aFormMinMaxInfo [ k ] := InitMinMaxInfo ( FormHandle ) _HMG_aFormActivateId [ k ] := 0 _HMG_aFormMiscData1 [ k ] := {} _HMG_aFormMiscData2 [ k ] := '' #ifdef _HMG_COMPAT_ _HMG_StopWindowEventProcedure [ k ] := .F. #endif ELSE k := Len( _HMG_aFormNames ) + 1 Public &mVar. := k AAdd ( _HMG_aFormNames, FormName ) AAdd ( _HMG_aFormHandles, FormHandle ) AAdd ( _HMG_aFormActive, .F. ) AAdd ( _HMG_aFormType, cType ) AAdd ( _HMG_aFormParentHandle, iif( panel, ParentHandle, 0 ) ) AAdd ( _HMG_aFormReleaseProcedure, ReleaseProcedure ) AAdd ( _HMG_aFormInitProcedure, InitProcedure ) AAdd ( _HMG_aFormToolTipHandle, htooltip ) AAdd ( _HMG_aFormContextMenuHandle, 0 ) AAdd ( _HMG_aFormMouseDragProcedure, MouseDragProcedure ) AAdd ( _HMG_aFormSizeProcedure, SizeProcedure ) AAdd ( _HMG_aFormClickProcedure, ClickProcedure ) AAdd ( _HMG_aFormMouseMoveProcedure, MouseMoveProcedure ) AAdd ( _HMG_aFormMoveProcedure, MoveProcedure ) AAdd ( _HMG_aFormDropProcedure, DropProcedure ) AAdd ( _HMG_aFormDeleted, .F. ) AAdd ( _HMG_aFormBkColor, aRGB ) AAdd ( _HMG_aFormPaintProcedure, PaintProcedure ) AAdd ( _HMG_aFormNoShow, noshow ) AAdd ( _HMG_aFormNotifyIconName, NotifyIconName ) AAdd ( _HMG_aFormNotifyIconToolTip, NotifyIconToolTip ) AAdd ( _HMG_aFormNotifyIconLeftClick, NotifyIconLeftClick ) AAdd ( _HMG_aFormNotifyIconDblClick, NotifyIconDblClick ) AAdd ( _HMG_aFormGotFocusProcedure, GotFocus ) AAdd ( _HMG_aFormLostFocusProcedure, LostFocus ) AAdd ( _HMG_aFormReBarHandle, 0 ) AAdd ( _HMG_aFormNotifyMenuHandle, 0 ) AAdd ( _HMG_aFormBrowseList, {} ) AAdd ( _HMG_aFormSplitChildList, {} ) AAdd ( _HMG_aFormVirtualHeight, VirtualHeight ) AAdd ( _HMG_aFormVirtualWidth, VirtualWidth ) AAdd ( _HMG_aFormFocused, .F. ) AAdd ( _HMG_aFormScrollUp, ScrollUp ) AAdd ( _HMG_aFormScrollDown, ScrollDown ) AAdd ( _HMG_aFormScrollLeft, ScrollLeft ) AAdd ( _HMG_aFormScrollRight, ScrollRight ) AAdd ( _HMG_aFormHScrollBox, HScrollBox ) AAdd ( _HMG_aFormVScrollBox, VScrollBox ) AAdd ( _HMG_aFormBrushHandle, BrushHandle ) AAdd ( _HMG_aFormFocusedControl, 0 ) AAdd ( _HMG_aFormGraphTasks, {} ) AAdd ( _HMG_aFormMaximizeProcedure, MaximizeProcedure ) AAdd ( _HMG_aFormMinimizeProcedure, MinimizeProcedure ) AAdd ( _HMG_aFormRestoreProcedure, RestoreProcedure ) AAdd ( _HMG_aFormAutoRelease, ! NoAutoRelease ) AAdd ( _HMG_aFormInteractiveCloseProcedure, InteractiveCloseProcedure ) AAdd ( _HMG_aFormMinMaxInfo, InitMinMaxInfo ( FormHandle ) ) AAdd ( _HMG_aFormActivateId, 0 ) AAdd ( _HMG_aFormMiscData1, {} ) AAdd ( _HMG_aFormMiscData2, '' ) #ifdef _HMG_COMPAT_ AAdd ( _HMG_StopWindowEventProcedure, .F. ) #endif ENDIF это системные переменные hmg для окна. Так же поступаете с контролами файл i_<контрол>.ch -> h_<контрол>.prg в нем переменные hmg для контролов. Словом смотрим исходники. В примерах ищем Farом, как предлагалось выше [/pre2]

SergKis: PS см. MiniGui\Doc MiniGui.chm ...



полная версия страницы