Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизСоздание формы динамически. Найти похожие ветки
← →
BKV (2002-07-04 16:25) [0]Такой вопрос:
Я динамически создаю свою форму, которую наследую от 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 16:44) [1]>BKV
Дело в том, что у твоей формы нет dfm-файла.
Новые формы (в дизайне) создаются так
File|New|Form
После того как ты её создал, то уже можешь обозвать её
TAddrForm и дальше по тексту...
← →
BKV (2002-07-04 16:47) [2]Но какже тогда создавать ее динамически?
← →
Игорь Шевченко (2002-07-04 16:47) [3]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.
С уважением,
← →
BKV (2002-07-04 16:51) [4]Но какже тогда создавать ее динамически?
Я ведь могу создать форму просто
Form:=TForm.Create(self);- и некаких проблем.
А переопределенная форма создаваться также не хочет???????????
← →
Skier (2002-07-04 16:53) [5]>BKV
Да так же и создавать как создавали.
(только видимо(?) её нужно будет убрать из списка AutoCreate)
Или можно делать так как предлагает Игорь Шевченко ©
← →
qube (2002-07-04 16:53) [6]
> BKV (04.07.02 16:47)
> Но какже тогда создавать ее динамически?
Project/Options/.., закладка Forms, убираешь AddrForm1 из списка Auto-Create. И создаешь себе динамически сколько влезет.
← →
Кулюкин Олег (2002-07-04 17:00) [7]2 BKV
Динамическое создание и наследование - разные вещи.
Вы путаете термины.
2 Игорь Шевченко
:)))))))))))))))))
constructor TAddrForm.Create(AOwner: TComponent);
begin
inherited CreateNew(AOwner , 1);
Далее по тексту..
← →
BKV (2002-07-04 17:02) [8]То есть, если я не использую DFM file для формы,
то я создаю ее CreateNew.
Но как тогда мне проинициализировать ее поля?
← →
Skier (2002-07-04 17:06) [9]>BKV
А почему ты не хочешь DFM использовать ?
Объяснись.
← →
Кулюкин Олег (2002-07-04 17:08) [10]Ошибся я, конечно же просто inherited CreateNew(AOwner)
← →
BKV (2002-07-04 17:10) [11]Да, все нормально.
Огромное спасибо всем!
← →
qube (2002-07-04 17:13) [12]
> BKV (04.07.02 17:02)
> То есть, если я не использую DFM file для формы,
> то я создаю ее CreateNew.
> Но как тогда мне проинициализировать ее поля?
Если ты не используешь ДФМ, то сначала тебе нужно вручную создать все элементы управления на форме. Это раз.
Когда создаешь в IDE Delphi новую форму, как это все обычно делают, все равно создается новый класс, производный от TForm, у которого тоже можно переопределить конструктор (хотя это обычно не нужно, обработка OnCreate дает то же самое). Это два.
← →
BKV (2002-07-04 17:37) [13]Я не хочу использовать .DFM файл, так как придется все время его таскать за модулем.
← →
Skier (2002-07-04 17:50) [14]>BKV
> придется все время его таскать за модулем
За каким модулем ?!
Delphi для новой формы создаст тебе
.DFM файл + NewUnit.PAS (тобиш модуль)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c