МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Створення компонентів-списків у середовищі візуального програмування Delphi.
ІНСТРУКЦІЯ
до лабораторної роботи № 3
з курсу
“Застосування засобів об’єктно-орієнтованого програмування в лінгвістичних задачах” спеціальності 07.030505 “Прикладна лінгвістика”.
ЗАТВЕРДЖЕНО
На засіданні кафедри “Системи
Автоматизованого проектування”
Протокол №___ від _________
Львів - 2007

Створення компонентів-списків у середовищі візуального програмування Delphi.
Інструкція до лабораторної роботи №3 з курсу “Застосування засобів об’єктно-орієнтованого програмування в лінгвістичних задачах” для студентів спеціальності 07.030505 “Прикладна лінгвістика”. Укл. Д.В. Корпильов. Львів НУЛП, 2007.
Укладач: Д.В. Корпильов, асистент.
Відповідальний за випуск С.П. Ткаченко, к.т.н., доцент
Рецензенти І.І. Мотика, к.т.н., доцент

Ціль: Навчиться використовувати компоненти-списки TListBox і TcomboBox, GroupBox, RadioButton, StringGrid, CheckBox.
Що ми робимо?
У цілочисленому масиві знайти максимальний і мінімальний елементи і поміняти їхній місцями.
Частина перша
Теоретичні відомості.
Компонент TListBox
Сторінка Палітри Компонентів: Standard.

Ієрархія:
TObject>TPersistent>TComponent>TControl>TWinControl>
TCustomListBox> TListBox
Компонент TListBox призначений для відображення списку рядків на екрані - список ListBox.
Цей компонент має у своєму складі об'єкт-список, що є екземпляром класу TStrings і містить набір рядків з асоційованими з ними довільними об'єктами. Якщо говорити точніше, використовується не сам абстрактний клас TStrings, а його однойменні нащадки з перевизначеними методами.
Таким чином, компонент ListBox, що є екземпляром класу TListBox, дозволяє відображати на екрані список рядків, кожна з який може бути зв'язана, наприклад, з деяким малюнком. Безпосереднім предком класу TListBox є клас TCustomListBox, що породжений від класу TWinControl. Отже, компонент ListBox є віконним керуючим елементом.
Основні характеристики списку ListBox закладені в класі TCustomListBox. Головними з них є наявність списку рядків класу TStrings, засобів відображення списку і можливість маніпулювання його елементами.
Основні властивості класу TCustomListBox:
property Itemlndex: Integer;
Визначає індекс виділеного елемента в списку. Нумерація елементів починається з нуля. Якщо виділеного елемента немає, ця властивість приймає значення, рівне -1. Якщо в списку може бути виділено кілька елементів, вказується індекс активного виділеного елемента. Властивість доступна тільки на етапі виконання програми.
property Items: TStrings;
Задає елементи списку.
property MultiSelect: Boolean;
Визначає, чи дозволяється одночасно виділяти кілька елементів списку (якщо True, те таке виділення можливо, у противному випадку виділити можна тільки один елемент).
property Selected [Index: Integer]: Boolean;
Якщо i-ий елемент списку виділений, то Selected[i] дорівнює True, у противному випадку - False. Властивість доступна тільки на етапі виконання програми.
property Sorted: Boolean;
Указує, чи належні рядки в списку автоматично сортуватися за абеткою.
Метод procedure Clear видаляє всі елементи списку.
Подією за замовчуванням для списку є подія OnClick.
ComboBox - комбінований рядок введення
Сторінка Палітри Компонентів: Standard.

Ієрархія:
TObject>TPersistent>TComponent>TControl>TWinControl >
TCustomComboBox
Комбінований рядок введення ComboBox є екземпляром класу TCustomBox і поєднує в собі можливості рядка введення Edit і списку ListBox. По зовнішньому вигляду компонентів Combo Box нагадує звичайний рядок уведення Edit, але додатково має в правій частині кнопку зі стрілкою, спрямованої вниз.
Якщо клацнути мишею по цій кнопці, з'явиться список, що випадає, подібний до списку компонента List Box. Наявність рядка введення в компонента Combo Box розширює його можливості в порівнянні зі звичайним списком List Box. Наприклад, використовуючи рядок уведення, можна вводити в список нові елементи, здійснювати пошук потрібного елемента в списку, відображати активний елемент списку.
Основні характеристики комбінованого рядка введення закладені в класі TCustomComboBox, що є безпосереднім предком класу TCustomBox. Предком класу TCustomComboBox є безпосередньо базовий клас усіх віконних елементів керування TWinControl.
Основні властивості класу TСustomComboBox:
property DropDownCount: Integer;
Визначає максимальне число елементів, відображуване в списку, що розкривається.
property DroppedDown: Boolean;
Указує, чи відображається розкривається список у даний момент. Властивість доступна тільки на етапі виконання програми.
property Itemlndex: Integer;
Визначає індекс виділеного елемента в списку. Нумерація елементів починається з нуля. Якщо виділеного елемента немає, воно приймає значення, рівне -1. Властивість доступна тільки на етапі виконання програми.
property Items: TStrings;
Так само, як і в класі TCustomListBox, задає елементи списку.
type TComboBoxStyle = (csDropDown, csSimple, csDropDownList, csOwnerDrawFixed, csOwnerDrawVariable); property Style: TComboBoxStyle;
Визначає стиль зображення списку:
csDropDown - рядка списку мають однакову фіксовану висоту, що збігається з вікном редагування, що дозволяє вводити чи редагувати текст;
csSimple - список завжди розкритий;
csDropDownList - рядка списку мають однакову фіксовану висоту, вікно редагування відсутне;
csOwnerDrawFixed - рядок списку має висоту, обумовлену властивістю ItemHeight, і не можуть редагуватися в рядку введення;
csOwnerDraw Variable - рядок списку має висоту, обумовлену в оброблювачі події OnMeasureltem, що виникає при необхідності одержання висоти елемента перед його перемальовуванням, і не можуть редагуватися в рядку введення.
type TCaption = string; property Text: TCaption;
Містить текст обраної чи введеної користувачем стрічки. Властивість успадкована від класу TControl.
Оскільки в класі TComboBox у порівнянні з класом TListBox відсутня властивість MultiSelect, те в компоненті Combo Box не допускається множинний вибір.
Основні операції для обробки списку в компоненті ComboBox - додавання, видалення, пошук, сортування елементів - здійснюється так само, як і в списку ListBox.
Подією за замовчуванням для комбінованого рядка введення ComboBox є подія OnChange, що виникає при зміні тексту у вікні редагування в результаті прямого редагування чи тексту в результаті вибору зі списку.
Порядок виконання роботи
Частина 1. Використання компонента TListBox
1. Відкрити новий додаток за допомогою команди File| New Application.
2. Зберегти проект у вашому робочому каталозі, виконавши команду меню File|Save Project As.
3. З сторінки Standard на Form1 помістити компоненти Edit1:TEdit; Button1, Button2:TButton, ListBox1,ListBox2:TListBox.

4. Встановити значення властивості Text компонента Edit1 – порожній рядок.

5. Установити для лівої кнопки значення властивості Caption рівним ‘Введення’, а для правої- ‘Рішення’.

6. У розділ interface модуля вставити опис масиву і змінних що використовуються
a:array[1..10] of integer;
i,min,max,imin,imax:integer;
7. Виконати подвійне натискання на формі Form1, у результаті чого буде створена база події OnCreate для форми, що виникає в момент створення форми.
Розміщення операторів у цьому оброблювачі в багатьох випадках еквівалентно розміщенню операторів у секції initialation модуля. Помістити там наступні рядки
i:=0;
ListBox1.Clear;
ListBox2.Clear;
8. Виконати подвійний щиглик по кнопці «Введення» і в оброблювач події OnClick помістимо наступний код:
ListBox1.Items.Add(Edit1.Text);
i:=i+1;
a[i]:=StrToInt(Edit1.Text);
Edit1.SetFocus;
9. Виконати подвійне натискання по кнопці «Рішення» і в оброблювач події OnClick помістимо наступний код:
max:=a[1];
imax:=1;
min:=a[1];
imin:=1;
for i:=2 to 10 do
begin
if max<a[i] then
begin max:=a[i]; imax:=i end;
if min>a[i] then
begin min:=a[i]; imin:=i end;
end;
a[imax]:=min;
a[imin]:=max;
for i:=2 to 10 do
ListBox2.Items.Add(IntToStr(a[i]));
10. Для зручності роботи з додатком створити оброблювач події OnKeyDown для рядка введення Edit1, у якому при натисканні на клавішу Enter фокус уведення буде переводитися на кнопку «Ввести»:
if key=13 then Button1.SetFocus;
11.Запустити програму. Для введення цілих чисел використовуємо рядок Edit1. Введення кожного числа завершуємо натиснувши двічі клавішу Enter, або натиснувши кнопку «Введення».Уведені числа відображаються в першому списку. Після натискання на кнопку «Рішення» одержимо результат у другому списку.
Частина 2. Використання компонента TComboBox
1.Відкрити новий додаток за допомогою команди File| New Application.
2.Збережете проект у вашому робочому каталозі, виконавши команду меню File|Save Project As.
3. З сторінки Standard на Form1 помістити компоненти Button1, Button2:TButton, ComboBox1,ComboBox2:T