powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите! вопрос насчёт форм и ссылок
6 сообщений из 6, страница 1 из 1
помогите! вопрос насчёт форм и ссылок
    #33545484
Саша-7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
допустим у меня активна форма form1 a form2 неактивна но загружена
можно ли в form1 изменять значения form2
например

из form1: form2.grid1.recordsource = .....

работает команда READ EVENTS и формы свободные (не включены в formset)
...
Рейтинг: 0 / 0
помогите! вопрос насчёт форм и ссылок
    #33545494
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
помогите! вопрос насчёт форм и ссылок
    #33546838
Саша-7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы обойтись без классов

Без команды READ EVENTS (просто при запуске одной формы из второй)
внутри второй формы первая видна как объект, на неё можно ссылаться

Но в EXE после мать его READ EVENTS она уже не объект (
...
Рейтинг: 0 / 0
помогите! вопрос насчёт форм и ссылок
    #33547300
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сканируй массив _SCREEN.Forms() или _VFP.Forms() на предмет поиска нужной формы. Потом можешь обратится по найденной ссылке.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
LOCAL loForm, lnI
loForm = NULL
FOR m.lnI= 1  TO _SCREEN.FormCount
	loForm = _SCREEN.Forms(m.lnI)
	IF m.loForm.name = "Form2"
		EXIT
	ENDIF
	loForm = NULL
ENDFOR

IF IsNull(m.loForm) = .F.
	m.loForm.Grid1.RecordSource = ...
ENDIF

Если ты работаешь внутри основного окна FoxPro, т.е. все формы имеют свойство ShowWindow = 0 - In Screen, то можно ускорить поиск по имени формы (по значению свойства Name)

Код: plaintext
1.
2.
3.
4.
5.
6.
IF TYPE("_VFP.Forms('MyForm')")="U"  
	* Формы со свойством name = MyForm не существует (не открыта)  
ELSE
	m.loForm = _VFP.Forms('MyForm')
	m.loForm.Grid1.RecordSource = ...
ENDIF

Обратите внимание, что здесь используется системная переменная _VFP. Использовать аналогичный синтаксис с системной переменной _SCREEN - не получиться. Коллекция _SCREEN.Forms() не принимает в качестве параметра символьные значения. Только числовые.
...
Рейтинг: 0 / 0
помогите! вопрос насчёт форм и ссылок
    #33548157
Саша-7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо - то что надо
...
Рейтинг: 0 / 0
помогите! вопрос насчёт форм и ссылок
    #33553681
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Саша!

> Хотелось бы обойтись без классов

Да ради бога - главное не в классах, а в том что нельзя обращаться по неявно
создаваемой переменной-ссылке типа form2 - нужно либо ЯВНО создавать при
запуске формы Public переменную и хранить в ней ссылку на эту форму (а
значит автоматом запрещаем запускать более 1 экземпляра формы, иначе негде
хранить ссылки) - и это весьма неудобно и сложно в отслеживании, либо
использовать для ссылок между формами другие механизмы - например свойства
самих этих форм, как и показано в примере.
У тебя скорее всего классический случай потери этой самой неявно созданной
переменной-ссылки - если в командном окне написать DO FORM то переменная
будет Public, если в программе написать DO FORM - то она будет Private и
уничтожится как только завершится та процедура, где и написана строчка DO
FORM.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите! вопрос насчёт форм и ссылок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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