Мы уже познакомились с рядом компонент, расположенных на вкладке Standad политры компонентов.
В частности, приводились примеры использования компонентов Frame, MainMenu, Button, Label, Edit, Memo, Panel.
В данной статье мы рассмотрим использование визуального компонента ListBox.
Этот компонент может применяться для хранения списка строк и получения на выходе одной выбранной строки или целой группы строк.
Настройки компонента.
Как обычно, настроить свойства компонента можно или с помощью инспектора объектов, либо программно.
В панели компонентов ListBox выбираем ярлык:
В результате на форме появляется компонент:
Чтобы наполнить его содержимым, необходимо воспользоваться инспектором объектов, пунктом «Items»:
При нажатии на кнопку с тремя точками открывается диалог-редактор, позволяющий формировать массив строк. После нажатия «OK» строки появляются на поле компонента.
Введенные значения затем можно оставить в одном столбце. Если строки не помещаются по высоте, а значение свойства «Columns» равно «0», то появляется вертикальная полоса прокрутки. Если значение свойства «Columns» равно «1» — то полоса прокрутки будет расположена горизонтально.
При значении свойства «Columns» равным «2», строки расположатся в двух столбцах:
Доступ ко всему массиву строк.
В программе доступ ко всему массиву строк можно получить, используя свойство «Items». Например, передать весь массив строк в компонент «Memo»
Это сделано с помощью следующещго кода:
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 используется для доступа к содержимому активной строки. После щелчка по строке, стока оказывается выбранной (закращена синим цветом) и активной (вокрг неё образуется рамка из точек):
Все строки в 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»).
Это осуществляется с помощью следующего кода:
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.
Этот компонент расположен на вкладке
Timer — компонент невизуальный. По сути это метроном, срабатывающий через заданные промежутки времени.
Промежуток времени устанавливается через свойство «Interval». Таймер отсчитывает так называемые «тики». Один тик равен 1 милисекунде.
Значение интервала, после которого происходит срабатывание таймера, указывается в милисекундах. Например, 1000 (то есть задан интервал, равный 1с).
Запуск таймера осуществляется присваиванием свойству «Enabeled» значения «true». Остановка — присваивание этому свойству значения «false».
Действия, которые надо совершить при срабатывании таймера, указываются в обработчике события «onTimer».
В дальнейшем эти два компонента будут использованы в программе «Светофор».
* * *