Главная страница
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.038 c
2-1150311706
STALKER2
2006-06-14 23:01
2006.07.02
TTreeView


2-1149927336
Тимофей Юрьевич
2006-06-10 12:15
2006.07.02
системное меню


15-1149510150
oldman
2006-06-05 16:22
2006.07.02
Валуев защитил титул чемпиона мира.


3-1146733714
comtat
2006-05-04 13:08
2006.07.02
Проблема с кодировкой


2-1150209570
Марина
2006-06-13 18:39
2006.07.02
Сохраниние ячеек таблицы