Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Как работает Field Editor?   Найти похожие ветки 

 
DmitryNekl   (2004-05-20 12:53) [0]

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

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

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

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


 
Vlad ©   (2004-05-20 12:59) [1]


> DmitryNekl   (20.05.04 12:53)  

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


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


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

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


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

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

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


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

2 Vlad.

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

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


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


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

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


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

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


 
Vlad ©   (2004-05-20 14:27) [6]


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

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


> DmitryNekl   (20.05.04 14:18) [4]

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


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

2 Курдль.

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


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


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


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

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


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

2 Vlad.

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

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


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


> Задолбало.

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


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

2 Курдль.

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

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

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


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


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

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


 
Vlad ©   (2004-05-20 15:18) [13]


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
1-1085768409
FuTe
2004-05-28 22:20
2004.06.13
dll


14-1085468028
*Pavel
2004-05-25 10:53
2004.06.13
Международные платежные системы


14-1085415396
xman
2004-05-24 20:16
2004.06.13
Алгоритм или исходник


1-1086067114
nitro
2004-06-01 09:18
2004.06.13
Как присвоить Label.Caption значение текущего элемента Combobox ?


3-1085126188
Jean
2004-05-21 11:56
2004.06.13
как использовать tranmsform и pivot в BDE ???