Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как работает Field Editor? [D7]


DmitryNekl ©   (2004-05-20 12:53:00) 

Хочу создать подобие Field Editor, чтобы работал в run-time (для настройки приложения, чтобы при изменении структуры базы не нужно было перекомпилировать).

Глобальный вопрос: как это сделать? Может, кто уже делал?

Вопрос более конкретный: Как в Field Editore организованы загрузка и удаление полей? Мне кажется, что используется (на примере Query) Query.Fields... но как он удаляет? Какой метод используется? У меня не получилось ни с remove, ни с clear...

Буду благодарен как за ответы на вопросы, так и за ссылки по теме.


Vlad   (2004-05-20 15:18:00) [1]


> DmitryNekl   (20.05.04 14:48) [9]
> 2 Vlad.
>
> Цель - делаю систему управления сайтом. Периодически вношу
> изменения в структуру базы

Такой подход, ИМХО, не есть гуд. Сам себе задачу усложняешь.
Базу для начала проектируют как следует, а потом уже занимаются разработкой клиента. Тогда не будет возникать таких проблем как у тебя. А ты хочешь сделать чуть ли не интеллектуальную систему, знаешь сколько ты на это времени потратишь ? И самое главное овчинка будет ли стоить выделки ?
Совет: забей пока не поздно.


Курдль   (2004-05-20 15:15:00) [2]


> Завести файл с настройками, один раз визуально после изменения
> структуры расставить все компоненты и запомнить координаты
> в этом файле... Может, я чего принципиального не вижу?

Ага! :)  Этот файл назывется ".DFM"


DmitryNekl   (2004-05-20 15:00:00) [3]

2 Курдль.

Спасибо за конструктивный ответ :). Кстати, я не профессиональный программист, а любитель, пишу прогу не для кого-то, а для себя.

Тем не менее, я, как и все талантливые люди, ленив - и потому хочу эту занудную работу автоматизировать. Это плохо?

И почему приложение будет искалечено? С дизайном могут быть некоторые трудности... но все решаемо! Завести файл с настройками, один раз визуально после изменения структуры расставить все компоненты и запомнить координаты в этом файле... Может, я чего принципиального не вижу?


Курдль   (2004-05-20 14:55:00) [4]


> Задолбало.

Это не повод калечить приложение "настраиваемыми без компиляции окнами редактирования".
Зато это хороший метод для смены профессии!


DmitryNekl   (2004-05-20 14:48:00) [5]

2 Vlad.

Цель - делаю систему управления сайтом. Периодически вношу изменения в структуру базы, и приходится в куче мест переделывать настройки руками. Задолбало. Хочу, чтобы все окна редактирования, TFields и т.д. создавались/настраивались автоматом. Т.е.: допустим, добавилось в таблицу (MySQL) новое поле, или изменился тип предыдущего. Автоматически создаются TFields, если нужно - настраиваю свойства DisplayLabel, DisplayWidth, Visible - и все сразу без ручной работы отображается как надо.

Lookup-ные и вычисляемые поля - как для сохранения общности, так и для удобства работы с окнами редактирования.


Соловьев   (2004-05-20 14:45:00) [6]


>  [6] Vlad ©   (20.05.04 14:27)


> [5] Курдль ©   (20.05.04 14:21)

Как раз 3-х звенная архитектура не зависит не только от стурктуры БД но и от самой СУБД. Как раз то что нужно автору , у которого меняется структура БД.


DmitryNekl   (2004-05-20 14:39:00) [7]

2 Курдль.

При работе программы я хочу на (изначально пустую) форму редактирования помещать динамически создаваемые элементы типа BDEdit и т.д.


Vlad   (2004-05-20 14:27:00) [8]


> Курдль ©   (20.05.04 14:21) [5]
> Это не универсальный метод, а тупиковый. Не вижу для него
> никакого практического применения, кроме изоляции БД от
> ВЭБ.

Не стоит так категорично выражать свои мнения. Трехзвенка тут хоть и не совсем к месту, но у нее гораздо больше плюсов чем ты думаешь.


> DmitryNekl   (20.05.04 14:18) [4]

Ничего не понял. Зачем тебе лукап-поля, если у тебя только поменялась структура базы ? Какова вобще цель твоей задачи ?


Курдль   (2004-05-20 14:21:00) [9]


> универсальный способ - 3-х звенная архитектура

Это не универсальный метод, а тупиковый. Не вижу для него никакого практического применения, кроме изоляции БД от ВЭБ.


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

Не могу себе представить приложение, нормально работающее после изменения структуры базы. Это как понимать? Если у меня на форме редактирования были поля "Ф","И","О" и лэйблы к ним соответствующие, то они, откуда ни возьмись (без перекомпиляции), перетекут в поля "Страна", "Город", "Улица", "Дом", "Квартира" и "Телефон"?


DmitryNekl   (2004-05-20 14:18:00) [10]

2 Vlad.

"Свойство FieldDefs (имеющее тип TFieldDefs) для существующей таблицы содержит информацию обо всех полях таблицы. Эта информация доступна только в режиме выполнения и хранится в виде массива экземпляров класса TFieldDef, хранящих данные о физических полях таблицы (т.о. вычисляемые на уровне клиента поля не имеют своего объекта TFieldDef)."

Поскольку в редакторе полей можно создавать и вычисляемые поля, и lookup-ные поля - там используется не TFieldDefs... :(
Есть ли какие еще варианты?


DmitryNekl   (2004-05-20 14:00:00) [11]

СУБД - MySQL в инете. Представления отсутствуют :(

Спасибо большое за ответы. Будут еще мысли - пишите! :)


Соловьев   (2004-05-20 13:20:00) [12]


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

СУБД? если клиент-сервер - VIEW читать до потери сознания
универсальный способ - 3-х звенная архитектура


Vlad   (2004-05-20 12:59:00) [13]


> DmitryNekl   (20.05.04 12:53)  

Для этого посылается запрос к базе, DataSet получает новый набор полей.
Подробнее см. TFieldDefs.Update, можешь посмотреть реализацию в VCL


Наверх

Титульная страница Поиск, карта сайта Написать письмо