Вниз
Скачать: CL | DM;

Вопрос по выпадающему списку   Найти похожие ветки 

 
TSubject   (2012-04-02 09:45) [0]

Здравствуйте.

Если в ComboBox загружены объекты, которые состоят из нескольких полей. Например

TPerson = class(TObject)
   ID : String;
   FName : String;
   LName : String;
 end;

А в самом списке я отображаю например FName, когда пользователь выберет из списка определенное имя, то в тексте уже нужно отображать например ID. Подскажите пожалуйста как это реализовать. Пробовал обрабатывать OnChange, не дало результата. Может где то нужно переопределять свойство или есть какой то стандартный метод? Спасибо.


 
begin...end ©   (2012-04-02 09:51) [1]

OnSelect ?


 
TSubject   (2012-04-02 09:59) [2]

Загвоздка в том, что сменить ItemIndex я могу, а текст менять на другой не получается.


 
begin...end ©   (2012-04-02 10:08) [3]

> TSubject   (02.04.12 09:59) [2]

Не понял. Обработчик OnSelect выполнится, когда "пользователь выберет из списка определенное имя". Где нужно отобразить соответствующий ID в ответ на это? И в чём именно проблема?


 
TSubject   (2012-04-02 10:12) [4]


> Не понял. Обработчик OnSelect выполнится, когда "пользователь
> выберет из списка определенное имя". Где нужно отобразить
> соответствующий ID в ответ на это? И в чём именно проблема?
>


Отобразить необходимо в "Text" ComboBox-а .

Например Пользователь выбрал из списка наименование, и тут происходит:

cbPersons.Text := TPerson(cbPersons.Items.Objects[cbPersons.ItemIndex]).ID;


 
begin...end ©   (2012-04-02 10:20) [5]

> TSubject   (02.04.12 10:12) [4]
> Отобразить необходимо в "Text" ComboBox-а .

Зачем? Может быть, лучше отображать Id в каком-нибудь Edit"е, расположенном рядом с ComboBox"ом? Как раз будет видно соответствие Name - Id. Если бы я выбирал что-то в списке, а в результате выбора мне в этом же контроле показывали бы что-то совсем другое (пусть и соответствующее), я бы удивился.


 
TSubject   (2012-04-02 10:25) [6]


> Зачем? Может быть, лучше отображать Id в каком-нибудь Edit"е,
>  расположенном рядом с ComboBox"ом? Как раз будет видно
> соответствие Name - Id. Если бы я выбирал что-то в списке,
>  а в результате выбора мне в этом же контроле показывали
> бы что-то совсем другое (пусть и соответствующее), я бы
> удивился.


Заказчик требует, что бы в списке отображалось "код и наименование" например: (1 - Петров, 2 - Аршавин) , при выборе элемента, что бы уже отображался код. При этом я сейчас делаю ширину ComboBox-а по размеру Кода, а размер элементов списка широким, что бы вмещало наименование.


 
TSubject   (2012-04-02 10:27) [7]

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


 
icWasya ©   (2012-04-02 10:44) [8]

Как вариант - использовать два компонента TEdit и TCombobox.
Combobox разместить под Edit-ом так, что бы торчала только кнопка.
В этот  Edit и помещать нужный Вам текст. Может быть понадобится перехватывать некоторые нажатия кнопок в Edit-е


 
Anatoly Podgoretsky ©   (2012-04-02 11:28) [9]

TDBLookupControl поддерживает более одного поля



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.049 c
15-1333531744
AV
2012-04-04 13:29
2013.03.22
сохранность данных, кто как?


4-1258417192
мурзик
2009-11-17 03:19
2013.03.22
Как определить что за изменения произошли в директории?


15-1351694777
Handler
2012-10-31 18:46
2013.03.22
как будет на английском


2-1339141857
Александр_2012
2012-06-08 11:50
2013.03.22
Об управлении монитором


15-1346788263
AV
2012-09-04 23:51
2013.03.22
Запретить пользоваться сайтами, кроме явно разрешенных




   Наверх