Форум: "Основная";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
ВнизНаследование форм: 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c