Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > ComboBoxEh


Автор: santilaas 28.5.2006, 21:18
Люди добрые, выручайте: ситуация следующая - на форме редактирования записи есть 3 поля DBEditEh и один ComboBoxEh. Заполняю эти 3 поля, перехожу на ComboBoxEh - и при открытии списка в нём появляются 2 значения, составленные из значений 3-х полей ввода.
К слову сказать ComboBoxEh связываю с DataSource-ом (в самой БД хранится числовое поле Field1, соответствующее ComboBox-у), KeyItems заполняю как 1,2.

На onButtonDown ComboBoxEh-а пишу:
Код

   Form1.ComboBoxEhView.Items.Clear;
   Form1.ComboBoxEhView.Items.Add(Form1.EditEhSurname.Text
     + ' ' + copy(Form1.EditEhName.Text,1,1)
     + '.' + copy(Form1.EditEhMiddleName.Text,1,1) + '.');
   Form1.ComboBoxEhView.Items.Add(Form1.EditEhSurname.Text
     + ' ' + copy(Form1.EditEhName.Text,1,1) + '.');  

   
И все бы ничего, только вот когда двойным кликом по записи открываю форму редактирования, в выпадающем списке уже должно стоять значение, соответствующее полю Field, и плюс так как по умолчанию у меня для Field1 стоит "1", то при открытии выпадающего списка (в случае добавления новой записи) там уже должна быть выбрана первая строка Items - но этого не происходит.
Что подскажете?   

Автор: Alex 29.5.2006, 12:19
Конечно опять у вас полная каша, опять с db компонентом вы начинаете работать как с обычным.
У ComboBoxEh есть свойство ItemIndex которое при открытии у вас установлено в -1 для выбора первой записи должно стоять 0.
Но лучше бы вы описали, что вы хотите получить таким экстравагантным способои и что за данные вы храните в базе, и как они связаны с тремя вводимыми текстовыми полями 

Автор: santilaas 29.5.2006, 13:47
В общем то каши нет: 
у меня в таблице хранятся Фамилия, Имя и Отчество, и поле (в предыдущей реплике я его обозвал как Field1),
по которому я смотрю какое будет представление ФИО: 
1 - Иванов И.И. (по умолчанию)
2 - Иванов И.
3 - Иванов Иван
4 - Иванов Иван Иванович
В DataSet-е я создал Calc-поле View, которое формирует ФИО в зависимости от значения поля Field
и отбражает его в DBGridEh-е.
На форме редактирования записи я для выбора представления ФИО и использую ComboBoxEh.
У него заполняю свойство KeyItems: 1,2,3,4 (в предыдущей реплике я писал: 1,2). И по сути надо всего-то и заполнить свойство Items! Если я заполняю его фиксированными значениями, то он конечно же работает так как мне нужно (если не считать что значения Items неизменны).
Но мне то нужно, чтобы он заполнялся на основе введённых данных (3 поля ввода(Фамилия, Имя, Отчество))
А по-поводу
Цитата

У ComboBoxEh есть свойство ItemIndex которое при открытии у вас установлено в -1 для выбора первой записи должно стоять 0
 - я пробовал и так сделать:
Код

   Form1.ComboBoxEhView.Items.Clear;
   Form1.ComboBoxEhView.Items.Strings[0]:= Form1.EditEhSurname.Text
     + ' ' + copy(Form1.EditEhName.Text,1,1)
     + '.' + copy(Form1.EditEhMiddleName.Text,1,1) + '.';
- но ... "List index out of bounds(0)"?
 

Автор: Alex 29.5.2006, 14:02
Код

Form1.ComboBoxEhView.Items.Clear;
   Form1.ComboBoxEhView.Items.Add(Form1.EditEhSurname.Text
     + ' ' + copy(Form1.EditEhName.Text,1,1)
     + '.' + copy(Form1.EditEhMiddleName.Text,1,1) + '.');
   Form1.ComboBoxEhView.Items.Add(Form1.EditEhSurname.Text
     + ' ' + copy(Form1.EditEhName.Text,1,1) + '.');
Form1.ComboBoxEhView.ItemIndex:= 0;
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)