Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.13;
Скачать: CL | DM;

Вниз

Наследование форм: EResNotFound   Найти похожие ветки 

 
Makhanev A.S. ©   (2003-12-26 18:56) [0]

Ругается на отсутсвие файла ресурсов.
Как грамотно организовать динамическое создание форм, наследованных от TForm?
Нужно делать dfm? Можно ли без него?

type TMyForm = class(TForm);

procedure TForm1.Button1Click(Sender: TObject);
begin
TMyForm.Create(Application.MainForm);
end;


 
BOA_KAA ©   (2003-12-26 19:03) [1]

MyForm:=TMyForm.Create(...);


 
Юрий Федоров ©   (2003-12-26 19:11) [2]

Если они отличаются по компонентам - лучше делать в разных юнитах, соответственно для каждого свой dfm.


 
Makhanev A.S. ©   (2003-12-26 19:43) [3]


> BOA_KAA © (26.12.03 19:03) [1]
> MyForm:=TMyForm.Create(...);

Причём тут это????
Я просто показал, что создаю объект формы.


> Юрий Федоров © (26.12.03 19:11) [2]

Просто как-то по инерции привык к обычной методологии... А тут придется dfm делать...
Чтож, буду делать, спасибо за совет.


 
Юрий Зотов ©   (2003-12-26 22:07) [4]

> Makhanev A.S. © (26.12.03 18:56)

Если на форме нет design-time компонентов, то DFM не нужен. Тогда можно (и даже нужно) удалить директиву $R, а форму создавать через CreateNew - ошибки не будет (CreateNew не грузит ресурсы). В этом случае я бы даже переписал у формы Create, а в нем вызывал бы CreateNew (вместо inherited Create).

Если же design-time компоненты на форме есть, то, конечно, без DFM не обойтись.


 
Makhanev A.S. ©   (2003-12-27 01:26) [5]


> Юрий Зотов © (26.12.03 22:07) [4]

Спасибо за ответ.
Теперь понятно, как создать форму в design-time без ресурсов.

Но вот мне пока что больше нравится делать форму в design-time, а потом грузить. У меня так быстрее получается.


 
Юрий Зотов ©   (2003-12-27 01:34) [6]

> Makhanev A.S. © (27.12.03 01:26) [5]

Так, может быть, Вам просто нужно использовать репозиторий?


 
Makhanev A.S. ©   (2003-12-27 02:00) [7]


> Юрий Зотов © (27.12.03 01:34) [6]

Вряд ли.
Суть вот в чём:
Я как-то спрашивал про разбиение/склеивание проектов.
Сошлись на использовании кмпонентов.
Один из компонентов должен показывать окна одного класса(формы) (моего), динамически их создавая.
Беру форму, делаю дизайнером с использованием dfm.
Подключаю ее к компоненту - всё устраивает.
Если нужно менять расположение контролов/добавить/удалить - легко опять же в design-time реализуется.
Форма используется только в этом проекте - поэтому явного смысла в Object Repository не вижу.


 
Думкин ©   (2003-12-27 07:16) [8]

> [7] Makhanev A.S. © (27.12.03 02:00)

При работе в дизайн-тайм *.dfm создается автоматически, и если модуль с классом формы используется в проекте, то все это вписывается в компилированный файл.
Затем на основании класса формы - мы можем создавать динамически сколько угодно ее экземпляров, которые будут использовать исходные ресурсы.

При этом (если это имеет место), то автоматическое создание одного экземпляра в *.dpr, можно исключить, - например просто убрав форму из проекта, а ссылки на нужный модуль - в нужных местах.

var FF : TForm2;
FF := TForm2.Create(Self);


где TForm2 - это класс вашей формы, которую вы можете меняеть в дизайн-тайм.


 
Думкин ©   (2003-12-27 07:24) [9]

Если же вы не хотите, включать ресурсы формы в EXE-файл, то где-то они все-таки должны быть. Форма без ресурса - пустая(созданная CreateNew). И если вы хотите ее наполнить - то без файла в котором эти ресурсы хранятся - никак.


 
Makhanev A.S. ©   (2003-12-27 12:56) [10]


> Думкин © (27.12.03 07:16) [8]

Именно так и делаю.


> Думкин © (27.12.03 07:24) [9]

ясно.



Страницы: 1 вся ветка

Текущий архив: 2004.01.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
3-37556
md
2003-12-15 15:31
2004.01.13
Filds


3-37534
denis24
2003-12-16 11:00
2004.01.13
AdoQuery.close


1-37729
Reeves
2003-12-29 19:29
2004.01.13
Необходимо для стандартного компонента ListBox сделать следующие


9-37486
reticon
2003-06-22 19:25
2004.01.13
DirectX help


1-37613
Byte
2003-12-24 13:49
2004.01.13
Как зарегистрировать для своего компонента ComponentEditor от дру