| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Создание коллекции датасетов |
| Автор: DarkProg 13.10.2012, 14:35 |
| Всем, доброго дня Вот сижу делаю очень сложную модификацию проекта и раз уж начал, то гулять, так гулять Есть в проекте формы где содержится огромное количество датасетов, порядка 20-30, таких форм не много, но аж глаза разбегаются куда кликнуть, да и датасеты необходимо вечно таскать из стороны в сторону, если надо вдруг передвинуть какую-нибудь кнопочку... В общем мучение ещё то. Есть мысль это педелать, запихав всё это дело в коллекцию, но вот не получается в лоб решение... По идее можно было бы использовать класс TCollection но тогда датасет должен быть наследником класса TCollectionItem, чем он естественно не является. Я мог бы создать TCollectionItem у которого было бы свойство TDataSet, только смысла от этого никакого, потому что тогда я просто получу элемент коллекции с возможностью указать ссылку на объект, а мне нужен компонент который сам в себе будет содержать всю эту гору датасетов... P.S. как решение простое я вижу использование DataModule где и будет валятся вся эта гора датасетов, но хотелось бы всё таки компонентик попробовать сваять... P.P.S. я правда что-то не могу найти чтобы кто-то такое вообще пробовал... |
| Автор: TSerg 13.10.2012, 18:25 |
Именно для этого он и придуман. |
| Автор: DarkProg 13.10.2012, 18:43 |
Да, он придуман чтобы туда можно было накидать кучу компонентов, но мне удобнее было бы иметь компонент-коллекцию, т.к. тогда бы все компоненты лежали на одной форме, а так придётся перегрузить конструктор формы чтобы создать этот модуль вместе с формой. Я то в общих чертах уже придумал как это можно реализовать с помощью DataModule, но будет пара подводных камней... вот и хочется компонентик нормальный... |
| Автор: DarkProg 14.10.2012, 17:35 | ||||
Там фишка будет в том что для каждой такой формы мне нужно будет создавать отдельный экземпляр дата модуля. И быть точно уверенным, что именно этот экземпляр привязан к конкретной форме. А что при этом нарушится может, так это только память, если сделать что-нибудь не так...
Это как бы не решение проблемы на мой взгляд... |
| Автор: superVad 14.10.2012, 17:56 | ||||
Да - вариант.
Ну можно создавать в конструкторе формы. |
| Автор: DarkProg 14.10.2012, 21:50 |
Да, я об этом уже говорил выше, что придётся конструктор перегружать... Мне только не понятно при этом как поведут себя некоторые ссылки ведь изначально я их буду создавать привязывая к конкретному дата-модулю... |
| Автор: MetalFan 14.10.2012, 22:14 | ||
И чем не решение? смысл ваять какой-то компонент, который будет делать то же самое? давать связанному с формой датамодулю схожее имя, например, с префиксом... |
| Автор: DarkProg 14.10.2012, 23:07 |
| Меня смущает непонятка в написании ссылки, например в DataSource, ведь там пишется имя DataModule на котором лежит конкретный датасет. Всегда ли созданная форма будет ссылаться на тот модуль который я создал... Или вот ссылка на компонент подключения DataModuleBase.ConnectionDase, ведь это у меня так модуль называется, а через точку идёт ссылка на компонент. Я тут решил поэкспериментировать и получил интересный результат. Если в конкструкторе формы, до inherited Create самой формы прописать создание экземпляра датамодуля, то выглядит так как будто бы каждая форма ссылается на свой модуль, а вот если вдруг создаётся форма у которой в конструкторе нет создания экземпляра модуля, то компоненты на форме начинают ссылаться на уже существующий модуль. Проверка кто на кого ссылается при помощи разрушения модуля привязанного к форме. Меня беспокоит такое поведение, потому что пользователи могут учудить такое о чём ни в одной книге не пишут... |
| Автор: northener 15.10.2012, 01:08 | ||
Код в студию! |