powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формы
7 сообщений из 7, страница 1 из 1
Формы
    #32291584
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как запустить две формы из prg файла?

Например, у меня форма (ShowWindow=2&& AsTopLevel) на которой две кнопки. В клике первой:
DO test WITH '1',
в клике второй:
DO test WITH '2'.

В Test.prg:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
LPARAMETERS cTitle
form1 = CREATEOBJECT('MyForm')
form1.SHOW
form1.caption=cTitle 
READ EVENTS

DEFINE CLASS MyForm AS Form 
showwindow= 1 &&InTopLevel
PROCEDURE init
   Messagebox(this.caption)
ENDPROC 

PROCEDURE unload
   CLEAR EVENTS
ENDPROC 
ENDDEFINE

Нажимаем первую кнопку - появилась форма с заголовком '1'.
Нажимаем вторую кнопку - первая форма изчезла, вторая не появилась. :(

А я ожидал, что увижу две формы: с заголовком '1' и '2'.
Что тут не так?

Заранее благодарен.
...
Рейтинг: 0 / 0
Формы
    #32291645
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
form1 у тебя объявляется private переменной и после того как отработает prg переменная уничтожается а вместе с ней и объект на которую она ссылается. Тоже самое произойдет если будет написано public form1. Но уже только при втором вызове.

А зачем в unload clear events?
Вообщем на формы созданные из объектов надо держать "живые" ссылки...
...
Рейтинг: 0 / 0
Формы
    #32291648
Фотография NNN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откуда запускается TopLevel Form? Тут явно путаница с READ EVENTS и с переменной form1.
Может проще что-то вроде:
Код: 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.
public MainForm
public form1
public form2
MainForm=createobject('MainForm')
MainForm.Show()
read events

DEFINE CLASS MainForm AS Form 
showwindow= 2 &&InTopLevel
ADD OBJECT command1 AS commandbutton WITH ;
Name =  "Command1" 
ADD OBJECT command2 AS commandbutton WITH ;
Name =  "Command2" 
PROCEDURE unload
   CLEAR EVENTS
ENDPROC 
PROCEDURE command1.Click
 form1=createobject('MyForm','1')
 form1.show()
ENDPROC
PROCEDURE command2.Click
 form2=createobject('MyForm','2')
 form2.show()
ENDPROC
ENDDEFINE

DEFINE CLASS MyForm AS Form 
showwindow= 1 &&InTopLevel
PROCEDURE init
lparameters lCaption
   this.caption=lCaption
ENDPROC 
ENDDEFINE

Код не тестировал, но надеюсь, что основное направление понятно.
...
Рейтинг: 0 / 0
Формы
    #32291729
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главня форма запускалась из scx файла, а дочерные формы из пунктов меню главной формы.
Так вижу, что мне притется переделать главную форму из scx в prg...

И тогда попутный вопрос.

В пункте меню должна быть строка Save.
Как сделать так, чтоб выполнился метод Save активной формы. Т.е. если активная форма 1, то делаем form1.Save, если 2, form2.Save
...
Рейтинг: 0 / 0
Формы
    #32291743
chagoserg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Screen.ActiveForm.Save()
...
Рейтинг: 0 / 0
Формы
    #32292361
Nikolai Kremko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Формы
    #32292370
chagoserg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Nikolai Kremko
;))
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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