Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > ADOStoredProc в функции |
Автор: budg 4.5.2006, 17:06 | ||
Есть следующий код:
Так вот, при запуске получаю сообщение об ошибке: [Error] diff.pas(55): Undeclared identifier: 'ADOStoredProc1' Ругается на ADOStoredProc1... ![]() Если тот же вызов делать не в функции, а в процедуре (TForm1.Button1Click) - все работает нормально. Возникает немой вопрос - разве компонента в функции не работает? Или ей нужно специфическое описание? Хелп плиииз.. |
Автор: Vit 4.5.2006, 17:28 | ||||||||
Конечно нет, компоНента - это же поле класса формы, откуда о нём знает функция? В классе формы (не переменной а типе формы!) описан компонент, а для функции это просто описание типа, а не переменной. Чтобы обратится к компоеннту из-вне надо указать переменную - экземпляр формы, а потом компонент. Надо примерно так:
Поясню подробнее. Ты описал форму: Type TForm1 = class(Tform) ... Ты описал её поля, методы и т.п.:
Теперь когда ты пишешь метод формы, типа такого:
то это описание метода класса! а не экземпляра класса. Фокус в том что я могу класс TForm1 создать несколько раз, например сделать 10 одинаковых форм. Реально у тебя при этом будет 10 объектов ADOCommand1, которые будут относится к разным экземплярам форм. Метод TForm1.MyProc будет относится именно к тому экземпляру с которым ты его вызываешь, а вот для функции вовсе не очевидно с каким экземпляром компонента работать... PS. Вообще-то использование такой функции как ты привёл является дурным тоном, оно чревато многочисленными проблемами... Лучше эту функцию переделать в метод класса:
|
Автор: budg 5.5.2006, 08:55 |
Спасибо огромное! ![]() Буду разбираться. |