Форум: "Основная";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];
ВнизПроблемы с компонентом с Ancestor от TForm Найти похожие ветки
← →
NetKnight (2003-03-15 12:44) [0]Хочу сделать компонент-форму под свои нужды, но почему-то в этом участке происходит эксепшн
constructor TNKForm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDataLink:=TDataLink.Create;
end;
Когда пытается вызвать метод Create выдаёт ошибку: "Project Project1.exe raised exception class EResNotFound with message "Resourse TNKForm not found". Proccess stopped..."
Покопался в исходниках TForm и TCustomForm и нашёл следующую вещь:
constructor TCustomForm.Create(AOwner: TComponent);
begin
GlobalNameSpace.BeginWrite;
try
CreateNew(AOwner);
if (ClassType <> TForm) and not (csDesigning in ComponentState) then
begin
Include(FFormState, fsCreating);
try
if not InitInheritedComponent(Self, TForm) then
raise EResNotFound.CreateFmt(SResNotFound, [ClassName]);
finally
Exclude(FFormState, fsCreating);
end;
if OldCreateOrder then DoCreate;
end;
finally
GlobalNameSpace.EndWrite;
end;
end;
if not InitInheritedComponent(Self, TForm) then
raise EResNotFound.CreateFmt(SResNotFound, [ClassName]); - вот где происходит исключение, но почему ??!
Кто-нить может помочь ?
← →
Юрий Зотов (2003-03-15 15:09) [1]Вероятно, отсутствует директива {$R *.RES}. Добавьте ее и используйте репозиторий.
← →
NetKnight (2003-03-17 00:55) [2]А какой res ? Он же файл ресурса тогда искать будет! Всё должно кодом выполнятся..
← →
Юрий Зотов (2003-03-17 02:27) [3]Именно. InitInheritedComponent ищет ресурсы и не находит их. Отсюда и ошибка.
Если ресурсы Вашей форме не нужны - переписывайте конструктор. Только учтите, что после этого придется забыть об использовании визуального проектирования такой формы в design-time, простого набрасывании на нее компонентов и пр. Все, как Вы и сказали, придется делать кодом. И я полагаю, что объем этого кода окажется соизмеримым с объемом ресурса формы, если бы он был.
Так что не вижу смысла. Специально для подобных целей Delphi имеет репозиторий. Почему бы его не использовать? Неужели задача такая уж нестандартная, что ее нельзя решить нормальными средствами и без головной боли?
← →
icWasya (2003-03-17 09:51) [4]а если совсем невмоготу, создай пустую форму, сохрани в ресурс, а потом делай всё кодом
← →
NetKnight (2003-03-17 12:55) [5]Юрий Зотов, ресурсы ей не нужны, т.к. её вид полностью зависит от ситуации, всё кодом генерируется... Визуальное использование не нужно, только в run-time.
Как использовать рипозиторий я не знаю, не сталкивался...
А как конструктор для неё писать ? Так же как и в TCustomForm ?
← →
Юрий Зотов (2003-03-17 14:13) [6]Наверное, так же, только убрав загрузку ресурсов и проверку OldCreateOrder:
constructor TMyForm.Create(AOwner: TComponent);
begin
GlobalNameSpace.BeginWrite;
try
CreateNew(AOwner);
if not (csDesigning in ComponentState) then DoCreate
finally
GlobalNameSpace.EndWrite
end
end;
← →
NetKnight (2003-03-17 15:58) [7]Юрий Зотов
Уже разобрался.. Сянькс.. :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c