МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Створення компонентів-списків у середовищі візуального програмування 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