- •Основний зміст
- •1.Головне вікно.
- •3.4. Дерево та Інспектор об'єктів Tree/Object Inspector.
- •Основні властивості:
- •Приклад . Заповнення tMemo вмістом текстового файлу.
- •Порядок виконання роботи
- •Додаток 1 Індивідуальні завдання Варіанти завдань
- •Додаток 2
- •Додаток 3 Приклад програми реалізованої за допомогою об’єктно-орієнтованого підходу.
- •Команда розгалудження if (умовна команда)
Основні властивості:
|
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.
Рис. 15. Delphi 7
Більшість стандартних редакторів є нащадками класу TCustomEdit. Клас TCustomEdit, що є нащадком класу TWinControl, містить ряд характеристик, загальних для всіх текстових редакторів. Найбільш важливими є наступні властивості:
|
property AutoSelect: Boolean |
Рис. 16. Delphi XE
Якщо властивість має значення 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.
Приклад. Обмеження введення - у стрічку редагування дозволяється введення тільки цифр.
|
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.
Приклад . Задається поле, що не може бути порожнім.
Подія 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.
