Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1149483514
Ega23
2006-06-05 08:58
2006.07.02
С Днём рождения! 4 июня


2-1149864309
VitV
2006-06-09 18:45
2006.07.02
"Привязка" клавиши к кнопке.


2-1150120811
nickhilo
2006-06-12 18:00
2006.07.02
Использование плагина docfile far а в проектах на delphi.


3-1146725967
Серебров Евгений Леонидович
2006-05-04 10:59
2006.07.02
База Данных


2-1149931923
13
2006-06-10 13:32
2006.07.02
активный закладка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский