![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать в создаваемую форму параметр, как в функцию
Layner © (2006-06-09 08:50:00)Здравствуйте! Возможно ли сделать такой трюк, создаю форму
Application.CreateForm(Tfquestion, fquestion);
fquestion.ShowModal;
И надо как то передать этой форме параметр, как в функцию или процедуру. Чтобы на этой fquestionпо OnCreateсоздались какие то элементы в нужном количестве. А потом уже сделать ShowModal.
Выход есть например такой, у меня есть mainform, в ней объявленна переменная, этой переменной я присвоиваю занчение, и затем, при создании fquestion, читаю fquestionиз mainform, данные, которые надо казать в fquestion, т.е. получается как бы без третьей формы(unit..) не обойтись, служащей в качестве "диспетчера". А вот можно ли обойтись без этого "диспетчера"?
Игорь Шевченко (2006-06-09 11:43:00) [1]Сергей М. © (09.06.06 10:52) [8]
Да, конечно :)
Сергей М. (2006-06-09 10:52:00) [2]
> reintroduce;
А еще лучше
constructor Create Special(AOwner: TComponent; SomeParameter: TSomeType);
Игорь Шевченко (2006-06-09 10:47:00) [3]
> constructor Create(AOwner: TComponent; SomeParameter: TSomeType);
reintroduce;
Ega23 (2006-06-09 10:45:00) [4]
> Спасибо, разобрался. Есть ещё такой один нюанс, если в fquestion.
> OnCreate написать
> fquestion.Width:=600;
> fquestion.Height:=600;
Внутри методов класса можешь Self использовать вместо имени объекта fquestion
Сергей М. (2006-06-09 10:39:00) [5]
> Layner © (09.06.06 10:27) [4]
Событие OnCreate возникает еще дотого как ссылка на созданную форму будет записана в переменную fquestion, потому и
> вылетает AccesVial
Layner (2006-06-09 10:27:00) [6]Спасибо, разобрался. Есть ещё такой один нюанс, если в fquestion.OnCreateнаписать
fquestion.Width:=600;
fquestion.Height:=600;
То вылетает AccesVial..
А если в конструкторе написать
Width:=600;
Height:=600;
То все ок. :)
ЮЮ (2006-06-09 10:02:00) [7]var
somePar: TSomeType;
fquestion: Tfquestion;
begin
...
somePar := ....
fquestion := Tfquestion.Create(Application{можно nill}, somePar);
try
fquestion.ShowModal;
...
finally
fquestion.Free;
end;
Layner (2006-06-09 09:39:00) [8]Сергей, спасибо за исчерпывающий ответ, все понял, а как ещё создать эту самую форму, т.е. как ее вызвать? Раньше вызывал как в коде [1], а сейчас как ее вызвать?
Сергей М. (2006-06-09 09:29:00) [9]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;