Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизНаследуемые формы и ADOCommand на форме-предке Найти похожие ветки
← →
analyser (2004-09-16 15:51) [0]Вот такая штука:
Есть иерархия форм. На форме-предке определен ADOCommand и он используется в разных процедурах/методах этой формы, что-то вроде:
with ADOCommand do begin
Parameters[1].Value := Val;
Execute;
end;
На реальных формах-наследниках этот ADOCommand наполняется реальным содержимым и выполняются процедуры/методы предка.
Для первой открытой формы-наследника все тип-топ. Для второй (при открытой первой) уже не работает, выдавая ошибку "Object is already in collection.Cannot append" именно при попытке выполнить Execute;
Поиском по DelphiKingdom нашел странный топик:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=11728
и озадачился - что это означает?
(Я вообще-то извернулся, но осадок остался - что не так делал?)
ЗЫ: Аналогичным образом определенные на форме-предке ADODataSet"ы прекрасно работают на формах-наследниках, никак не мешая друг другу...
ЗЗЫ: А вообще, использует ли кто иерархию форм с Data Access компонентами ?
← →
KSergey © (2004-09-16 16:14) [1]> определен ADOCommand
Как? Можно уточнить? Или на форму брошен? А как форма создаетя?
Мне просто интересно. Странная ситуация, хотя действительно есть упоминание и именно в разрезе ADO...
Я кидал ADOQuery на базовую форму, создавал наследников. Проблем не помню.
← →
analyser (2004-09-16 16:23) [2]KSergey [1]
ADOCommand в предке именно "брошен на форму", т.е. форма (и все ее наследники) содержит этот компонент.
> А как форма создаетя?
Не понял...
Создаются формы-наследники, и все они содержат этот компонент.
>Я кидал ADOQuery на базовую форму...
Так я же и говорю - с TADODataSet - проблемм нет.
← →
KSergey © (2004-09-16 16:26) [3]> > А как форма создаетя?
> Не понял...
> Создаются формы-наследники,
Код.
Или они автокрейтные? (мне просто интересно, на вопрос все равно ответа не знаю)
← →
analyser (2004-09-16 16:57) [4]KSergey [3]
Да код-то тривиальный - в конечном итоге все сводится к:
Application.CreateForm(ClassForm, NewForm);
где ClassForm - имя класса формы, NewForm - имя создаваемой формы.
А что ? (Мне тоже стало интересно...)
← →
KSergey © (2004-09-16 17:07) [5]> [4] analyser (16.09.04 16:57)
> А что ?
Да так... На ум положил ;)
А вообще для динамически создаваемых компонент давно взял за правило: создал - присвой Name пустую строку. Почему-то компоненты с одинаковым не пустым именем (в пределах одного владельца? что-то я не вникал) создать нельзя, а вот с пустым - сколько хочешь. Ну да видать борландовцам виднее. ;)
Впрочем, видимо для FindComponent (или как там оно) придумано. Но факт: присвоил пустую строку - и все здорово. И голова не болит. Создавать какие-либо уникальные имена - не очень-то удобно (кода во всяком случае больше).
← →
analyser (2004-09-16 17:43) [6][5] KSergey
Ни фига не понял... О каких именах речь...
...Динамически создаваемые компоненты...
М.б. это ты о чем-то своем ?
← →
KSergey © (2004-09-16 18:07) [7]> [6] analyser (16.09.04 17:43)
> Ни фига не понял... О каких именах речь...
TComponent.Name
← →
analyser (2004-09-16 18:16) [8][7] KSergey
Спасибо, объяснил :) А то я все думаю, что это за имена такие непонятные.
Кроме шуток - я действительно не понял, что ты хотел сказать.
В контексте моего вопроса не было ни слова о динамически создаваемых компонентах (я не имею в виду формы - те, да, создаются динамически, и присваемые им имена мне не мешают - более того, я ни разу не пробовал создавать формы с одинаковыми именами, тем более с сознательно пустыми...)
Впрочем, как я понял, это все лирика. Главное в:
на вопрос все равно ответа не знаю
Нет?
← →
KSergey © (2004-09-17 07:14) [9]> [8] analyser (16.09.04 18:16)
> Главное в:
> на вопрос все равно ответа не знаю
> Нет?
Кому как ;)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c