Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Родительская и дочерняя формы [D6, IB6.x]


Gaber ©   (2002-09-09 14:06:00) 

Хочу, чтоб из род. формы MDI приложение открывалась дочерняя форма, из нее еще одна, желательно модально и в нее передавалась некоторая информация из первой дочерней.
Так работает (когда во вторую передается инфо из родительской)

MainUnit1:
procedure TForm1.Button1Click(Sender: TObject);
begin
TForm2.Create(Self);
end;

ChildUnit2:

procedure TForm2.Button1Click(Sender: TObject);
begin
TForm3.Create(Self);
end;

ChildUnit3:

procedure TForm3.FormCreate(Sender: TObject);
begin
Label1.Caption:=Form1.Button1.Caption;
end;

А если так:

procedure TForm3.FormCreate(Sender: TObject);
begin
Label1.Caption:=Form2.Button1.Caption;
end;

Ошибка!


Prooksius   (2002-09-11 10:31:00) [1]

Когда ты создаешь так: TPodr.Create(Self), ты потом не имеешь ссылки на созданную форму. Ты не можешь, например, написать вне созданной формы:
Podr.[какое-то свойство] := [чему-то]
(Хотя внутри класса формы ты можешь все)

Если этого не надо, то можно и так, но потом обязательно Action:=caFree, иначе ее не удалить, AFAIK.


Gaber   (2002-09-11 10:26:00) [2]

Огромное спасибо всем, все получилось.
Хотя надо будет еще разобраться, почему.
=)


Gaber   (2002-09-11 10:20:00) [3]

Извиняюсь за назойливость, но почему надо писать так,

MyModalForm:= TMyModalForm.Create (Application);
try
MyModalForm.ShowModal;
finally
MyModalForm.Free;
end;

Почему нельзя TPodr.Create(Self), и как потом закрыть предыдущую форму, открытую по первому примеру. TPodr.Create(Self) я закрываю Action:=caFree;


ЮЮ   (2002-09-11 09:27:00) [4]

А если не модальная, то также определяешь её параметры после создания, но до Show. A результаты работы тебя не интересуют, раз она не модальная.


Gaber   (2002-09-11 09:10:00) [5]

А если не модальная.


ЮЮ   (2002-09-10 03:06:00) [6]

Label1.Caption:= Form2.Button1.Caption;
Если посмотреть Unit MDIChild формы там нет строчки
Var Form2:TForm2, имеющейся y обычных форм, что совершенно естественно, т.к. этих форм иожет быть много и одной переменной недостаточно. Но и ссылаться на форму вышеописанным способом нельзя.

Добавлю к Val © (09.09.02 17:26)

MyModalForm:= TMyModalForm.Create (Application);
try
//здесь настроить модальную форму
MyModalForm.Label1.Caption...
MyModalForm.ShowModal;
if MyModalForm.modalResult=mrXXX then
begin
//здесь проанализировать модальную форму
if MyModalForm.....
end;
finally
MyModalForm.Free;
end;


Val   (2002-09-09 17:26:00) [7]

модальная форма создается так:
MyModalForm:= TMyModalForm.Create (Application);
try
MyModalForm.ShowModal;
finally
MyModalForm.Free;
end;


Gaber   (2002-09-09 17:00:00) [8]

Да в этом плане все верно, это я для примера привел.


oss   (2002-09-09 15:04:00) [9]

а на Form2 есть Button1 ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо