Форум » GUI » Передача фокуса между окнами » Ответить

Передача фокуса между окнами

alex_II: Давно уже столкнулся с этой проблемой, всё не доходили руки до её решения На MAIN-окне есть browse. Из главной формы вызываются CHILD-окна со справочниками, из справочников вызываются MODAL-окна для корректировки этих справочников. Проблема в том, что самое первое закрытие MODAL-окна передает фокус в browse на MAIN-окне, все последующие вызовы MODAL-окна уже возвращают фокус в CHILD-окно. И так продолжается до закрытия CHILD-окна, если после этого снова открыть CHILD-окно, ситуация повторяется. Никакие манипуляции с SetFocus'ом не помогли

Ответов - 12

fil: Сделать бровс disable. Ну а при закрытии child-окна, соответственно, enable

alex_II: fil пишет: Сделать бровс disable. Ну а при закрытии child-окна, соответственно, enable В этом случае фокус получает само окно, browse тут приведен для примера, там может быть что угодно

fil: Ну так и окно disable


SergKis: Alex_II пишет:Никакие манипуляции с SetFocus'ом не помогли Попробуйте перед MODAL следующее:[pre2] hPerent - handle CHILD окна с которого MODAL ... _HMG_InplaceParentHandle := hParent // Так как активное окно почему то сбивается 8-Июл-2012 SetFocus( hParent ) DEFINE WINDOW &cInPlaceName ; AT y, x ; WIDTH w HEIGHT h ; MODAL NOSIZE NOCAPTION ; ON INIT _SetFocus ( cCtrlName , cInPlaceName) ... END WINDOW ... ACTIVATE WINDOW &cInPlaceName ... SetFocus( hParent ) ... [/pre2] На MDI окнах это помогло.

alex_II: SergKis пишет: _HMG_InplaceParentHandle := hParent Увы, не помогло

SergKis: alex_II пишет:Увы, не помогло Попробуйте еще так: [pre2] LOCAL cCtrlName := "Control_2rq", cFormReq:="WinReq", aVr ... aVr := hmgSaveRest( , cFormReq) ... DEFINE WINDOW &cFormReq ; AT WinY,WinX WIDTH WinW HEIGHT WinH ; MODAL NOSIZE ; ON INIT _SetFocus ( cCtrlName , cFormReq) ; ON RELEASE CloseRQ( cAsR ) ... END WINDOW ... ACTIVATE WINDOW &cFormReq hmgSaveRest( aVr ) ... FUNCTION hmgSaveRest( a, cForm ) // Save\Restore _HM_... переменных IF ValType(a)=='A' _HMG_BeginWindowMDIActive := a[1] _HMG_ActiveStatusHandle := a[2] _hmg_UserWindowHandle := a[3] _HMG_SetFocusExecuted := a[4] _HMG_ThisFormName := a[5] _HMG_ThisControlName := a[6] _HMG_ActiveFontName := a[7] _HMG_ActiveFontSize := a[8] _HMG_ExtendedNavigation := a[9] IF a[10] > 0 _HMG_ActiveFrameParentFormName[ _HMG_FrameLevel ] := NIL _HMG_ActiveFrameRow[ _HMG_FrameLevel ] := NIL _HMG_ActiveFrameCol[ _HMG_FrameLevel ] := NIL _HMG_FrameLevel -= 1 ENDIF RETURN ENDIF a := array(10) a[1] := _HMG_BeginWindowMDIActive a[2] := _HMG_ActiveStatusHandle a[3] := _hmg_UserWindowHandle a[4] := _HMG_SetFocusExecuted a[5] := _HMG_ThisFormName a[6] := _HMG_ThisControlName a[7] := _HMG_ActiveFontName a[8] := _HMG_ActiveFontSize a[9] := _HMG_ExtendedNavigation a[10] := 0 _HMG_BeginWindowMDIActive := .F. _HMG_ExtendedNavigation := .T. // навигация по Enter включена IF ValType( cForm )=='C' _HMG_FrameLevel += 1 _HMG_ActiveFrameParentFormName[ _HMG_FrameLevel ] := cForm _HMG_ActiveFrameRow[ _HMG_FrameLevel ] := 0 _HMG_ActiveFrameCol[ _HMG_FrameLevel ] := 0 a[10] := _HMG_FrameLevel ENDIF RETURN a [/pre2] Нам такие манипуляции помогли, правда один раз на новом child mdi мелькание mdi main окна происходит (на медленной PC заметно глазу), но фокус удерживается как надо.

alex_II: SergKis пишет: Нам такие манипуляции помогли, правда один раз на новом child mdi мелькание mdi main окна происходит (на медленной PC заметно глазу), но фокус удерживается как надо. Опять неудача, очевидно у MDI-окон свой механизм передачи фокуса

fil: Можно попробовать посадить SetFocus() на обработчик перемещения указателя мыши по окну

SergKis: alex_II пишет:Опять неудача Если можно, выложите пример, где стабильно "самое первое закрытие MODAL-окна передает фокус в browse на MAIN-окне", потестирую у себя - возможно мы у себя еще что-то правили на эту тему.

alex_II: SergKis пишет: Если можно, выложите пример, где стабильно "самое первое закрытие MODAL-окна передает фокус в browse на MAIN-окне", потестирую у себя - возможно мы у себя еще что-то правили на эту тему. Выкладываю #include "tsbrowse.ch" #include "minigui.ch" #include "hbextern.ch" #include "miniprint.ch" #include "WINPRINT.CH" REQUEST HB_LANG_RU866 REQUEST HB_LANG_RUWIN REQUEST HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_RU1251 REQUEST DBFCDX, DBFFPT FUNCTION main() //////////////////////////////////////////////////// PRIVATE w_main := 1024 PRIVATE h_main := 768 HB_SetCodePage('RU1251') RddSetDefault('DBFCDX') SET LANGUAGE TO RUSSIAN SET CENTURY ON SET BROWSESYNC ON SET DELETED ON SET DATE GERMAN SET CENTERWINDOW RELATIVE PARENT IF !File('sity.dbf') astr := {} AAdd(astr,{"ls", "n", 05, 0 }) AAdd(astr,{'fm', 'c', 17, 0 }) AAdd(astr,{'adr', 'c', 17, 0 }) DBCreate('sity',astr) USE sity ALIAS sity NEW FOR i := 1 TO 20 sity->(DBAppend()) REPLACE sity->ls WITH i NEXT ELSE USE sity ALIAS sity NEW ENDIF IF !File('spr_ktr') astr := {} AAdd(astr,{'kod_ktr', 'n', 03, 0 }) AAdd(astr,{'naz_ktr', 'c', 20, 0 }) DBCreate('spr_ktr',astr) USE spr_ktr ALIAS ktr NEW FOR i := 1 TO 5 ktr->(DBAppend()) REPLACE ktr->kod_ktr WITH i NEXT ELSE USE spr_ktr ALIAS ktr NEW ENDIF DEFINE WINDOW Form_main AT 0,0 WIDTH w_main HEIGHT h_main ; TITLE ' Тест' MAIN NOSIZE ; FONT 'Times New Roman' SIZE 10 DEFINE MAIN MENU OF Form_main DEFINE POPUP 'Файл' MENUITEM 'Пароль' DEFINE POPUP 'Настройка' MENUITEM 'Пересоздание файлов' MENUITEM 'Параметры' MENUITEM 'Тестовая печать' END POPUP DEFINE POPUP 'Экспорт' MENUITEM 'В отдел субсидий' END POPUP SEPARATOR MENUITEM 'Выход' ACTION Form_main.Release END POPUP DEFINE POPUP 'Справочники' MENUITEM 'Населенные пункты' MENUITEM 'Улицы' MENUITEM 'Оплаты' MENUITEM 'Отопление' MENUITEM 'Контролеры' ACTION Spr_ktr() MENUITEM 'Метки' END POPUP DEFINE POPUP 'Тарифы' MENUITEM 'Отопление' END POPUP DEFINE POPUP 'Счетчики' MENUITEM 'Отопление' END POPUP DEFINE POPUP 'Печати' MENUITEM 'Расчетные квитки' MENUITEM 'Свод общий' MENUITEM 'Отфильтрованный список' END POPUP DEFINE POPUP 'Оплаты' MENUITEM 'Контроль за месяц' MENUITEM 'Ввод оплат' MENUITEM 'Загрузка оплат' END POPUP DEFINE POPUP 'Обслуживание' MENUITEM 'Архивировать данные' MENUITEM 'Удалить мусор' MENUITEM 'Перейти на следующий месяц' END POPUP DEFINE POPUP 'Помощь' MENUITEM 'О программе' END POPUP END MENU DEFINE SPLITBOX DEFINE TOOLBAR TlBar BUTTONSIZE 64,32 FLAT BUTTON Bt_Exit CAPTION 'Выход' ACTION Form_main.Release END TOOLBAR DEFINE TOOLBAR TlBarls CAPTION Space(35) @ -8,w_main-190 LABEL Lbls VALUE '35409' WIDTH 175 HEIGHT 56 SIZE 32 BOLD FONTCOLOR BLACK TRANSPARENT RIGHTALIGN END TOOLBAR END SPLITBOX DEFINE BROWSE Br_sity ROW 50 ; COL 0 VALUE 1 WIDTH 590 ; HEIGHT 500 WIDTHS {50,200,320} HEADERS {'№','Фамилия','Адрес'} WORKAREA sity FIELDS {'sity->ls','sity->fm','sity->adr'} END BROWSE END WINDOW CENTER WINDOW Form_Main ACTIVATE WINDOW Form_Main RETURN PROCEDURE Spr_ktr() /////////////////////////////////// LOCAL w_kod_ktr := 50, w_naz_ktr := 250 LOCAL w_br := w_kod_ktr + w_naz_ktr LOCAL w_win := w_br + 27, h_win := 412 ktr->(DBGoTop()) DEFINE WINDOW Form_ktr AT 0,0 WIDTH w_win HEIGHT h_win ; TITLE ' Справочник контролёров' CHILD NOSYSMENU NOSIZE NOMAXIMIZE ; ON GOTFOCUS DBSelectArea('ktr') DEFINE SPLITBOX DEFINE TOOLBAR ToolBar_ktr BUTTONSIZE 64,24 FLAT BUTTON Button_Exit CAPTION 'close' ACTION ThisWindow.Release BUTTON Button_Add CAPTION 'new' ACTION ktrAddRec(Br_ktr) BUTTON Button_Del CAPTION 'delete' ACTION Br_ktr:DeleteRow() END TOOLBAR END SPLITBOX DEFINE TBROWSE Br_ktr AT 40,0 ALIAS 'ktr' WIDTH w_br+22 HEIGHT h_win-70 ; ON DBLCLICK ktrModRec(Br_ktr) ADD COLUMN TO Br_ktr HEADER 'Код' SIZE w_kod_ktr ; DATA FieldWBlock('kod_ktr', SELECT('ktr')) ADD COLUMN TO Br_ktr HEADER 'Фио' SIZE w_naz_ktr ; DATA FieldWBlock('naz_ktr', SELECT('ktr')) Br_ktr:SetDeleteMode(.T.) Br_ktr:nWheelLines := 1 Br_ktr:lNoResetPos := .F. END TBROWSE END WINDOW CENTER WINDOW Form_ktr ACTIVATE WINDOW Form_ktr RETURN PROCEDURE ktrAddRec(oBr) ///////////////////////////////// ktr->(DBAppend()) oBr:SetFocus() oBr:Reset() ktrModRec(oBr) RETURN PROCEDURE ktrModRec(oBr) //////////////////////////////// LOCAL w_win := 530, h_win := 145 LOCAL w_but := 100, h_but := 30 DEFINE WINDOW Form_ktr_modRec AT 0,0 WIDTH w_win HEIGHT h_win ; TITLE ' Редактирование' MODAL NOSIZE NOSYSMENU rw := 10 @ rw,50 LABEL Label_kod VALUE 'код' WIDTH 100 RIGHTALIGN TRANSPARENT @ rw,160 GETBOX GetBox_kod VALUE ktr->kod_ktr WIDTH 60 HEIGHT 27 PICTURE "@K 999" rw += 30 @ rw,50 LABEL Label_naz VALUE 'название' WIDTH 100 RIGHTALIGN TRANSPARENT @ rw,160 TEXTBOX TextBox_naz WIDTH 180 VALUE AllTrim(ktr->naz_ktr) DEFINE BUTTONEX Button_Save; ROW h_win-70; COL w_win-(w_but*2)-40; CAPTION 'ok'; WIDTH w_but; HEIGHT h_but ACTION ktrSaveRec(oBr) END BUTTONEX DEFINE BUTTONEX Button_Cansel; ROW h_win-70; COL w_win-w_but-20; CAPTION 'cancel'; WIDTH w_but; HEIGHT h_but ACTION ThisWindow.Release END BUTTONEX END WINDOW CENTER WINDOW Form_ktr_modRec ACTIVATE WINDOW Form_ktr_modRec RETURN PROCEDURE ktrSaveRec(oBr) //////////////////////////////// LOCAL poz REPLACE ktr->kod_ktr WITH Form_ktr_modRec.GetBox_kod.Value, ; ktr->naz_ktr WITH AllTrim(Form_ktr_modRec.TextBox_naz.Value) poz := oBr:nLogicPos() oBr:SetFocus() oBr:Reset() oBr:GoPos(poz,1) oBr:GoPos(poz,1) ThisWindow.Release RETURN Я использую xMate, вот файл проекта [Version] Type=xMate Number=1.15.3 [Info] Type=Executable Architecture=Minigui89 Include=C:\MiniGUI\Include;%HB_INSTALL%\include Define= [xMate] Create Map/List File=No [Project] Run=E:\Sou.may\Harbour\Test\Test.exe Params= Final Path=E:\Sou.may\Harbour\Test Maintain LNK=Yes Default Type=1 Error log= [Data Path] Dbf=E:\Sou.may\xMate\Test [Editor] E:\Sou.may\xMate\Test\Source\Test.prg=1,N,Y [Files] %HOME%\Source\Test.prg=1,.F.,217,2, C:\MiniGUI\RESOURCES\hbprinter.res=2,.F.,0,0, C:\MiniGUI\RESOURCES\minigui.res=3,.F.,0,0, C:\MiniGUI\RESOURCES\miniprint.res=4,.F.,0,0, %C_LIB_INSTALL%\C0W32.OBJ=5,.T.,0,0, C:\MiniGUI\Lib\tsbrowse.LIB=6,.T.,0,0, C:\MINIGUI\LIB\propgrid.lib=7,.T.,0,0, C:\MINIGUI\LIB\minigui.LIB=8,.T.,0,0, %HB_LIB_INSTALL%\dll.lib=9,.T.,0,0, %HB_LIB_INSTALL%\gtgui.lib=10,.T.,0,0, %HB_LIB_INSTALL%\hbcplr.lib=11,.T.,0,0, %HB_LIB_INSTALL%\hbrtl.lib=12,.T.,0,0, %HB_LIB_INSTALL%\hbvm.lib=13,.T.,0,0, %HB_LIB_INSTALL%\hblang.lib=14,.T.,0,0, %HB_LIB_INSTALL%\hbcpage.lib=15,.T.,0,0, %HB_LIB_INSTALL%\hbmacro.lib=16,.T.,0,0, %HB_LIB_INSTALL%\hbrdd.lib=17,.T.,0,0, %HB_LIB_INSTALL%\hbhsx.lib=18,.T.,0,0, %HB_LIB_INSTALL%\rddntx.lib=19,.T.,0,0, %HB_LIB_INSTALL%\rddcdx.lib=20,.T.,0,0, %HB_LIB_INSTALL%\rddfpt.lib=21,.T.,0,0, %HB_LIB_INSTALL%\rddnsx.lib=22,.T.,0,0, %HB_LIB_INSTALL%\hbsix.lib=23,.T.,0,0, %HB_LIB_INSTALL%\hbcommon.lib=24,.T.,0,0, %HB_LIB_INSTALL%\hbdebug.lib=25,.T.,0,0, %HB_LIB_INSTALL%\hbpp.lib=26,.T.,0,0, %HB_LIB_INSTALL%\hbpcre.lib=27,.T.,0,0, %HB_LIB_INSTALL%\hbct.lib=28,.T.,0,0, %HB_LIB_INSTALL%\hbmisc.lib=29,.T.,0,0, %HB_LIB_INSTALL%\hbole.lib=30,.T.,0,0, %HB_LIB_INSTALL%\hbprinter.lib=31,.T.,0,0, %HB_LIB_INSTALL%\miniprint.lib=32,.T.,0,0, %HB_LIB_INSTALL%\socket.lib=33,.T.,0,0, %HB_LIB_INSTALL%\hbziparc.lib=34,.T.,0,0, %HB_LIB_INSTALL%\hbmzip.lib=35,.T.,0,0, %C_LIB_INSTALL%\CW32.LIB=36,.T.,0,0, %C_LIB_INSTALL%\IMPORT32.LIB=37,.T.,0,0, %C_LIB_INSTALL%\ws2_32.lib=38,.T.,0,0, %HB_LIB_INSTALL%\hbzlib.lib=39,.T.,0,0, %HB_LIB_INSTALL%\minizip.lib=40,.T.,0,0, %HB_LIB_INSTALL%\calldll.lib=41,.T.,0,0,

SergKis: alex_II пишет:Выкладываю Немного упростил текст. Ситуация была как у вас. Подправил - строки с // !!!!!! . //#include "tsbrowse.ch" #include "minigui.ch" //#include "hbextern.ch" //#include "miniprint.ch" //#include "WINPRINT.CH" REQUEST HB_LANG_RU866 REQUEST HB_LANG_RUWIN REQUEST HB_CODEPAGE_RU866 REQUEST HB_CODEPAGE_RU1251 REQUEST DBFCDX, DBFFPT FUNCTION main() //////////////////////////////////////////////////// PRIVATE w_main := 1024 PRIVATE h_main := 768 HB_SetCodePage('RU1251') RddSetDefault('DBFCDX') SET LANGUAGE TO RUSSIAN SET CENTURY ON SET BROWSESYNC ON SET DELETED ON SET DATE GERMAN SET CENTERWINDOW RELATIVE PARENT IF !File('sity.dbf') astr := {} AAdd(astr,{"ls", "n", 05, 0 }) AAdd(astr,{'fm', 'c', 17, 0 }) AAdd(astr,{'adr', 'c', 17, 0 }) DBCreate('sity',astr) USE sity ALIAS sity NEW FOR i := 1 TO 20 sity->(DBAppend()) REPLACE sity->ls WITH i NEXT ELSE USE sity ALIAS sity NEW ENDIF IF !File('spr_ktr') astr := {} AAdd(astr,{'kod_ktr', 'n', 03, 0 }) AAdd(astr,{'naz_ktr', 'c', 20, 0 }) DBCreate('spr_ktr',astr) USE spr_ktr ALIAS ktr NEW FOR i := 1 TO 5 ktr->(DBAppend()) REPLACE ktr->kod_ktr WITH i NEXT ELSE USE spr_ktr ALIAS ktr NEW ENDIF DEFINE WINDOW Form_main AT 0,0 WIDTH w_main HEIGHT h_main ; TITLE ' Тест' MAIN NOSIZE ; FONT 'Times New Roman' SIZE 10 DEFINE MAIN MENU OF Form_main DEFINE POPUP 'Файл' MENUITEM 'Пароль' DEFINE POPUP 'Настройка' MENUITEM 'Пересоздание файлов' MENUITEM 'Параметры' MENUITEM 'Тестовая печать' END POPUP DEFINE POPUP 'Экспорт' MENUITEM 'В отдел субсидий' END POPUP SEPARATOR MENUITEM 'Выход' ACTION Form_main.Release END POPUP DEFINE POPUP 'Справочники' MENUITEM 'Населенные пункты' MENUITEM 'Улицы' MENUITEM 'Оплаты' MENUITEM 'Отопление' MENUITEM 'Контролеры' ACTION Spr_ktr() MENUITEM 'Метки' END POPUP DEFINE POPUP 'Тарифы' MENUITEM 'Отопление' END POPUP DEFINE POPUP 'Счетчики' MENUITEM 'Отопление' END POPUP DEFINE POPUP 'Печати' MENUITEM 'Расчетные квитки' MENUITEM 'Свод общий' MENUITEM 'Отфильтрованный список' END POPUP DEFINE POPUP 'Оплаты' MENUITEM 'Контроль за месяц' MENUITEM 'Ввод оплат' MENUITEM 'Загрузка оплат' END POPUP DEFINE POPUP 'Обслуживание' MENUITEM 'Архивировать данные' MENUITEM 'Удалить мусор' MENUITEM 'Перейти на следующий месяц' END POPUP DEFINE POPUP 'Помощь' MENUITEM 'О программе' END POPUP END MENU DEFINE SPLITBOX DEFINE TOOLBAR TlBar BUTTONSIZE 64,32 FLAT BUTTON Bt_Exit CAPTION 'Выход' ACTION Form_main.Release END TOOLBAR DEFINE TOOLBAR TlBarls CAPTION Space(35) @ -8,w_main-190 LABEL Lbls VALUE '35409' WIDTH 175 HEIGHT 56 SIZE 32 BOLD FONTCOLOR BLACK TRANSPARENT RIGHTALIGN END TOOLBAR END SPLITBOX DEFINE BROWSE Br_sity ROW 50 ; COL 0 VALUE 1 WIDTH 600 ; HEIGHT 500 WIDTHS {50,200,320} HEADERS {'№','Фамилия','Адрес'} WORKAREA sity FIELDS {'sity->ls','sity->fm','sity->adr'} END BROWSE END WINDOW CENTER WINDOW Form_Main ACTIVATE WINDOW Form_Main RETURN PROCEDURE Spr_ktr() /////////////////////////////////// LOCAL w_kod_ktr := 50, w_naz_ktr := 250 LOCAL w_br := w_kod_ktr + w_naz_ktr LOCAL w_win := w_br + 27, h_win := 412 ktr->(DBGoTop()) DEFINE WINDOW Form_ktr AT 0,0 WIDTH w_win HEIGHT h_win ; TITLE ' Справочник контролёров' CHILD NOSYSMENU ; ON INIT DoMethod('Form_ktr','Test_My','SetFocus') ; // !!!!!! в случае с TsBrowse на Br_ktr фокус NOSIZE NOMAXIMIZE ; ON GOTFOCUS DBSelectArea('ktr') DEFINE SPLITBOX DEFINE TOOLBAR ToolBar_ktr BUTTONSIZE 64,24 FLAT BUTTON Button_Exit CAPTION 'close' ACTION ThisWindow.Release BUTTON Button_Add CAPTION 'new' ACTION ktrModRec('ADD') BUTTON Button_Rpl CAPTION 'edit' ACTION ktrModRec('MOD') BUTTON Button_Del CAPTION 'delete' ACTION ktrModRec('DEL') END TOOLBAR END SPLITBOX /* DEFINE TBROWSE Br_ktr AT 40,0 ALIAS 'ktr' WIDTH w_br+22 HEIGHT h_win-70 ; ON DBLCLICK ktrModRec(Br_ktr) ADD COLUMN TO Br_ktr HEADER 'Код' SIZE w_kod_ktr ; DATA FieldWBlock('kod_ktr', SELECT('ktr')) ADD COLUMN TO Br_ktr HEADER 'Фио' SIZE w_naz_ktr ; DATA FieldWBlock('naz_ktr', SELECT('ktr')) Br_ktr:SetDeleteMode(.T.) Br_ktr:nWheelLines := 1 Br_ktr:lNoResetPos := .F. END TBROWSE */ @ 80, 100 BUTTON Test_My CAPTION 'Test' WIDTH 100 HEIGHT 24 END WINDOW CENTER WINDOW Form_ktr ACTIVATE WINDOW Form_ktr RETURN PROCEDURE ktrAddRec(oBr) ///////////////////////////////// MsgBox(ProcName(), 'Info') /* ktr->(DBAppend()) oBr:SetFocus() oBr:Reset() ktrModRec(oBr) */ RETURN PROCEDURE ktrDelRec(oBr) ///////////////////////////////// MsgBox(ProcName(), 'Info') /* ktr->(DBAppend()) oBr:SetFocus() oBr:Reset() ktrModRec(oBr) */ RETURN PROCEDURE ktrModRec(oBr) //////////////////////////////// LOCAL w_win := 530, h_win := 145 LOCAL w_but := 100, h_but := 30 DEFINE WINDOW Form_ktr_modRec AT 0,0 WIDTH w_win HEIGHT h_win ; TITLE ' Редактирование '+oBr MODAL NOSIZE NOSYSMENU rw := 10 @ rw,50 LABEL Label_kod VALUE 'код' WIDTH 100 RIGHTALIGN TRANSPARENT @ rw,160 GETBOX GetBox_kod VALUE ktr->kod_ktr WIDTH 60 HEIGHT 27 PICTURE "@K 999" rw += 30 @ rw,50 LABEL Label_naz VALUE 'название' WIDTH 100 RIGHTALIGN TRANSPARENT @ rw,160 TEXTBOX TextBox_naz WIDTH 180 VALUE AllTrim(ktr->naz_ktr) DEFINE BUTTONEX Button_Save; ROW h_win-70; COL w_win-(w_but*2)-40; CAPTION 'ok'; WIDTH w_but; HEIGHT h_but ACTION ktrSaveRec(oBr) END BUTTONEX DEFINE BUTTONEX Button_Cansel; ROW h_win-70; COL w_win-w_but-20; CAPTION 'cancel'; WIDTH w_but; HEIGHT h_but ACTION ThisWindow.Release END BUTTONEX END WINDOW CENTER WINDOW Form_ktr_modRec ACTIVATE WINDOW Form_ktr_modRec DoMethod('Form_ktr','SetFocus') // !!!!!!! DoMethod('Form_ktr','Test_My','SetFocus') // !!!!!!! // DoMethod('Form_ktr','Br_ktr','SetFocus') // !!!!!!! в случае с TsBrowse RETURN PROCEDURE ktrSaveRec(oBr) //////////////////////////////// LOCAL poz MsgBox(ProcName(), 'Info') /* REPLACE ktr->kod_ktr WITH Form_ktr_modRec.GetBox_kod.Value, ; ktr->naz_ktr WITH AllTrim(Form_ktr_modRec.TextBox_naz.Value) poz := oBr:nLogicPos() oBr:SetFocus() oBr:Reset() oBr:GoPos(poz,1) oBr:GoPos(poz,1) */ ThisWindow.Release RETURN

alex_II: SergKis пишет: Немного упростил текст. Ситуация была как у вас. Подправил - строки с // !!!!!! . Помогло Большое спасибо за помощь



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