Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как создать frame


Автор: dsf 26.5.2006, 16:07
Создаю класс TMyFrame, наследник TFrame. После чего пытаюсь создать экземляр данного класса (TMyFrame), в другом Unit'e. Но во время выполнения приложения происходит ошибка:
... Resource TMyFrame not found ...
Я так понимаю, что это происходит из-за отсутствия *.dfm модуля связанного с классом TMyFrame.
Поэтому возникает вопрос как правильно создать frame (у которого нет dfm файла) в run-time. 

Автор: Snowy 26.5.2006, 16:21
Не делай наследника - создавай от TFrame.
Но, если всё же хочется наследника, то создай пустой dfm - 0 байт. 

Автор: _hunter 26.5.2006, 16:25
Цитата(dsf @  26.5.2006,  16:07 Найти цитируемый пост)
Создаю класс TMyFrame, наследник TFrame. 

вот этот код показывай 

Автор: dsf 26.5.2006, 16:31
Цитата
Не делай наследника - создавай от TFrame.

Делаю примерно следующее:
Код

type
    TMyFrame = class(TFrame)
    private
        {Здесь методы...}
    end;

А в другом Unit'e делаю так:
Код

var
    _myFrame : TMyFrame;
begin
    _myFrame := TMyFrame.Create(Self);
    {...}
    _myFrame.Free;
end;

И в том месте где я вызываю конструктор и происходит исключение. (При создании формы данную проблему решал, путем вызова метода CreateNew).  

Автор: Snowy 26.5.2006, 16:46
Можно обмануть дельфю:
Код

type    
    TFrame = class(Forms.TFrame)    
    private    
        {Здесь методы...}    
    end;

Код

var    
    _myFrame : Unit8.TFrame;    
begin    
    _myFrame := Unit8.TFrame.Create(Self);
    {...}    
    _myFrame.Free;    
end;
Если у твоего фрейма имя класса будет TFrame, то она не будет пытаться грузить ресурсы.

P.S. Unit8 - имя твоего юнита, где ты описываешь свой фрейм.

Добавлено @ 16:50 
А нет. Соврал. Проверка не на имя, а на класс Forms.TFrame.
Тогда никак.
Создавай пустой dfm файл.  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)