Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.02;
Скачать: 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 вся ветка

Текущий архив: 2006.07.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
15-1149513475
infom
2006-06-05 17:17
2006.07.02
Компоненты для работы с большими целыми числами.


11-1129697831
Vladimir Kladov
2005-10-19 08:57
2006.07.02
Версия 2.17


11-1129730250
Dmitry Galin
2005-10-19 17:57
2006.07.02
KOLPrinters


2-1150186786
Тимофей Юрьевич
2006-06-13 12:19
2006.07.02
движение формы


2-1149706046
Dr. Andrew
2006-06-07 22:47
2006.07.02
Скрол. ListBox1, чтоб показ. записи из Списка(1000000) порциями?