powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / передать фокус из формы на другую форму
17 сообщений из 17, страница 1 из 1
передать фокус из формы на другую форму
    #34041465
tupoyuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!Помогите пожалуста если не в лом..Дело в следующем:есть форма1, на ней техтвох1 и есть еще форма2 с техтвох2.Из форм1 вызывается форм2, отрабатывается, и тербуется после того как форм2.релиз, фокус перешел именно в форм1.техтвох1. Вот например на методе форм2.unload ставил форм1.техтвох1.setfocus, но это непрокатывает...другие идеи нехотят посетить....Спасибо всем!
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34041497
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От Игоря Королева.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
PUBLIC goFrmMain  
  goFrmMain = CREATEOBJECT("frmMain")  
  m.goFrmMain.Show()  
    
  DEFINE CLASS frmMain AS Form  
  DataSession =  2   
  Caption = "Main"  
  Height =  450   
  Width =  300   
  oChild = .F.  
  AlwaysOnTop  = .t.
  
  ADD OBJECT grd1 AS Grid WITH ;  
   RecordSource = "tmp1", Height =  400 , Width =  300   
  ADD OBJECT cmdCall AS Commandbutton WITH ;  
   Caption = "Child", Top =  410 , Height =  30 , ;  
   Left =  50 , Width =  200   
    
  PROCEDURE Load  
   CREATE CURSOR tmp1 (nID I)  
   LOCAL ln1  
   FOR ln1 =  1  TO  10   
    INSERT INTO tmp1 (nID) VALUES (m.ln1)  
   ENDFOR  
   GO TOP IN tmp1  
  ENDPROC  
  PROCEDURE grd1.AfterRowColChange  
   LPARAMETERS tnColIndex  
   IF TYPE("ThisForm.oChild.Name") = "C"  
    ThisForm.oChild.Refresh()  
   ENDIF  
  ENDPROC  
  PROCEDURE cmdCall.Click  
   IF TYPE("ThisForm.oChild.Name") # "C"  
    ThisForm.oChild = CREATEOBJECT("frmChild")  
   ENDIF  
   ThisForm.oChild.Show()  
  ENDPROC  
  ENDDEFINE  
    
  DEFINE CLASS frmChild AS Form  
  DataSession =  1   
  Caption = "Child"  
  Width =  100   
  Height =  90   
  Top =  100   
  Left =  320   

  ADD OBJECT txt1 AS Textbox WITH ;  
  ControlSource = "tmp1.nID", Width =  80 , Height =  20 , ;  
   Top =  10 , Left =  10   
  ADD OBJECT cmdClose AS Commandbutton WITH ;  
   Caption = "Close", Top =  50 , Height =  30 , ;  
   Left =  10 , Width =  80   
    
  PROCEDURE cmdClose.Click  
   ThisForm.Release()  
  ENDPROC  
  ENDDEFINE
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34041652
Jose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в форм1.activate
напиши
форм1.техтвох1.setfocus()
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34042206
tupoyuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо джозе, но дело в том что на это я пойду лишь в крайнем случае(если не добьюсь своего), так как нужно чтобы фокус передавался только из форм2--именно из форм2...я передавал значение из мтода унлоуд форм2 и фокус-- в техт на форм1 и что обидно значение передается(это я для проверки значение передавал) а фокус нет...
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34042285
tupoyuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо ПаулВист,но и в приведенном вами скрипте я ненашел ответа на свой вопрос(я новичок в фоксе и вообще в компьютерах) но конкретно как передать фокус я здесь ненашел.С уважением...
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34042397
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>но конкретно как передать фокус я здесь ненашел
В том методе, где вызываешь форму 2 и делаешь сет фокус:

DO FORM form2
ThisForm.Text2.SetFocus
RETURN
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34042791
BMJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMJ
Гость
Здравствуйте!
Есть аналогичная проблема, при последнем варианте выдается: на форме куда передается фокус, нет объекта с таким именем, хотя он есть, то есть схема
DO FORM
thisform...setfocus() не перключает на новую форму.
Можно ли явно указать FORM1.text1.SETFOCUS ?
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34046280
tupoyuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо ребята за советы,но мож я тупой--где то что то не досмотрел, но ничего не выходит, после закрытия форм2 фокус остается в форм1.техт1, где и был до активизации форм2. Попробовал по совету барна невыходит, и как бмджей говорит(указать явно) в вызывающем форм2 методе невыходит...мда....ладно может что нить придумаю..НО ради ИНТЕРЕСА!!!!Неужели это невозможно?(передать фокус)
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34046773
qwertyqwerty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tupoyuserЗдравствуйте!Помогите пожалуста если не в лом..Дело в следующем:есть форма1, на ней техтвох1 и есть еще форма2 с техтвох2.Из форм1 вызывается форм2, отрабатывается, и тербуется после того как форм2.релиз, фокус перешел именно в форм1.техтвох1. Вот например на методе форм2.unload ставил форм1.техтвох1.setfocus, но это непрокатывает...другие идеи нехотят посетить....Спасибо всем!

Спасибо ребята за советы,но мож я тупой--где то что то не досмотрел, но ничего не выходит, после закрытия форм2 фокус остается в форм1.техт1, где и был до активизации форм2. Попробовал по совету барна невыходит, и как бмджей говорит(указать явно) в вызывающем форм2 методе невыходит...мда....ладно может что нить придумаю..НО ради ИНТЕРЕСА!!!!Неужели это невозможно?(передать фокус)


Из форм1 вызывается форм2 - откуда вызывается?
1) Там много откуда можно вызвать.
2) Фокус может остаться в форм1.техт1,
только если не выполняется valid event
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34046879
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай форму в студию, а то выпытывать по капле откуда вызывается, из какого метода и так далее боюсь будет долго;)

BMJЕсть аналогичная проблема, при последнем варианте выдается: на форме куда передается фокус, нет объекта с таким именем, хотя он есть, то есть схема
DO FORM
thisform...setfocus() не перключает на новую форму.
Можно ли явно указать FORM1.text1.SETFOCUS ?
А вызываемая форма модальная? А то предложена схема перевода фокуса внутри ОДНОЙ формы после ВОЗВРАТА из второй.

А прямое адресование к свойству возможно, но для этого нужна правильная ссылка на форму. Свойство Name формы таковым не является. Нужно искать или в колекции _VFP.Forms() или явно присваивать ссылку на форму переменой. Читай про конструкцию NAME VarName LINKED в операторе DO FORM
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34047936
Black2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Один из способов решения проблемы передать в форм2 ссылку на форм1 вот так:
DO FORM form2.scx WITH thisform

Тогда в форм2 её надо принять. Для этого к свойствам форм2 нужно добавить свойство, например, parent_form
Меню Form->Edit Property Method->New Property
Дописать в начало Init форм2 вот этот текст:
PROCEDURE Init
LPARAMETERS parent_
thisform.parent_form= parent_
ENDPROC
Тогда в Destroy форм2 написать вот так
PROCEDURE Destroy
IF TYPE("thisform.parent_")=="O"
thisform.parent_form.Text1.SetFocus()
endif
ENDPROC
Вот и все
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34048013
Black2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения в методе Destroy ошибся вот так совсем правильно
PROCEDURE Destroy
IF TYPE("thisform.parent_form")=="O" AND !ISNULL(thisform.parent_form)
thisform.parent_form.Text2.SetFocus()
endif
ENDPROC
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34048542
BMJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMJ
Гость
Спасибо.
Попробую.
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34049111
tupoyuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот в этой папке лежат форм1--sourc_dat, форм2--str_num, и прожект,--стыдно показывать...... ОГРОМНОЕ спасибо за помощь!
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34049113
tupoyuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34049260
Black2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел проект. Что надо сделать?

1.Форма sourc_dat
PROCEDURE Activate
* Если фокус устанавливается из формы str_num, то str_num будет типа Object
IF TYPE("str_num")<>"O"
thisform.text3.setfocus
endif
ENDPROC

PROCEDURE Text1.GotFocus
Do FORM str_num WITH thisform
ENDPROC

2.Форма str_num
Unload я вообще очистил

PROCEDURE Destroy
sourc_dat.text2.setfocus()
ENDPROC
PROCEDURE Text1.LostFocus
sourc_dat.text1.value=thisform.text1.Value
sourc_dat.text2.value='читос!!!'
sourc_dat.text2.refresh
*!* sourc_dat.text2.setfocus() && Вот здесь не надо в Destroy сработает
thisform.release
ENDPROC

У меня вот так все заработало.Удачи
...
Рейтинг: 0 / 0
передать фокус из формы на другую форму
    #34049272
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2tupoyuser
Ваще сама по себе конструкция страная - ты вызываешь из GetFocus форму и сразу передаешь управление на другой контрол. Спрашивается - зачем тебе ваще это текстбокс - ты же в него не попадешь никогда?

Теперь по поводу ошибки - у тебя стоит
Код: plaintext
1.
2.
DO FORM str_num
sourc_dat.Text2.SetFocus
RETURN
Но sourc_dat это всего навсего название файла формы и к сылке на объект формы он никакго отношения не имеет. Пиши ThisForm.Text2.SetFocus и усе будет хорошо
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / передать фокус из формы на другую форму
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]