Советы по Delphi

         

Заполнение TDBComboBox/ListBox


Как заполнить TDBComboBox и TDBListBox

Большинство Delphi-компонентов для работы с базами данных заполняются сами после того, как прилинкованный набор данных будет открыт. Тем не менее, DbListboxs и DbComboboxs не поддерживают данную характеристику. Данные два компонента не предназначены для отображения вашего набора данных, но тем не менее, они заполняются на основе полученных данных. Использование этих компонентов является прямым форвардом. При обновлении вашей таблицы, значения DbListbox и DbCombobox будут поститься в соответствующее поле.

Заполняются DbCombobox и DbListbox точно также, как и обычные ComboBox и ListBox. Строки текста в ListBox и ComboBox представляют собой список TString. Данный список у наших компонентов хранится в свойстве "Items". При добавлении новых строк к списку используется метод "Add". Если вы хотите использовать другой тип данных, не String, то он должен быть преобразован во время выполнения программы. Если в конце списка имеется пустая строка, рекомендуем установить свойство "IntegralHeight" в True.

Заполнение DbListbox четырьмя строками программным путем могло бы выглядеть примерно так:

    DbListbox1.items.add('первая строка'); DbListbox1.items.add('вторая строка'); DbListbox1.items.add('третья строка'); DbListbox1.items.add('четвертая строка');

Заполнение DbListbox во время разработки требует использования Инспектора Объектов. Двойной щелчок на свойстве компонента "Items" позволит вызвать "String List Editor" (редактор списка строк) и ввести необходимые строки.



К сожалению, если заполнять данным способом ComboBox, значение по умолчанию отсутствует. Данный результат возможен при установке свойства DbCombobox "text". (свойство "text" не доступно в Инспекторе Объектов, оно должно быть установлено программным путем). Установка значения по умолчанию для первого значения в DbCombobox должна выглядеть примерно таким образом:

    DbCombobox1.text := DbCombobox1.items[0];

Часто полезным бывает заполнить DBListBox из набора данных. Это может быть сделано с помощью цикла:

    procedure TForm1.FormCreate(Sender: TObject); begin with table2 do begin open; while not EOF do begin DBlistbox1.items.add(FieldByName('name').AsString); next; end; end; end;

[000846]



Содержание раздела