Вкладка Standard. Компонент TComboBox

   
На этом шаге мы рассмотрим компонент TComboBox

   
Компонент TComboBox (Комбинированный список) представляет собой вариант списка с
присоединенным дополнительным полем, в котором отображается выбранный элемент списка. Это же поле может
использоваться для ввода новых элементов или для быстрого поиска элемента по начальным символам. Если на экране
отображается только поле без списка, то для раскрытия списка можно использовать комбинацию клавиш Alt+вниз, а
для выбора элемента списка используются клавиши перемещения (клавиши со стрелками).

   
Компонент TComboBox работает в пяти разных режимах, определяемых значением свойства Style.

   
Перечислим возможные значения свойства Style компонента TComboBox.

   

Таблица 1. Значения для свойства Style

ЗначениеМеханизм работы списка
csDropDownСоздается раскрывающийся список с возможностью редактирования. Свойство MaxLength
определяет максимально допустимое число символов, которое можно ввести в это поле (значение 0 указывает
на отсутствие ограничений). Текст, введенный пользователем, доступен с помощью свойства Text
csDropDownListСоздается раскрывающийся список только для выбора значений, уже имеющихся в списке
csSimpleОтличается от стиля csDropDown только тем, что список не является раскрывающимся
csOwnerDrawFixedСоздается раскрывающийся список только для выбора значений с возможностью оформления пользователем
csOwnerDrawVariableСоздается раскрывающийся список только для выбора значений с возможностью оформления пользователем. Элементы могут иметь разную высоту

   
Вводимый текст может автоматически преобразовываться к верхнему регистру (если свойство
CharCase имеет значение ecUpperCase), к нижнему (ecLowerCase) или никак
не преобразовываться (ecNormal по умолчанию).

   
Максимальное число элементов, одновременно отображаемых в видимой части списка, задается в свойстве
DropDownCount. Чтобы открыть список из программы, свойству DroppedDown (Раскрыть)
надо присвоить значение True.

   
Понятия выделенная строка в раскрывающемся списке нет. В нем имеется только текущая выбранная строка
(ее номер в списке хранится в свойстве ItemIndex). Соответственно нельзя и выделять строки списка.
Единственный метод, связанный с выделением данных, - это процедура SelectAll, которая выделяет весь
текст, введенный пользователем в присоединенное поле. При работе с раскрывающимся списком наиболее важными
являются перечисленные ниже события.

   
Перечислим основные события компонента TComboBox.

   

Таблица 1. События компонента TComboBox

НазваниеУсловия генерации
OnChangeПользователь изменил текст в присоединенном поле
OnDropDownСписок раскрывается. Это событие необходимо обрабатывать, если содержимое списка может меняться во
время работы программы. Тогда в обработчике этого события можно заново сформировать содержимое списка
(свойство Items).

   
Пример программы с использованием поля со списком приведен ниже, а результат ее выполнения показан на рис. 1,
где выбранный элемент отображается на надписи.

   
Поместите на форму компоненты: Label1, ComboBox1. Для Form1 создайте обработчик OnCreate:

procedure TForm1.FormCreate(Sender: TObject);
var
  i:Integer;
begin
   for i:=0 to 5 do
      ComboBox1.Items.Add ('Элемент  '+IntToStr(i));
end;

   
Для компонента ComboBox1 - обработчик OnSelect:

procedure TForm1.ComboBox1Select (Sender: TObject);
var
   i:Integer;
begin
    i:=ComboBox1.ItemIndex;
    Label1.Caption:=ComboBox1.Items.Strings[i];
end;

   
Если вы все сделали правильно, то у вас получится следующее:


Рис.1.Компонент TComboBox

   

   
Приведем текст программы

unit Unit1;
  interface
   uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
  type
  TForm1 = class (TForm)
    ComboBox1: TComboBox;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Select(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
   var
  Form1: TForm1;
  implementation
  {$R *.dfm}
 procedure TForm1.FormCreate(Sender: TObject);
var
  i:Integer;
begin
   for i:=0 to 5 do
      ComboBox1.Items.Add ('Элемент  '+IntToStr(i));
end;
  procedure TForm1.ComboBox1Select (Sender: TObject);
var
   i:Integer;
begin
    i:=ComboBox1.ItemIndex;
    Label1.Caption:=ComboBox1.Items.Strings[i];
end;
  end.

Текст этого примера можно взять здесь.

   
На следующем шаге мы рассмотрим компонент TScrollBar



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий