Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.02 c
1-98194
Dimich1978
2002-09-18 11:57
2002.09.30
StringGrid


1-98118
atmospheric
2002-09-19 23:01
2002.09.30
Timer


14-98301
Николай Быков
2002-09-04 16:44
2002.09.30
Давайте издеваться над DiamondSoft Group здесь!!!


3-97952
wed
2002-09-07 18:53
2002.09.30
Как сгруппировать данные по неделям ?


3-97969
volph2
2002-09-09 12:30
2002.09.30
Как в dxDBGrid сделать типа как Locate?