Вниз
Скачать: CL | DM;

Как передать в создаваемую форму параметр, как в функцию   Найти похожие ветки 

 
Layner ©   (2006-06-09 08:50) [0]

Здравствуйте! Возможно ли сделать такой трюк, создаю форму
Application.CreateForm(Tfquestion, fquestion);
fquestion.ShowModal;


И надо как то передать этой форме параметр, как в функцию или процедуру. Чтобы на этой fquestion по OnCreate создались какие то элементы в нужном количестве. А потом уже сделать ShowModal.

Выход есть например такой, у меня есть mainform, в ней объявленна переменная, этой переменной я присвоиваю занчение, и затем, при создании fquestion, читаю fquestion из mainform, данные, которые надо казать в fquestion, т.е. получается как бы без третьей формы(unit..) не обойтись, служащей в качестве "диспетчера". А вот можно ли обойтись без этого "диспетчера"?


 
Сергей М. ©   (2006-06-09 09:29) [1]

type

Tfquestion = class(TForm)
private
..
 FParameter: TSomeType;
..
public
..
 constructor Create(AOwner: TComponent; SomeParameter: TSomeType);
..
end;

..

constructor Tfquestion.Create(AOwner: TComponent; SomeParameter: TSomeType);
begin
 inherited Create(AOwner);
 FParameter := SomeParameter;
end;


 
Layner ©   (2006-06-09 09:39) [2]

Сергей, спасибо за исчерпывающий ответ, все понял, а как ещё создать эту самую форму, т.е. как ее вызвать? Раньше вызывал как в коде [1], а сейчас как ее вызвать?


 
ЮЮ ©   (2006-06-09 10:02) [3]

var
 somePar: TSomeType;
 fquestion: Tfquestion;
begin
...

 somePar := ....
 fquestion := Tfquestion.Create(Application{можно nill}, somePar);
 try
   fquestion.ShowModal;
   ...
 finally
   fquestion.Free;
 end;


 
Layner ©   (2006-06-09 10:27) [4]

Спасибо, разобрался. Есть ещё такой один нюанс, если в fquestion.OnCreate написать
fquestion.Width:=600;
fquestion.Height:=600;

То вылетает AccesVial..
А если в конструкторе написать
Width:=600;
Height:=600;
То все ок. :)


 
Сергей М. ©   (2006-06-09 10:39) [5]


> Layner ©   (09.06.06 10:27) [4]


Событие OnCreate возникает еще до того как ссылка на созданную форму будет записана в переменную fquestion, потому и
> вылетает AccesVial


 
Ega23 ©   (2006-06-09 10:45) [6]


> Спасибо, разобрался. Есть ещё такой один нюанс, если в fquestion.
> OnCreate написать
> fquestion.Width:=600;
> fquestion.Height:=600;


Внутри методов класса можешь Self использовать вместо имени объекта fquestion


 
Игорь Шевченко ©   (2006-06-09 10:47) [7]


>  constructor Create(AOwner: TComponent; SomeParameter: TSomeType);


reintroduce;


 
Сергей М. ©   (2006-06-09 10:52) [8]


> reintroduce;


А еще лучше

constructor CreateSpecial(AOwner: TComponent; SomeParameter: TSomeType);


 
Игорь Шевченко ©   (2006-06-09 11:43) [9]

Сергей М. ©   (09.06.06 10:52) [8]

Да, конечно :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.027 c
6-1140291759
Jimmy
2006-02-18 22:42
2006.07.02
Игра под модем


1-1148280945
deltav1
2006-05-22 10:55
2006.07.02
TTimer


2-1149916577
Foccer
2006-06-10 09:16
2006.07.02
Как узнать создан ли объект


10-1120635105
AbrosimovA
2005-07-06 11:31
2006.07.02
Требуется помощь по IConnectionPointContainer


11-1129729491
Dmitry Galin
2005-10-19 17:44
2006.07.02
KOL & BDS 2005?




   Наверх