Пример 12.1.
Создать проект работы со списками. В проекте предусмотреть:
- Инициализацию поля ввода.
- Заполнение комбинированного списка из поля ввода.
- Вставку строки в комбинированный список.
- Копирование строк из списка ComboBox в список ListBox,
Рекомендуемая форма программы:
Форма содержит следующие компоненты:
- ListBox1 – простой список.
- Label1 – метка для заголовка компонента ListBox1.
- ComboBox1 – комбинированный список.
- Label2 – метка для заголовка компонента ComboBox1.
- Edit1- однострочный редактор для ввода текста. В него вводится текст строки для списка.
- Label3 – метка для заголовка редактора Edit1.
- Button1– кнопка “Инициализация”. Позволяет очистить поле Edit1 и установить там курсор.
- Button2 – кнопка “Добавить в ComboBox” для заполнения компонента ComboBox1.
- Button3 – кнопка “Вставить в ComboBox”. Позволяет вставить строку в заданное место в списке.
- Button4 – кнопка “Копировать в ListBox”. Позволяет скопировать в ListBox строки, выбираемые в ComboBox.
Выполнение
- Активизируем ИСР, выбрав Lazarus в проводнике Windows. В главном меню исполняем команду Файл=>Создать…Активизируется окно выбора типа проекта. В нем нужно выбрать Project / Application (Приложение). Теперь отображаются окна проекта:
- Пустая Форма, которую нужно заполнить компонентами.
- Инспектор объектов.
- Редактор кода с шаблоном кода модуля формы.
- Сообщения.
2. Задание свойств формы. Выбираем объект Form1 и подбираем его размеры и положение. В окне Инспектора объектов назначаем свойства формы:
Свойство | Значение | |
English | Перевод | English |
Name | Имя | Form1 |
Caption | Надпись | Списки |
- Заполнение формы. При заполнении формы в палитре компонент выбирается нужный блок и переносится в форму. Там подбираются его положение и размеры. Затем в окне Инспектора объектов назначаются свойства компонента. Большая часть свойств устанавливается автоматически, их редактировать не следует. Нужные нам компоненты размещаются в палитре компонент на странице Standard.
- Для кнопок необходимо добавить функциональность, написав код обработчика события нажатия. При двойном щелчке по кнопке ИСР автоматически объявляет подпрограмму обработчика. В код модуля формы проекта автоматически заносятся:
- В поля объекта заголовок обработчика. Заголовок обработчика формируется автоматически. Его имя содержит записанные без пробелов имя компонента и события с префиксом on, которое отрабатывается.
- В раздел реализации шаблон обработчика. Он имеет заголовок, совпадающий с заголовком в поле объекта с добавлением имени формы в начале заголовка. В него между операторными скобками begin…end надо внести текст подпрограммы обработки события. Для некоторых обработчиков могут потребоваться и локальные переменные.
Листинг модуля формы
unit Prg_12_1_;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
ListBox1: TListBox;
ComboBox1: TComboBox;
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Prg_12__1: TForm_1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=”;
Edit1.SetFocus;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ComboBox1.Items.Add(Edit1.Text);
Edit1.Text:=”;
Edit1.SetFocus;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ComboBox1.Items.Insert(comboBox1.ItemIndex,Edit1.Text);
Edit1.Text:=”;
Edit1.SetFocus;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ListBox1.Items.Add(ComboBox1.Items[ComboBox1.ItemIndex]);
end;
initialization
{$I prg_12_1_.lrs}
end.
После заполнения панелей компонентами форма окно Инспектор объектов приобретает вид, по которому проверьте правильность введенных компонент, их имена и иерархию.
- Сохраним проект в папке с именем 12_1. Для этого вызовем команду Файл=>Сохранить как…, которая приводит к появлению диалогового окна. В нем нужно попасть в нужную папку и сохранить проект. При сохранении проекта приложения необходимо сохранять:
- модуль формы (с именем Prg_12_1_),
- проект (с именем Prg_12_1).
- Проверим программу в работе. Запускаем программу командой Запуск=>Запуск. Проект компилируется и собирается, в папке проекта размещается исполняемый файл с расширением .exe. При его исполнении возникает окно приложения. В нем нужно проверить работу обработчиков.
- Инициализация. Кнопкой Инициализация очищаем Edit1 и передаем ему фокус ввода. Курсор появляется в поле ввода Edit1.
- Заполнение списка ComboBox. Для каждой строки в редакторе Edit1 заносим текст, кнопкой Добавить в ComboBox переносим его в список. Повторяем операцию нужное число раз. Каждый раз проверяем список ComboBox, убеждаясь в появлении новой строки в конце.
- Редактирование. В редакторе Edit1 заносим строку текста для ввода в произвольно выбираемую позицию. В ComboBox выделяем позицию для ввода, Кнопкой Вставить в ComboBox текст из редактора перемещается в верхнюю строку редактирования ComboBox.
- Копирование. В ComboBox выделяем позицию для копирования, ее текст перемещается в верхнюю строку редактирования. Кнопкой Копировать в ListBox переносим строку в ListBox. Каждый раз наблюдаем ListBox, чтобы убедится в появлении там новой строки в очередной позиции. Обратите внимание на появление в ListBox линейки прокрутки, когда его поле заполнено.
Приложение перед закрытием программы:
Выводы
В ИСР Lazarus определены несколько компонент списков:
- ListBox – простой список строк текста для выбора без редактирования.
- ComboBox – комбинированный список строк текста с возможностью выбора и редактирования.
Все списки содержат массив строк текста, для которых применяются свойства:
- Items(Index) – массив строк текста с номером Index. Нумерация с 0.
- ItemIdent – номер выделенного элемента.
- Count – число элементов в списке.
- Capacity – максимальное число элементов в списке.
Для работы со списками доступны методы. Основные из них:
- Add – добавляет элемент в конец списка.
- Insert(Index,Item) – добавляет элемент Item в позицию с номером Index. Список переиндексируется.
- Delete (Index) – удаляет элемент с номером Index. Список переиндексируется.