Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
8-88093
DenKop
2002-12-18 02:13
2003.03.27
Связь уровня звука с dB.


1-87948
[BAD]Angel
2003-03-17 14:57
2003.03.27
Как узнать если курсор покинул PopupMenu?


3-87773
Vavan
2003-03-06 19:39
2003.03.27
Подключение к oracle


1-87914
sapsi
2003-03-14 16:08
2003.03.27
Удаление итема из листбокса


6-88108
harismatik
2003-02-05 10:58
2003.03.27
Как прервать выполнение команды List?





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