Текущий архив: 2002.09.30;
Скачать: CL | DM;
Вниз
Родительская и дочерняя формы Найти похожие ветки
← →
Gaber (2002-09-09 14:06) [0]Хочу, чтоб из род. формы 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;
Ошибка!
← →
oss (2002-09-09 15:04) [1]а на Form2 есть Button1 ?
← →
Gaber (2002-09-09 17:00) [2]Да в этом плане все верно, это я для примера привел.
← →
Val (2002-09-09 17:26) [3]модальная форма создается так:
MyModalForm:= TMyModalForm.Create (Application);
try
MyModalForm.ShowModal;
finally
MyModalForm.Free;
end;
← →
ЮЮ (2002-09-10 03:06) [4]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;
← →
Gaber (2002-09-11 09:10) [5]А если не модальная.
← →
ЮЮ (2002-09-11 09:27) [6]А если не модальная, то также определяешь её параметры после создания, но до Show. A результаты работы тебя не интересуют, раз она не модальная.
← →
Gaber (2002-09-11 10:20) [7]Извиняюсь за назойливость, но почему надо писать так,
MyModalForm:= TMyModalForm.Create (Application);
try
MyModalForm.ShowModal;
finally
MyModalForm.Free;
end;
Почему нельзя TPodr.Create(Self), и как потом закрыть предыдущую форму, открытую по первому примеру. TPodr.Create(Self) я закрываю Action:=caFree;
← →
Gaber (2002-09-11 10:26) [8]Огромное спасибо всем, все получилось.
Хотя надо будет еще разобраться, почему.
=)
← →
Prooksius (2002-09-11 10:31) [9]Когда ты создаешь так: TPodr.Create(Self), ты потом не имеешь ссылки на созданную форму. Ты не можешь, например, написать вне созданной формы:
Podr.[какое-то свойство] := [чему-то]
(Хотя внутри класса формы ты можешь все)
Если этого не надо, то можно и так, но потом обязательно Action:=caFree, иначе ее не удалить, AFAIK.
Страницы: 1 вся ветка
Текущий архив: 2002.09.30;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.007 c