Компонент публикует свойство как массив TQuery - PullRequest
0 голосов
/ 13 октября 2010

Я занимаюсь разработкой пользовательского компонента и хочу добавить опубликованное свойство, которое будет массивом TQuery (оно должно быть видно в инспекторе объектов).основной функцией будет удаление компонента в форме, а затем визуальный выбор запросов, присутствующих в той же форме или в любой другой форме проекта.

это выполнимо?из того, что я видел до сих пор, вы можете только программно использовать такое свойство массива ...

ОБНОВЛЕНИЕ

во-первых, спасибо за ваш ответ Алекс!

во-вторых,Суть в том, что мне нужно изменить старое приложение, созданное кем-то другим, поэтому я хочу как можно меньше связываться с ним (на самом деле есть второе приложение, которое мне нужно «исправить», которое, как мне сказали, в два раза больше).Теперь для деталей: приложение имеет около 15 форм для различных операций БД.как вы можете себе представить, каждая форма имеет 2-3 объекта TQuery.проблема в том, что пользователь должен аутентифицироваться с помощью db для выполнения запросов, поэтому он знает пользователя db & pwd, который является потоком безопасности.

, чтобы избежать этого, была введена промежуточная система,один подключается и аутентифицируется с ним и запрашивает необходимые данные БД: user, pwd и имя базы данных.моя работа состоит в том, чтобы использовать эту систему и autologin к БД.необходимые учетные данные для доступа к этой промежуточной системе не считаются потоком безопасности, поэтому я буду читать их из inifile, который зависит от среды, в которой она развернута: тестирование, подготовка к работе, производство.

, поэтому я разместилКомпонент TDatabase в моей форме, установив его свойство LoginPrompt в FALSE.сложная часть, однако, настраивает каждый TQuery на разные имена баз данных для каждой среды перед выполнением ..

Не знаю, если я дал понять, но это самое простое объяснение, которое мне удалось придумать


спасибо, G

Ответы [ 3 ]

2 голосов
/ 13 октября 2010

Чтобы сделать жизнь максимально простой, вам, возможно, придется ухмыльнуться и нести ее один раз:

  • Создайте модуль данных и убедитесь, что он создан перед основной формой.
  • Поместите компонент TDatabase в этот модуль данных.
  • Пройдите все ваши формы один раз и
    • добавьте модуль данных базы данных в его предложение использования (может быть в разделе реализации).
    • Измените все ваши TQuery и другие компоненты, связанные с базой данных, чтобы использовать компонент базы данных из модуля данных вместо того, чтобы иметь собственные строки подключения.

Во время выполнения войдите под своим именемописанный через ваш компонент TDatabase и вуаля, все ваши компоненты теперь будут использовать эти настройки автоматически (так как они все связаны с вашим экземпляром TDatabase).

0 голосов
/ 13 октября 2010

Хорошо, вы добавили базу данных TD в ваш проект.Теперь, заполните свойство «DatabaseName» TDatabase произвольным именем.Каждый компонент TQuery в вашем проекте также имеет свойство «DatabaseName» и в них указывается одно и то же имя!Теперь ваша база данных и все ее запросы будут связаны, и вы можете использовать объект TDatabase для доступа ко всем из них.

0 голосов
/ 13 октября 2010

Да, это можно сделать, но вам придется написать собственный Редактор свойств с собственной формой ввода для управления данными внутри массива.В Интернете можно найти много информации.И да, вы можете создать компонент, который проверяет наличие родительских элементов управления, позволяя вам получить к ним доступ.Но практично ли это?Зачем вам нужен массив компонентов TQuery во время разработки?Может быть, вам нужно сначала переосмыслить свой дизайн, чтобы вы были абсолютно уверены, что вам нужен этот функционал.(Кроме того, что не так с использованием модуля данных для хранения ваших запросов?)

...