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

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

Использование не DB компонента на DBCtrlGrid. [D7, MySQL]


Страницы:   1 2

Fedia ©   (2005-09-18 05:32:00) 

Доброго времени суток !

   В БД находится справочник ves с полями id_ves (тип int(11)) и ves (тип Char(40)). Так же в БД имеется множество таблиц, содержащих поле id_ves. Необходимо организовать визуальный интерфейс для удобного заполнения поля id_ves в данных таблицах. Для этого я предполагаю использовать компонент DBCtrlGrid, на который будут помещены компоненты DBEdit и ComboBox. При нажатии на кнопку ComboBox-са должен появляться выпадающий список, в котором должны отображаться записи таблицы ves, в следующем виде: “id_ves + пробел + ves”. Пользователь выбирает из выпадающего списка нужную запись, после чего в компонент DBEdit заносится значение поля id_ves, а в компонент ComboBox – поля ves. Но в описанной выше компонентной связке существует один дефект, который я не могу устранить: значение свойства ComboBox.Text отображается только для текущей записи таблицы, отображаемой на DBCtrlGrid, в остальных оно отображается пустым. Вот с этой проблемой я прошу помочь мне справиться.
   Сразу отмечу, что при использовании компонента DBComboBox такая схема работает, но для ее реализации в заполняемой таблице необходимо добавлять еще одно физическое поле ves, что крайне не желательно.

С уважением,
Федор.


Fedia   (2005-09-19 23:31:00) [21]

>DBLookupComboBox делает то, что тебе нужно.
1. При помещении этого компонента на TDBCtrlGrid даже его свойство ListSourсe нельзя задать, т.к. при попытке это сделать TDBCtrlGrid сразу выдает сообщение: "Operation not allowed in a DBCtrlGrid".
2. Также как и в DBComboBox, для изменения содержимого окна DBLookupComboBox необходимо, чтобы этот компонент был связан с реально существующим полем таблицы БД.


ANB   (2005-09-19 10:31:00) [22]

DBLookupComboBox делает то, что тебе нужно.


Fedia   (2005-09-19 05:34:00) [23]

Поправка: ControlStyle := ControlStyle + [csReplicatable];


Fedia   (2005-09-19 05:28:00) [24]

Попытаюсь уточнить вопрос.

У меня имеются два варианта для реализации описанного выше интерфейса. Может быть, кто-то сможет предложить другие варианты.

I. Использовать TComboBox. В этом случае значение ComboBox.text отображается только в текущей записи набора данных, а мне необходимо, чтобы это свойство отображалось у всех видимых на DBCtrlGrid записях таблицы. Причем значение этого свойства может быть различным, в зависимости от содержимого компонента DBEdit.
Я понимаю, что без изменения компонента TComboBox здесь не обойтись, но мне нужно знать хотя бы направление, в котором следует копать.
К примеру: 1. В конструкторе компонента TEdit прописываем:
ControlStyle := ControlStyle + csReplicatable;;
2. Подключаем DBCtrlGrid к набору данных;
3. Помещаем TEdit на DBCtrlGrid. Вопрос: Что нужно сотворить с компонентом TEdit (или TComboBox), чтобы значение свойства text отображалось в каждой строке DBCtrlGrid.

II. Использовать TDBComboBox. В этом случае проблем с отображением данных нет. Но для корректной работы с содержимым окна компонента TDBComboBox необходимо, чтобы компонент был связан с полем таблицы БД. Использовать в данном случае вычисляемое поле fkCalculated не получается, поскольку возникает запрет на редактирование содержимого TDBComboBox. Добавлять же в таблицу базы данных еще одно поле, ради реализации пользовательского интерфейса не целесообразно. Может быть имеется возможность “подсунуть” компоненту TDBComboBox какое-либо виртуальное поле (т.е. не находящееся в таблице БД), так, чтобы сохранилась возможно редактирования содержимого компонента TDBComboBox?

И в еще один вопрос. При работе с TDBCtrlGrid пока у меня пока глюков не возникало, но ходят слухи, что этот компонент не надежный и начиная с n-й версии Delphi не поддерживается разработчиками. Это правда?

Надеюсь, что на этот раз, у меня получилось понятно изложить вопрос :)


Страницы:   1 2

Наверх

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