Створення компонентів-списків у середовищі візуального програмування Delphi.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2007
Тип роботи:
Інструкція та методичні настанови
Предмет:
Застосування засобів об’єктно-орієнтованого програмування у лінгвістичних задачах

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ EMBED PBrush Національний Університет “Львівська політехніка” Створення компонентів-списків у середовищі візуального програмування 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:TComboBox.  4. Встановити властивість DropDownCount для компонентів ComboBox1 і ComboBox2 рівним 10.  6. Установити значення властивості Text компонентів ComboBox1 і ComboBox2– порожній рядок. 7. У розділ interface модуля вставити опис масиву і змінних що використовуються a:array[1..10] of integer; i,min,max,imin,imax:integer; 8. Установити наступний оброблювач події OnCreate для форми: i:=0; ComboBox1.Clear; ComboBox2.Clear; ComboBox1.TabOrder:=0; 9. Виконати подвійний натискання на кнопці «Введення» і в оброблювач події OnClick помістимо наступний код: ComboBox1.Items.Add(ComboBox1.Text); i:=i+1; a[i]:=StrToInt(ComboBox1.Text); ComboBox1.SetFocus; 10. Виконати натискання на кнопці «Рішення» і в оброблювач події OnClick помістимо наступний код: max:=a[1]; imax:=1; min:=a[1]; imin:=1; for k:=2 to 10 do begin if max<a[k] then begin max:=a[k]; imax:=k end; if min>a[k] then begin min:=a[k]; imin:=k end; end; a[imax]:=min; a[imin]:=max; for k:=1 to 10 do ComboBox2.Items.Add(IntToStr(a[k])); ComboBox2.DroppedDown:=true; 11. Для зручності роботи з додатком створити оброблювач події OnKeyDown для списку ComboBox1, у якому при натисканні на клавішу Enter фокус уведення буде переводитися на кнопку «Ввести»: if key=13 then Button1.SetFocus; 12. Запустити програму. Для введення цілих чисел використовуємо список ComboBox1. Введення кожного числа завершуємо натиснувши двічі клавішу Enter, або натиснувши кнопку «Ввести». Введені числа відображаються в першому списку. Після натискання на кнопку «Рішення» одержимо результат у другому списку. Частина 2 Розробимо програму яка дозволяє заповнювати 2-х вимірний масив випадковими цілими числами, знаходити максимальне та мінімальне значення елементів масиву та обраховує додаток головної діагоналі масиву. 1. Розмістити на формі компоненти StringGrid з палітри компонентів Additional  2. Розмістити на формі компоненти GroupBox з палітри компонентів Standard  3. Розмістити на формі компоненти CheckBox, Edit з палітри компонентів Standard  4. Розмістити на формі компоненти Button з палітри компонентів Standard    5. Поміняти властивість Caption для форми та кожного компонента, як показано малюнку  6. Прив’язати для клавіші «Заповнити» процедуру. procedure TForm1.Button1Click(Sender: TObject); var i,j: integer; begin Randomize; // Генератор випадкових чисел with StringGrid1 do //вивід номера стрічок у 0- стовпці, та номера стовпців у // 0- стрічці begin i:=0; for j:= 1 to RowCount - 1 do // Вивести номера стрічок Cells[i,j] := IntToStr(j); j:=0; for i:= 1 to ColCount - 1 do // Вивести номера стовпців Cells[i,j] := IntToStr(i); end; with StringGrid1 do // Вивести в таблиці елементи 2-х вимірного масиву for i:= 1 to ColCount - 1 do for j:= 1 to RowCount - 1 do begin Cells[i,j] := IntToStr(Round(Sin(Random(100))*100)); end; end; 7. Прив’язати для клавіші «Обчислити» процедуру. procedure TForm1.Button2Click(Sender: TObject); var min,max,sum: integer; i,j: integer; begin if Checkbox1.Checked then // Визначення мінімального ел. в масиві with StringGrid1 do begin Min:= StrToInt(Cells[1,1]); for i := 1 to ColCount -1 do for j := 1 to RowCount -1 do if StrToInt(Cells[i,j]) < min then min := StrToInt(Cells[i,j]); Edit1.Text := IntToStr(min); end else Edit1.Text := ''; if Checkbox2.Checked then // Визначення максимального ел. в масиві with StringGrid1 do begin Max:= StrToInt(Cells[1,1]); for i := 1 to ColCount -1 do for j := 1 to RowCount -1 do if StrToInt(Cells[i,j]) > max then max := StrToInt(Cells[i,j]); Edit2.Text := IntToStr(max); end else Edit2.Text := ''; if Checkbox3.Checked then // Визначення додатку головної діагоналі масиву with StringGrid1 do begin sum:= 0; for i := 1 to ColCount -1 do sum := Sum + StrToInt(Cells[i,i]); Edit3.Text := IntToStr(sum); end else Edit3.Text := ''; end; 8. Запустити на виконання програму 8.1. Вікно робочої програми має наступний вигляд  8.2. Натиснути на клавішу «Заповнити» - отримаємо заповнений масив  7.3. Вибрати одну з дій та натиснути на клавішу «Обчислити»    Частина 3 Розробимо програму яка дозволяє виконувати основні арифметичні дії (Калькулятор) та перевіряє чи введені в поля операдів числові дані. Розмістити на формі компоненти Label, Edit, Button, RadioGroup з палітри компонентів Standard   2. В компоненті RadioGroup в властивості Items встановити математичні знаки операцій. Вони автоматично нумеруються від 0 до 3.   Пирв’язуємо до клавіши “Обчислити” процедуру procedure TForm1.Button1Click(Sender: TObject); var a,b: integer; c: real; begin // Перевіряємо чи введені значення в компоненти Edit1, Edit2 if (Edit1.Text <> ' ') and (Edit2.Text <> ' ') then begin // Перетворюємо введені значення в ціли числа a:= StrToInt(Edit1.Text); b:= StrToInt(Edit2.Text); Edit3.Text:=' '; // За допомого оператору case вибираемо яку математичну дію ми // виконуємо case RadioGroup1.ItemIndex of 0: c := a+b; 1: c := a-b; 2: c := a*b; 3: if b=0 then ShowMessage('На нуль ділити неможна'); else c:= a/b; end; if RadioGroup1.ItemIndex <> 3 then Edit3.Text := FloatToStrF(c,ffGeneral,10,4) else if b<>0 then Edit3.Text := FloatToStrF(c,ffGeneral,10,4); end else ShowMessage('Не задані значення'); end; Перевіряємо чи введені в поля операндів числові дані якщо введені, виконуємо обрахунок, якщо не введені блокується запис в поля операндів. Для цього необхідно виділити компонент Edit1, в Object Inspector -> Events виділити подію OnKeyPress та подвійно натиснути на вільному полі автоматично утворюється процедура яка превіряє чи введені числові дані. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9','+','-']) then Key:=#0; end;   5. Робимо таку саму перевірку перевірку для компонента Edit2   Запускаємо програму на виконання     Питання для самоперевірки Для чого призначений компонент TlistBox, які основні властивості компонента? Для чого призначений компонент TComboBox, які основні властивості компонента? Для чого призначений компонент GroupBox, які основні властивості компонента? Для чого призначений компонент RadioButton, які основні властивості компонента? Для чого призначений компонент StringGrid, які основні властивості компонента? Для чого призначений компонент CheckBox, які основні властивості компонента?. Основні інструменти Delphi. Зміст звіту Титульна сторінка. Мета роботи. Теоретичні відомості. Приклад створеної програми. Вихідні результати. Висновок.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!