Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-37660
ikivio
2003-12-26 10:42
2004.01.13
Чтение части файла.


1-37657
Anderson
2003-12-26 18:42
2004.01.13
Как в Мемо узнать число видимых строк?


1-37791
Alibaba
2003-12-27 02:55
2004.01.13
TDateTimePicker


14-37926
Rocks
2003-12-17 21:35
2004.01.13
Устройство для переноса данных


6-37823
Коля
2003-11-09 22:26
2004.01.13
Невезуха с сетью под Windows XP.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский