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

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

DevExpress - TcxDBLookupComboBox [D7]


chirchik ©   (2004-07-23 15:59:00) 

DevExpress - TcxDBLookupComboBox
Помогите настроить правильную работу.

в списке надо вывести записи из одного простого запроса:
select Year from Table


Sir John   (2004-07-25 23:17:00) [1]

есть tcxLookUpComboBox, и есть tcx DBLookUpComboBox
В первом случае нам надо создать просто tcxTableView
Во-втором - все точно по тексту


chirchik   (2004-07-25 11:22:00) [2]

>Yaral [11]
>Просто в событии onCloseUp делаешь locate и все.

а подробнее можно?
cxDBLookupComboBox1.locate - не работает.


chirchik   (2004-07-25 11:19:00) [3]

>Sir John [9]

Спасибо, огромное за столь подробное описание, но вот проблема:
>7. В свойствах tcxLookUpComboBox выбираем Properties -> View. В ниспадающем списке должен появится только что созданный DBTable1View. Выбираем его

В свойствах нет Properties -> View :(


Yaral   (2004-07-24 11:49:00) [4]

Просто в событии onCloseUp делаешь locate и все.


Гость   (2004-07-24 04:45:00) [5]


> chirchik ©   (23.07.04 18:45) [7]
> В этом то все и дело, что мне не нужно связывать таблицы.
> у вас связываются dsMarks, dsAngels,
>
>     DataField = "Тип"
>     DataSource = fDM.dsMarks
>     ListFieldName = "Название"
>     KeyFieldName = "Код"
>     ListSource = DM.dsAngels
>
> а уменя одна таблица, в которой уже хранятся года. мне ее
> не надо ни с чем связывать.

Просто в таблице dsMarks есть поле, которое задается выпадающим списком, значения для которого берутся из dsAngels


Sir John   (2004-07-23 22:28:00) [6]

Надо использовать Properties -> ViewВпрочем, постараюсь объяснить все попорядку
1. Кидаем на форму cxGridViewRepository
2. В нем создаем новый вид - DBTable
3. в созданном виде прописываем в свойстве DataController - > DataSource
4. Создаем столбец
5. В нем прописываем в свойстве DataBinding - > FieldName
6. Закрываем cxGridViewRepository

Теперь немного отвлечемся, ибо сейчас начнется самое интересное. и эти действия требуют некоторых разъяснений. Во-первых парни из DevExpress для навигации по данным рекомендуют использовать вместо DataSource- View. Именно здесь находятся все элементы, которые мы видим при просморе данных, и которые можно выбирать по щечку мышки. Мы последуем их совету и поэтому:

7. В свойствах tcxLookUpComboBoxвыбираем Properties -> View. В ниспадающем списке должен появится только что созданный DBTable1View. Выбираем его
8. в ListFieldItemвыбираем имя столбца, принадлежащего выбранному виду
9. В свойстве Properties -> KeyFieldItemвыбираем имя поля, пренадлежащего выбранному столбцу
10. Теперь, нам необходимо проделать следующую операцию. После выборки данных из БД их необходимо "слить" в DataSource. Делается это таким образом:
tcxLookUpComboBox.DataBinding.DataField := tcxLookUpComboBox.Properties.ListFieldNames;
Теперь осталось дело за малым. Отобразить выбранное значение. Для этого
11. Выбираем закладочку Events -> onCloseUp, и в обработчике помещаем следующую строку
  tcxLookUpComboBox.EditValue := tcxLookUpComboBox.Properties.ListFieldItem.EditValue;

Ну и самое последнее.
12. После того как мы выполнили запрос и получили данные, нам необходимо отобразить первую запись из списка. Для осуществления этой светлой мечты достаточно всего одной строчки кода:
tcxLookUpComboBox.Properties.ListFieldItem.Index := 1;
Вот собственно и все. Теперь мы видим, как легко и приятно работать с навороченными компонентами от DevExpress :))))
--------------------------------------------------------
с уважением
Sir John


chirchik   (2004-07-23 18:48:00) [7]

Обычный DBLookupComboBox работает нормально с такими свойствами:

   object DBLookupComboBox1: TDBLookupComboBox
     KeyField = 'Год'
     ListSource = DM.DS1_Year
   end


Но там не работает прокрутка колесиком мыши, и стиль отличается от DevExpress'овских компонент.

Как же можно сделать выпадающий список?


chirchik   (2004-07-23 18:45:00) [8]

В этом то все и дело, что мне не нужно связывать таблицы.
у вас связываются dsMarks, dsAngels,

    DataField = "Тип"
    DataSource = fDM.dsMarks
    ListFieldName = "Название"
    KeyFieldName = "Код"
    ListSource = DM.dsAngels


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


chirchik   (2004-07-23 18:33:00) [9]

При попытке сделать так:
   object cxDBLookupComboBox1: TcxDBLookupComboBox
     DataBinding.DataField = 'Год'
     DataBinding.DataSource = DM.DS1_Year
     Properties.KeyFieldNames = 'Год'
     Properties.ListColumns = <
       item
         FieldName = 'Год'
       end>
     Properties.ListOptions.GridLines = glNone
     Properties.ListSource = DM.DS1_Year
   end


т.е. установить

     DataBinding.DataField = 'Год'
     DataBinding.DataSource = DM.DS1_Year


выдается ошибка: "Circular datalinks are not allowed"

>попробуй DBLookupEdit от DevExpress'a
а с чем его ставить? у меня нет его :(
установлены ExpressQuantumGrid 4 и ExpressQuantumTreeList 4


Гость   (2004-07-23 18:27:00) [10]


> chirchik ©   (23.07.04 18:22) [3]
> >в DataSource и DataField указываешь нужные параметры...
> какие параметры? можно подробнее...

ну... в DataSource указываешь DataSet, в который вносишь данные, указанные в DBLookupComboBox, а в DataField имя поля, которое вносишь...


Гость   (2004-07-23 18:25:00) [11]

попробуй DBLookupEdit от DevExpress'a

   object eAngels: TdxDBLookupEdit
     Left = 8
     Top = 128
     Width = 305
     Style.BorderStyle = xbsFlat
     TabOrder = 2
     OnKeyPress = eAngelsKeyPress
     DataField = "Тип"
     DataSource = fDM.dsMarks
     DropDownRows = 10
     PopupBorder = pbFlat
     ListFieldName = "Название"
     KeyFieldName = "Код"
     ListSource = DM.dsAngels
     LookupKeyValue = Null
   end


chirchik   (2004-07-23 18:22:00) [12]

>в DataSource и DataField указываешь нужные параметры...
какие параметры? можно подробнее...


chirchik   (2004-07-23 18:16:00) [13]

>в ListBox'е указываешь DataSource, ссылающийся на запрос;
dfm:

   object cxDBLookupComboBox1: TcxDBLookupComboBox
     Properties.KeyFieldNames = 'Year'
     Properties.ListColumns = <
       item
         FieldName = 'Year'
       end>
     Properties.ListSource = DM.DS1_Year
     TabOrder = 3
   end


Список выводится. Но при выборе записи курсор по данным не перемещается. Для слежки поставил рядом DBGrid. Что может быть?


Гость   (2004-07-23 18:08:00) [14]

в ListBox'е указываешь DataSource, ссылающийся на запрос;
в KeyField'е и ListField'е указываешь "year",
в DataSource и DataField указываешь нужные параметры...


Наверх

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