Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
123123.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
932.7 Кб
Скачать

3. Компоненты ComboBox, ListBox.

ComboBox представляет собой комбинацию списка строк ListBox со строкой ввода Edit. При этом "список строк" компонента Delphi ComboBox вначале скрыт, и раскрывается при щелчке мышкой по треугольничку раскрытия, который находится справа в строке ввода:    Таким образом, с помощью Delphi ComboBox место на Форме экономится для расмещения других элементов интерфейса программы. А при необходимости раскрытие списка строк можно вообще запретить.    Многие свойства и возможности компонента Delphi ComboBox по работе со строками (объектами Items) такие же как и у компонента Delphi ListBox, поэтому повторно описывать их не буду. Опишу отличия и дополнительные возможности.    Итак, за возможность раскрытия компонента ComboBox отвечает стиль - свойство Style:

Стиль компонента ComboBox1 равен   ComboBox1.Style = csDropDown (список может быть раскрыт, можно писать в строке ввода) Стиль компонента ComboBox2 равен   ComboBox1.Style = csSimple (список не может быть раскрыт, можно писать в строке ввода) При стиле csDropDownList компонент может быть раскрыт, но свойство Text может принимать значения только одной из строк, сохранённых в компоненте, то есть пользователь лишён возможности писать в строке ввода.

   Количество строк, видимых при раскрытии списка, равно DropDownCount. Если реальное количество сохранённых строк больше этого количества, то автоматически появляется полоса прокрутки. Программист может заставить список раскрыться в нужный момент. Для этого нужно свойству DroppedDown присвоить значение True. Для этой же цели пользователь может использовать клавиатурную комбинацию ALT+ВНИЗ.    Максимально допустимое количество символов в текстовой строке задаётся параметром MaxLength, причём значение 0 означает отсутствие ограничений. Свойство CharCase управляет преобразованием вводимого текста к верхнему (значение CharCase = ecUpperCase) или нижнему (значение CharCase = ecLowerCase) регистру. Значение ecNormal означает, что текст вводится без преобразования.    Основными событиями компонента Delphi ComboBox являются:

Событие

Условие генерации

OnChange

Изменился текст в строке ввода.

OnDropDown

Список раскрывается. Это событие нужно обработать, если содержимое списка может изменяться во время работы программы. Тогда в обработчике этого события можно заново сформировать содержимое списка.

Компонент ListBox представляет из себя прямоугольную область, заполненную списком однострочных текстовых элементов. С помощью клавиатуры или за счет выбора мыши, можно осуществить отбор необходимы элементов в программе.

Свойство в котором находится список строк это Items типа TString. На этапе проектирования, для его заполнения, необходимо нажать на кнопке с многоточием напротив этого свойства в окне Инспектора Объектов. В приложении поставить в любой обработчик (допустим событие кнопки)

ListBox1.Items.Add('Диван'); или ListBox1.Items.Add(Edit1.Text); //     добавление будет из компонента Edit1.Text

Для полной очистки списка:

 ListBox1.Clear;

Чтобы удалить выделенный элемент:

ListBox1.DeleteSelected;

По умолчанию список состоит из одной колонки. И если список большой и не все элементы помещаются в нем автоматически справа появляется или исчезает вертикальная полоса прокрутки (первый и второй компонент ListBox на рисунке ниже).  Для того чтобы появилась горизонтальная полоса прокрутки необходимо свойству Columns типа  Integer поставить значение больше нуля. Третий компонент - Columns равен 1, второй 2.

 Свойство Sorted равное true дает возможность расположить элементы в алфавитом порядке. За счет сортировки списка в алфавитом порядке будет легче увидеть необходимый элемент, особенно если список большой. Применив сортировку в Инспекторе Объектов отменить сортировку не удастся.

Для того чтобы определить какой элемент был выбран пользователем воспользуемся данной записью, включив его в обработчик какого нибудь события:

 ShowMessage(ListBox1.Items[ListBox1.ItemIndex]);

где ShowMessage() - простейшая функция вывода на экран текстовых сообщений, а ListBox1.ItemIndex - номер текущего элемента.

MultiSelect - свойство благодаря которому можно можно выбрать не 1 элемент, а более. Для этого ставим его равным TRUE. Щелкая мышью, при нажатой клавише CTRL, выбираем произвольные элементы. Если свойство ExtendedSelect равно TRUE,  удерживая клавишу SHIFT выделим непрерывный диапазон списка. Для определения выделен компонент или нет обратимся к свойству Selected. Выражение:

ListBox.Selected[3]

равно TRUE, если четвертый элемент в компоненте выделен (номера элементов начинаются с нуля).

ItemAtPos свойство, которое переводит  координаты щелчка внутри списка в индекс элемента. Расположим на форме компоненты ListBox, Panel и Label согласно рисунку. Для компонента ListBox в обработчике отпускания кнопки мыши напишем следующий код.

procedure TForm1.ListBox1MouseUp(Sender:

TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

Point : TPoint;

Nomer : Integer;

begin

Point.X := X;

Point.Y := Y;

Nomer := ListBox1.ItemAtPos(Point, True);

Label1.Caption := IntToStr(Nomer);

Panel1.Caption := ListBox1.Items[ListBox1.ItemIndex];

end;

В переменной Nomer запишется индекс элемента и компонент Label1 выведет его. Надпись на Panel1 выведет текст элемента ListBox1.

Итог: был разобран компонент ListBox с его свойствами и методами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]