Форум: "Начинающим";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
ВнизКак передать в создаваемую форму параметр, как в функцию Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.017 c