Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Формы / 7 сообщений из 7, страница 1 из 1
13.10.2003, 16:46
    #32291584
lnu
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
13.10.2003, 17:09
    #32291645
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формы
form1 у тебя объявляется private переменной и после того как отработает prg переменная уничтожается а вместе с ней и объект на которую она ссылается. Тоже самое произойдет если будет написано public form1. Но уже только при втором вызове.

А зачем в unload clear events?
Вообщем на формы созданные из объектов надо держать "живые" ссылки...
...
Рейтинг: 0 / 0
13.10.2003, 17:09
    #32291648
NNN
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
13.10.2003, 17:45
    #32291729
lnu
lnu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формы
Главня форма запускалась из scx файла, а дочерные формы из пунктов меню главной формы.
Так вижу, что мне притется переделать главную форму из scx в prg...

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

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


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