![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Наследуемые формы и ADOCommand на форме-предке [D5, MSSQL]
analyser © (2004-09-16 15:51:00)Вот такая штука:
Есть иерархия форм. На форме-предке определен 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-17 07:14:00) [1]> [8] analyser (16.09.04 18:16)
> Главное в:
> на вопрос все равно ответа не знаю
> Нет?
Кому как ;)
analyser (2004-09-16 18:16:00) [2][7] KSergey
Спасибо, объяснил :) А то я все думаю, что это за имена такие непонятные.
Кроме шуток - я действительно не понял, что ты хотел сказать.
В контексте моего вопроса не было ни слова о динамически создаваемых компонентах (я не имею в виду формы - те, да, создаются динамически, и присваемые им имена мне не мешают - более того, я ни разу не пробовал создавать формы с одинаковыми именами, тем более с сознательно пустыми...)
Впрочем, как я понял, это все лирика. Главное в:
на вопрос все равно ответа не знаю
Нет?
KSergey (2004-09-16 18:07:00) [3]> [6] analyser (16.09.04 17:43)
> Ни фига не понял... О каких именах речь...
TComponent.Name
analyser (2004-09-16 17:43:00) [4][5] KSergey
Ни фига не понял... О каких именах речь...
...Динамически создаваемые компоненты...
М.б. это ты о чем-то своем ?
KSergey (2004-09-16 17:07:00) [5]> [4] analyser (16.09.04 16:57)
> А что ?
Да так... На ум положил ;)
А вообще для динамически создаваемых компонент давно взял за правило: создал - присвой Name пустую строку. Почему-то компоненты с одинаковым не пустым именем (в пределах одного владельца? что-то я не вникал) создать нельзя, а вот с пустым - сколько хочешь. Ну да видать борландовцам виднее. ;)
Впрочем, видимо для FindComponent (или как там оно) придумано. Но факт: присвоил пустую строку - и все здорово. И голова не болит. Создавать какие-либо уникальные имена - не очень-то удобно (кода во всяком случае больше).
analyser (2004-09-16 16:57:00) [6]KSergey [3]
Да код-то тривиальный - в конечном итоге все сводится к:
Application.CreateForm(ClassForm, NewForm);
где ClassForm - имя класса формы, NewForm - имя создаваемой формы.
А что ? (Мне тоже стало интересно...)
KSergey (2004-09-16 16:26:00) [7]> > А как форма создаетя?
> Не понял...
> Создаются формы-наследники,
Код.
Или они автокрейтные? (мне просто интересно, на вопрос все равно ответа не знаю)
analyser (2004-09-16 16:23:00) [8]KSergey [1]
ADOCommand в предке именно "брошен на форму", т.е. форма (и все ее наследники) содержит этот компонент.
> А как форма создаетя?
Не понял...
Создаются формы-наследники, и все они содержат этот компонент.
>Я кидал ADOQuery на базовую форму...
Так я же и говорю - с TADODataSet - проблемм нет.
KSergey (2004-09-16 16:14:00) [9]> определен ADOCommand
Как? Можно уточнить? Или на форму брошен? А как форма создаетя?
Мне просто интересно. Странная ситуация, хотя действительно есть упоминание и именно в разрезе ADO...
Я кидал ADOQuery на базовую форму, создавал наследников. Проблем не помню.