Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗЗООПвЛЗ_LabWork_2_2015.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
16 Мб
Скачать
☆

Основні властивості:

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.