![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 указываешь нужные параметры...