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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ Національний Університет “Львівська політехніка”  EMBED PBrush  Ознайомлення з компонентами для вводу-виводу у середовищі візуального програмування Delphi. ІНСТРУКЦІЯ до лабораторної роботи № 3 з курсу “Застосування засобів об’єктно-орієнтованого програмування в лінгвістичних задачах” спеціальності 07.030505 “Прикладна лінгвістика”. ЗАТВЕРДЖЕНО На засіданні кафедри “Системи Автоматизованого проектування” Протокол №___ від _________ Львів - 2004 Мета роботи: Продовжити знайомство з основними інструментами Delphi. Познайомитися з компонентами для вводу-виводу. Одержати практичні навички створення простих додатків. Основний зміст Ми розробимо програму для обчислення коренів квадратного рівняння ax2+bx+c=0 з довільними коефіцієнтами(a≠0). Вивчити і використовувати компоненти TLabel, TEdit, TMemo, TButton. Теоретичні відомості. Мітка - компонент TLabel Сторінка Палітри Компонентів: Standard. Ієрархія: TObject→TPersistent→Component→TControl→TGraphicControl→ TCustomLabel→TLabel Мітки призначені для розміщення на екрані текстової інформації, що містить різні пояснення, назви, заголовки і т.д. Мітки в Delphi є екземплярами класу TLabel. Клас TLabel є нащадком класу TCustomLabel, у якому визначені основні характеристики влучна. Цей клас є безпосереднім нащадком класу TGraphicControl і, отже, реагує тільки на події від миші. Основні властивості: type TAlignment = (taLeftJustify, taRightJustify, taCenter); property Alignment: TAlignment; Властивість обумовлює вирівнювання тексту в компоненті. Воно може приймати наступні значення: taLeftJustify - вирівнювання по лівому краю(за замовчуванням); taRightJustify - вирівнювання по правому краю; taCenter - вирівнювання по центрі. property AutoSize: Boolean; Якщо значення властивості дорівнює True, то буде автоматично змінюватися ширина і висота мітки відповідно до розміщеного в ній текстом. type TTextLayout = (tlTop, tlCenter, tlBottom); property Layout: TTextLayout; Властивість визначає положення тексту мітки по вертикалі: tlTop - розташований у верхній частині; tlCenter - розташований у центрі; tlBottom - розташований унизу. property Transparent: Boolean; Якщо властивість має значення True, то тіло мітки буде прозорим стосовно інших компонентів. За замовчуванням має значення False. property WordWrap: Boolean; Якщо властивість має значення True, то після заповнення поточної рядка буде відбуватися перенос тексту на новий рядок. За замовчуванням має значення False. Для введення багатострічкових написів треба задати AutoSize = False, WordWrap = True і установити придатні розміри мітки. Властивості Alignment і WordWrap не працюють, якщо AutoSize = True. Основним для мітки є властивість Caption, наслідуване від класу TControl. property caption: string; Саме сюди поміщається текст, що буде виводитися на екран. Приклад 1: Вивід значень масиву цілих чисел. Label1.Caption: = IntToStr (a[1]) ; for k:=2 to size do Label 1.Caption:= Label1.Caption + ',' + IntToStr (a[k]); property FocusControl: TWinControl; Містить ім'я віконного компонента, що зв'язаний з міткою акселератором. Т.о. вибір компонента TLabel приведе до переміщення фокуса на зв'язаний з ним компонент. У цьому випадку мітку також можна використовувати, щоб установити фокус у нащадка TWinControl. Щоб виконати це, потрібно установити у властивості FocusControl ім'я відповідного нащадка TWinControl і визначити гарячу клавішу у властивості Caption (& буква). property ShowAccelChar:boolean; Визначає, для чого використовується символ & у властивості Caption: для визначення гарячої чи клавіші просто як символ. Але навіть коли властивість ShowAccelChar = True, можна відобразити амперсенд у caption, подвоївши його - &&. Приклад 2: Щоб вивести рядок "Delphi & Windows", треба присвоїти властивості caption значення Delphi && Windows. Якщо властивість ShowAccelChar = False, властивість FocusControl не працює. Мітка обробляє всі події, зв'язані з використанням миші і перетаскуванням компонентів. Подією за замовчуванням для мітки є подія OnClick. Клас TCustomEdit У Delphi є кілька компонентів, що дозволяють за допомогою клавіатури вводити в програму і редагувати різноманітну символьну інформацію. Усі вони мають такі можливості, як виділення, копіювання, видалення, вставка фрагментів, скролінг тексту, у тому випадку, коли він не уміщається у вікні і т.д. Із усього набору редакторів ми розглянемо рядок уведення класу TEdit і редактор тексту класу TMemo. Більшість стандартних редакторів є нащадками класу TCustomEdit. Клас TCustomEdit, що є нащадком класу TWinControl, містить ряд характеристик, загальних для всіх текстових редакторів. Найбільш важливими є наступні властивості: property AutoSelect: Boolean; Якщо властивість має значення True (значення за замовчуванням), текст буде виділятися при активізації редактора. property AutoSize: Boolean; Якщо властивість має значення True, то буде автоматично змінюватися висота редактора відповідно до розміру шрифту. type TFormBorderStyle = (bsNone, bsSingl, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin); TBorderStyle = bsNone..bsSingl; property BorderStyle: TBorderStyle; Визначає вид границі редактора: bsSingle - одинарна границя, bsNone - немає границі. За замовчуванням редактор має одинарну границю. type TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase); property CharCase: TEditCharCase; Визначає вид букв тексту: ecUpperCase - прописні, ecLowerCase - рядкові, ecNormal - змішані. property MaxLength: Integer; Визначає максимальне число символів, яке можна помістити в редактор. Якщо значення властивості дорівнює нулю (використовується за замовчуванням), то в редактор можна помістити довільне число символів. property PasswordChar: Char; Задає символ, що буде відображатися замість символів, що реально вводяться, у редакторі. Така поведінка редактора може придатися, якщо в програмі потрібно використання пароля. Якщо значенням властивості є символ з кодом 0 (значення за замовчуванням), то символи, що вводяться, відображаються без перетворення. property ReadOnly: Boolean; Якщо властивість має значення True, то текст призначений тільки для читання, тобто змінювати текст не можна. За замовчуванням має значення False. property MaxLenngth: integer; Указує максимальна кількість символів, який можна ввести. property Modified: Boolean; Установлюється рівним True, якщо текст змінювався після того, як воно останній раз було встановлено рівним False. Хоча основна функція полючи введення -дозволити змінювати текст, його можна використовувати тільки для відображення тексту, установивши властивість ReadOnly рівним True. Однак, замість цього краще установити властивість Enabled рівним False. Текст в елементі керування можна виділити за допомогою чи миші клавіатури. Чи визначити змінити виділений текст можна за допомогою наступних властивостей: property SelLength:integer; Визначає довжину виділеної частини тексту. property SelStart:integer; Визначає початок виділеної частини. property SelText:string; Містить виділений текст. У класі TCustomEdit мається ряд методів, що реалізують функції редагування: procedure Clear; virtual; Видаляє весь текст, поміщений у редактор. procedure ClearSelection; Видаляє виділений фрагмент тексту. procedure CopyToClipboard; Копіює виділений фрагмент тексту в буфер Clipboard. procedure CutToClipboard; Видаляє з тексту виділений фрагмент і поміщає його в буфер Clipboard. procedure PasteFromClipboard; Копіює текст із буфера Clipboard у позицію курсору редактора. procedure SelectAll; Виділяє весь текст, що міститься в редакторі. У більшості редакторів маються убудовані локальні меню, що дозволяють виконувати наступні команди: Undo - скасування останньої виконаної операції в тексті; Cut - вирізувати виділений фрагмент із приміщенням його в буфер обміну; Copy - скопіювати виділений фрагмент у буфер обміну; Paste - помістити фрагмент із буфера обміну в текст у позицію курсору; Delete - видалити виділений фрагмент; SelectAll - виділити весь текст. Однорядковий текстовий редактор - компонентів TEdit Ієрархія: TObject → TPersistent → TComponent → TControl → TWinControl → TCustomMaskEdit→ TCustomEdit→TEdit. Сторінка Палітри Компонентів: Standard. Компонент TEdit, дозволяє вводити і редагувати один рядок тексту. Клас TEdit - безпосередній нащадок класу TCustomEdit і успадковує всі його характеристики. Основною властивістю рядка введення є властивість Text: type TCaption = string; property Text: TCaption; Містить символьний рядок у редакторі Edit. Символьний рядок може бути поміщена у властивість або на етапі конструювання форми, або під час виконання програми. Найчастіше редактор використовується для введення інформації. У цьому випадку на етапі конструювання форми у властивість Text можна помістити порожній рядок, а на етапі виконання програми витягати з нього введені значення. Якщо вводяться символьні представлення числових даних, то надалі вони повинні бути перетворені за допомогою відповідних підпрограм перетворення типу. Оскільки рядок уведення є віконним елементом керування, то вона обробляє всі події від миші і клавіатури, події, зв'язані з перетаскуванням, активізацією і зняттям активізації, а також подія OnChange: property OnChange: TNotifyEvent; Виникає при зміні тексту рядка введення. Є подією за замовчуванням для рядка введення класу TEdit. Приклад 1.Обмеження введення - у рядку редагування дозволяється введення тільки цифр. procedure TForm1.Edit1KeyPress (Sender: TObject; Var Key: char); begin if not (Key in['0'..'9']) then Key:= #27 end; У Delphi реалізований спеціальний компонент TMaskEdit, призначений для введення тексту, що відповідає деякому шаблону, що задається властивістю property EditMask: String. Якщо ця властивість не задана, TMaskEdit працює як звичайний редактор TEdit. Приклад 2.Задається поле, що не може бути порожнім. Подія OnExit відбувається при втраті елементом фокуса. Перевизначимо обработчик procedure TForm1.Edit1Exit (Sender: TObject); begin if length (Edit1.text) < 1 then begin MessageBox (0, 'Поле не може бути порожнім', 'Помилка', mb_ok); ActiveControl:= Edit1; end end; Багатострічковий текстовий редактор - компонентів TMemo Ієрархія: TObject→TPersistent→TComponent→TControl→TWinControl→ TCustomEdit→TCustomMemo→TMemo. Сторінка Палітри Компонентів: Standard. Текстовий редактор TMemo може містити на відміну від рядка введення TEdit не одну, а будь-яке число рядків. Клас TMemo породжений безпосередньо від класу TCustomMemo, у якому визначені основні характеристики багатострічкових текстових редакторів. Дозволяє ввести кілька рядків тексту, кожну з який можна виділити за допомогою масиву рядків- властивості Lines,наприклад ShowMessage (Memo1.Lines [1]); Відзначимо наступні властивості класу TCustomMemo: property Lines: TStrings; Властивість класового типу TStrings. Задає список рядків, поміщених у редактор. Клас TStrings буде розглянутий пізніше. type TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth); property ScrollBars: TScrollStyle; Задає наявність смуг скролінга: ssNone - немає смуг, ssHorizontal - тільки горизонтальна смуга, ssVertical - тільки вертикальна смуга, ssBoth - обидві смуги. property WantReturns: Boolean; Визначає дія клавіші Enter. Якщо властивість дорівнює True, то при натисканні на клавішу Enter відбувається перехід на новий рядок тексту. У противному випадку фокус уведення передається формі, а перехід на новий рядок у тексті здійснюється натисканням комбінації клавіш Ctrl+Enter. property WantTabs:Boolean; Визначає чи обробляє елемент керування TMemo клавішу Tab. Якщо не обробляє (значення False), то обробляється системою. У цьому випадку для обробки треба натиснути Ctrl + Tab. Властивість Text компонента TMemo являє собою рядок, що складається з рядків які знаходяться в полі Memo , розділених послідовністю символів з кодами 13 (кінець рядка) і 10 (перехід на новий рядок). Послідовність цих символів додається в поле Memo при натисканні клавіші <Enter>. Якщо використовувати поле Text, то щоб одержати значення i-ої підстрічки (утримуючої, наприклад, i-ий елемент масиву), треба знайти i-1 символ з кодом 13, пропустити символ з кодом 10 і виділити підстрічку до наступного символу з кодом 13 чи до кінця рядка. Так само, як і рядок уведення Edit, багаттострічковий текстовий редактор Memo обробляє всі події від миші і клавіатури, події, зв'язані з перетаскуванням, активізацією і зняттям активізації, а також подія OnChange, що є подією за замовчуванням. Програма повідомляється про зміни в тексті одним з наступних способів: 1. За допомогою події OnChange. Ця подія викликається, коли текст змінений. Подія викликається після подій OnKeyDown і OnKeyPress, але до OnKeyUp. 2. За допомогою властивості Modified. Приклад 1.Заповнення TMemo вмістом текстового файлу. if FileExists (filename) then Memo1.Lines.LoadFromFile (filename); Приклад 2.Скасування дій у TMemo. Для того, щоб скасувати дії, виконані в редакторі, варто скористатися наступним кодом, що може бути поміщений, наприклад, в оброблювач вибору команди Undo у меню: Memo1.Perform (EM_UNDO, 0, 0); Для того, щоб перевірити, чи можливе скасування зроблених дій, варто скористатися наступною перевіркою: Undo1.Enabled:= Memo1.Perform (EM_CANUNDO, 0, 0) < > 0; Приклад 3.Знайти номер поточної рядка в редакторі. procedure TMyForm.BitBtnClick (Sender: TObject); Var curline: integer; begin curline:= Memo1.Perform (EM_LineFromChar, $FFFF, 0); Label1.Caption: = IntToStr (curline + 1); // номер першого рядка = 0! end; Приклад 4.Вивести масив цілих чисел по одному числу в рядку. Memo1.Lines.clear; for i:= 1 to size do Memo1.Lines.Add (IntToStr (a[I])); Кнопка - компонент TButton Ієрархія: TObject→TPersistent→TComponent→TControl→TWinControl→ TButtonControl. Сторінка Палітри Компонентів: Standard. Основне призначення кнопки - формування події при натисканні на неї. Кнопка може бути розміщена в будь-якім місці форми, де їсти необхідність виконати які-небудь дії при її натисканні. Кнопка Button є екземпляром класу TButton, предками якого є класи TButtonControl і TWinControl. Це означає, що кнопка Button являє собою віконний елемент керування. У класі TButton додані наступні властивості: property Cancel: Boolean; Якщо властивість має значення True, то натискання на клавішу Esc буде еквівалентно натисканню на дану кнопку. property Default: Boolean; Якщо властивість має значення True, то натискання на клавішу Enter буде еквівалентно натисканню на дану кнопку, якщо яка-небудь інша кнопка не знаходиться у фокусі введення. type TModalResult = Low(Integer)..High(Integer); property ModalResult: TModalResult; Властивість, використовувана при закритті модальних вікон. Для звичайних вікон значення цієї властивості повинне бути дорівнює mrNone. У класі TButton визначений метод Сlick: procedure Click; override; Виконання цього методу еквівалентно щиглику по кнопці, тобто в результаті його виконання виникає подія OnClick для кнопки. Особливістю кнопки класу TButton є те, що вона не має властивість Color і колір тла для неї визначається операційною системою Windows. Кнопка класу TButton обробляє всі події, визначені для віконного елемента керування. Подією за замовчуванням для кнопки є подія OnClick. Порядок виконання роботи 1. Відкрити новий додаток за допомогою команди File| New Application. 2. Збережіть проект у вашому робочому каталозі, виконавши команду меню File|Save Project As. 3. На формі Form1 розмістіть компоненти Label1, Label2, Label3, Label4: TLabel; Memo1: TMemo; Edit1, Edit2, Edit3:TEdit; Button1, Button2:TButton.  4. Властивості Caption мітки Label1 задайте значення 'Введіть коефіцієнти квадратного рівняння A*X^2+B*X+C=0’  Розмістіть цей текст у двох рядках і вирівняйте його по центрі, для чого установите наступні значення властивостей: Alignment - taCenter AutoSize - False WordWrap – True  Розміри мітки і її місце розташування відрегулюйте вручну. Перейдіть у властивість Font і клацніть по кнопці з трьома крапками. У вікні, що з'явилося, встановіть придатний розмір і тип шрифту. 5. Для міток Label2, Label3, Label4 установите властивість Caption рівним ‘A=’,’B=’,’C=’ відповідно. 6. Для компонентів Edit1, Edit2, Edit3 установите властивість Text рівним порожньому рядку. 7. Для компонента Memo1 виберіть властивість Lines і клацніть по кнопці з трьома крапками. У вікні, що з'явилося, String list editor видалите рядок 'Memo1'. 8. Для кнопок Button1, Button2 установите властивість Caption рівним ‘Рішення’ і ’Очистити’ відповідно. 9. Двічі клацніть на кнопці ‘Рішення’ і визначите наступний обработчик події OnClick: procedure TForm1.Button1Click(Sender:TObject); var a,b,c,d,x1,x2:double; begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToFloat(Edit3.Text); d:=b*b-4*a*c; if d>=0 then begin x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); Memo1.Lines.Add('Результат'); Memo1.Lines.Add(‘x1=’+FloatToStr(x1)); Memo1.Lines.Add(‘x2=’+FloatToStr(x2)); end; if d<0 then Memo1.Lines.Add(‘Рішень немає’); end;  10. Поверніться у форму(F12), двічі клацніть на кнопці ‘Очистити’ і визначите наступний обработчик події OnClick: procedure TForm1.Button2Click(Sender:TObject); begin Memo1.Clear; end; 11.Відкомпілюйте і виконаєте програму.  Додаткові завдання 1. Використовувати для виводу результату замість компонента TMemo компонент TEdit. 2. Розробити програму для обчислення коренів алгебраїчного рівняння виду f(x)=0 методом а) ітерацій; б) Ньютона; в) половинного розподілу. 3. Обчислити значення визначеного інтеграла виду F=∫ydx у межах інтегрування від a до b методом: а) трапецій; б) Симпсона. 4. Обчислити значення заданої функції f(x) для x від a до b із заданим кроком h, використовую розкладання функції в степеневий ряд. Питання для самоперевірки Що таке TLabel? Що таке Tedit? Що таке Tmemo? Що таке Tbutton? Основні інструменти Delphi. Зміст звіту Титульна сторінка. Мета роботи. Теоретичні відомості. Приклад створеної програми. Вихідні результати. Висновок.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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