Компонент Delphi ListBox

Мы уже познакомились с рядом компонент, расположенных на вкладке Standad политры компонентов.

В частности, приводились примеры использования компонентов Frame, MainMenu, Button, Label, Edit, Memo, Panel.

В данной статье мы рассмотрим использование визуального компонента ListBox.

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

Настройки компонента.

Как обычно, настроить свойства компонента можно или с помощью инспектора объектов, либо программно.

В панели компонентов ListBox выбираем ярлык:

Delphi ListBox

В результате на форме появляется компонент:

Delphi ListBox

Чтобы наполнить его содержимым, необходимо воспользоваться инспектором объектов, пунктом «Items»:

Delphi ListBox

При нажатии на кнопку с тремя точками открывается диалог-редактор, позволяющий формировать массив строк. После нажатия «OK» строки появляются на поле компонента.

Введенные значения затем можно оставить в одном столбце. Если строки не помещаются по высоте, а значение свойства «Columns» равно «0», то появляется вертикальная полоса прокрутки. Если значение свойства «Columns» равно «1» — то полоса прокрутки будет расположена горизонтально.

При значении свойства «Columns» равным «2», строки расположатся в двух столбцах:

Delphi ListBox

Доступ ко всему массиву строк.

В программе доступ ко всему массиву строк можно получить, используя свойство «Items». Например, передать весь массив строк в компонент «Memo»

Delphi ListBox

Это сделано с помощью следующещго кода:

procedure TForm1.Button6Click(Sender: TObject);

var LI:TStrings;

begin

LI:=Form1.listBox2.Items;

Form1.Memo1.Lines:=LI;

end;

Промежкточная переменная LI использована для наглядности. Можно было обойтись одной строкой:

Form1.Memo1.Lines:=Form1.listBox2.Items;

Доступ к выбранной строке.

Как правило, ListBox используется для доступа к содержимому активной строки. После щелчка по строке, стока оказывается выбранной (закращена синим цветом) и активной (вокрг неё образуется рамка из точек):

Delphi ListBox

Все строки в ListBox пронумерованы от «0». Номер активной строки отображается в свойстве «ItemIndex».

Если «MultiSelect» и «ExtendedSelect» установлены в «False», то можно выбрать только одну строку из списка.

С помощью свойства «Items» получаем значение выбранной строки. Затем отображаем его, например, в компоненте «Memo»:

procedure TForm1.ListBox2Click(Sender: TObject);

var LI:TStrings;

s:string;

i:integer;

begin

LI:=Form1.listBox2.Items; //получить список строк

i:=Form1.listBox2.ItemIndex;

s:=LI[i];

Form1.Memo1.Lines.Clear;

Form1.Memo1.Lines.Add(s);

end;

Здесь мы использовали событие «onClick» компонента «ListBox».

Если установить свойство «MultiSelect» в «True», а «ExtendedSelect» в «False» то последовательно щёлкая по строкам, можно выделить сразу несколько строк.

Повторный щелчок по выделенной строке отменяет выделение.

Если и «MultiSelect» установлен в «True», и «ExtendedSelect» установлен в «True», то можно выделять строки, используя клавиши «Ctrl» или «Shift».

Свойство «SelectCount» будет содержать количество выделенных строк.

Свойство

Решим задачу: вывести в компонент «Memo» три выделенные строки (выделяем щелчками мыши при нажатой клавише «Ctrl»).

Delphi ListBox

Это осуществляется с помощью следующего кода:

procedure TForm1.Button5Click(Sender: TObject);

var LI:TStrings;

s:string;

i,j:integer;

begin

LI:=Form1.listBox2.Items; //получаем строки списка

i:=Form1.listBox2.Count; //количество строк в списке

Form1.Memo1.Lines.Clear; //очистить компонент Memo1

for j:=0 to i-1 do

begin

if Form1.listBox2.selected[j] then //если j-я строка выбрана

begin

s:=LI[j]; //то получаем её из списка

Form1.Memo1.Lines.Add(s); //добавить строку в компонент Memo1

end;

end;

end;

Если список надо формировать программно, то используются следующие методы.

Метод Add(строка) — добавить строку в конец списка.

Метод Insert(номер_строки, строка) — вставить строку так, чтобы позиция вставленной строки оказалась равной «номер_строки».

Метод Delete(номер_строки) — удаляет строку с указанным номером.

Методы SaveToFile и LoadDromFile сохраняют содержимое списка в файл и загружает из файла сохранённый список.

Далее компонент ListBox будет использован в программе «Светофор».

Компонент Timer.

Этот компонент расположен на вкладке

Delphi ListBox

Timer — компонент невизуальный. По сути это метроном, срабатывающий через заданные промежутки времени.

Промежуток времени устанавливается через свойство «Interval». Таймер отсчитывает так называемые «тики». Один тик равен 1 милисекунде.

Значение интервала, после которого происходит срабатывание таймера, указывается в милисекундах. Например, 1000 (то есть задан интервал, равный 1с).

Запуск таймера осуществляется присваиванием свойству «Enabeled» значения «true». Остановка — присваивание этому свойству значения «false».

Действия, которые надо совершить при срабатывании таймера, указываются в обработчике события «onTimer».

В дальнейшем эти два компонента будут использованы в программе «Светофор».

* * *

Обновлено: 14.04.2021 — 13:08

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *