![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание формы динамически.
BKV © (2002-07-04 16:25:00)Такой вопрос:
Я динамически создаю свою форму, которую наследую от TForm:
TAddrForm = class(TForm)
Все ее описание поместил в отдельный модуль.
Но при создании формы AddrForm:=TAddrForm.Create(self);
Возникает ошибка в ее перекрытом конструторе : " Resource TAddrForm not found" при вызове inherited Create;
(Create предка перекрыл- тут все нормально)
constructor TAddrForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);!!!!!!ОШИБКА!
FCountry := "";
FAddress := "";
В чем дело- непойму!
Помогите!
Skier (2002-07-04 17:50:00) [1]>BKV
> придется все время его таскать за модулем
За каким модулем ?!
Delphi для новой формы создаст тебе
.DFM файл + NewUnit.PAS (тобиш модуль)
BKV (2002-07-04 17:37:00) [2]Я не хочу использовать .DFM файл, так как придется все время его таскать за модулем.
qube (2002-07-04 17:13:00) [3]
> BKV (04.07.02 17:02)
> То есть, если я не использую DFM file для формы,
> то я создаю ее CreateNew.
> Но как тогда мне проинициализировать ее поля?
Если ты не используешь ДФМ, то сначала тебе нужно вручнуюсоздать все элементы управления на форме. Это раз.
Когда создаешь в IDE Delphi новую форму, как это все обычно делают, все равно создается новый класс, производный от TForm, у которого тоже можно переопределить конструктор (хотя это обычно не нужно, обработка OnCreate дает то же самое). Это два.
BKV (2002-07-04 17:10:00) [4]Да, все нормально.
Огромное спасибо всем!
Кулюкин Олег (2002-07-04 17:08:00) [5]Ошибся я, конечно же просто inherited CreateNew(AOwner)
Skier (2002-07-04 17:06:00) [6]>BKV
А почему ты не хочешь DFM использовать ?
Объяснись.
BKV (2002-07-04 17:02:00) [7]То есть, если я не использую DFM file для формы,
то я создаю ее CreateNew.
Но как тогда мне проинициализировать ее поля?
Кулюкин Олег (2002-07-04 17:00:00) [8]2 BKV
Динамическое создание и наследование - разные вещи.
Вы путаете термины.
2 Игорь Шевченко
:)))))))))))))))))
constructor TAddrForm.Create(AOwner: TComponent);
begin
inherited CreateNew(AOwner , 1);
Далее по тексту..
Skier (2002-07-04 16:53:00) [9]>BKV
Да так же и создавать как создавали.
(только видимо(?) её нужно будет убрать из списка AutoCreate)
Или можно делать так как предлагает Игорь Шевченко ©
qube (2002-07-04 16:53:00) [10]
> BKV (04.07.02 16:47)
> Но какже тогда создавать ее динамически?
Project/Options/.., закладка Forms, убираешь AddrForm1 из списка Auto-Create. И создаешь себе динамически сколько влезет.
BKV (2002-07-04 16:51:00) [11]Но какже тогда создавать ее динамически?
Я ведь могу создать форму просто
Form:=TForm.Create(self);- и некаких проблем.
А переопределенная форма создаваться также не хочет???????????
BKV (2002-07-04 16:47:00) [12]Но какже тогда создавать ее динамически?
Игорь Шевченко (2002-07-04 16:47:00) [13]constructor TAddrForm.Create(AOwner: TComponent);
begin
inherited CreateNew(AOwner);
FCountry := "";
FAddress := "";
Creates and initializes a new form.
constructor CreateNew(AOwner: TComponent; Dummy: Integer = 0); virtual;
Description
Use CreateNew instead of Create to create a form without using the associated .DFM file to initialize it. Always use CreateNew if the TCustomForm descendant is not a TForm object or a descendant of TForm.
С уважением,
Skier (2002-07-04 16:44:00) [14]>BKV
Дело в том, что у твоей формы нет dfm-файла.
Новые формы (в дизайне) создаются так
File|New|Form
После того как ты её создал, то уже можешь обозвать её
TAddrForm и дальше по тексту...