Автор | Сообщение |
|
| |
Пост N: 85
Зарегистрирован: 12.07.06
|
|
Отправлено: 15.03.13 06:28. Заголовок: Передача фокуса между окнами
Давно уже столкнулся с этой проблемой, всё не доходили руки до её решения На MAIN-окне есть browse. Из главной формы вызываются CHILD-окна со справочниками, из справочников вызываются MODAL-окна для корректировки этих справочников. Проблема в том, что самое первое закрытие MODAL-окна передает фокус в browse на MAIN-окне, все последующие вызовы MODAL-окна уже возвращают фокус в CHILD-окно. И так продолжается до закрытия CHILD-окна, если после этого снова открыть CHILD-окно, ситуация повторяется. Никакие манипуляции с SetFocus'ом не помогли
| |
|
Ответов - 12
[только новые]
|
|
|
| |
Пост N: 170
Зарегистрирован: 17.06.10
|
|
Отправлено: 15.03.13 09:00. Заголовок: Сделать бровс disabl..
Сделать бровс disable. Ну а при закрытии child-окна, соответственно, enable
| |
|
|
| |
Пост N: 86
Зарегистрирован: 12.07.06
|
|
Отправлено: 15.03.13 09:31. Заголовок: fil пишет: Сделать ..
fil пишет: цитата: | Сделать бровс disable. Ну а при закрытии child-окна, соответственно, enable |
| В этом случае фокус получает само окно, browse тут приведен для примера, там может быть что угодно
| |
|
|
| |
Пост N: 171
Зарегистрирован: 17.06.10
|
|
Отправлено: 15.03.13 09:38. Заголовок: Ну так и окно disabl..
Ну так и окно disable
| |
|
|
| постоянный участник
|
Пост N: 163
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.03.13 15:20. Заголовок: Alex_II пишет:Никаки..
Alex_II пишет: цитата: | Никакие манипуляции с SetFocus'ом не помогли |
| Попробуйте перед MODAL следующее: 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 ) ... На MDI окнах это помогло.
| |
|
|
| |
Пост N: 87
Зарегистрирован: 12.07.06
|
|
Отправлено: 16.03.13 08:41. Заголовок: SergKis пишет: _HMG..
SergKis пишет: цитата: | _HMG_InplaceParentHandle := hParent |
| Увы, не помогло
| |
|
|
| постоянный участник
|
Пост N: 164
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.03.13 12:21. Заголовок: alex_II пишет:Увы, н..
alex_II пишет: Попробуйте еще так: Скрытый текст
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
| Нам такие манипуляции помогли, правда один раз на новом child mdi мелькание mdi main окна происходит (на медленной PC заметно глазу), но фокус удерживается как надо.
| |
|
|
| |
Пост N: 88
Зарегистрирован: 12.07.06
|
|
Отправлено: 19.03.13 07:19. Заголовок: SergKis пишет: Нам ..
SergKis пишет: цитата: | Нам такие манипуляции помогли, правда один раз на новом child mdi мелькание mdi main окна происходит (на медленной PC заметно глазу), но фокус удерживается как надо. |
| Опять неудача, очевидно у MDI-окон свой механизм передачи фокуса
| |
|
|
| |
Пост N: 172
Зарегистрирован: 17.06.10
|
|
Отправлено: 19.03.13 09:37. Заголовок: Можно попробовать по..
Можно попробовать посадить SetFocus() на обработчик перемещения указателя мыши по окну
| |
|
|
| постоянный участник
|
Пост N: 165
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.03.13 11:43. Заголовок: alex_II пишет:Опять ..
alex_II пишет: Если можно, выложите пример, где стабильно "самое первое закрытие MODAL-окна передает фокус в browse на MAIN-окне", потестирую у себя - возможно мы у себя еще что-то правили на эту тему.
| |
|
|
| |
Пост N: 89
Зарегистрирован: 12.07.06
|
|
Отправлено: 19.03.13 18:12. Заголовок: SergKis пишет: Если..
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,
|
| |
|
|
| постоянный участник
|
Пост N: 168
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.03.13 20:30. Заголовок: alex_II пишет:Выклад..
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
|
| |
|
|
|
| |
Пост N: 90
Зарегистрирован: 12.07.06
|
|
Отправлено: 20.03.13 11:53. Заголовок: SergKis пишет: Немн..
SergKis пишет: цитата: | Немного упростил текст. Ситуация была как у вас. Подправил - строки с // !!!!!! . |
| Помогло Большое спасибо за помощь
| |
|
|
|