Вниз
Скачать: 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.028 c
15-1149227089
Ру
2006-06-02 09:44
2006.07.02
Чем восстановить данные на винте.


15-1149493560
patient
2006-06-05 11:46
2006.07.02
Переход к определенной ветке реестра из командной строки


3-1146803964
sanchos
2006-05-05 08:39
2006.07.02
Суммирование вычисляемого поля в ADOTable


15-1149576772
tesseract
2006-06-06 10:52
2006.07.02
решил наконец сайт cправить


2-1150039565
learner
2006-06-11 19:26
2006.07.02
Правильное ведение лога с использованием нитей




   Наверх