Лекция 4.3. Элементы отображения, ввода и редактирования
Надписи
Надписи (класс TLabel) используются для отображения текста на форме, без возможности редактирования. Основные свойства класса:
· Caption: TCaption – текст надписи;
· Alignment: TAIignment = (taLeftJustify, taRightJustify, taCenter) – определяет способ выравнивания текста по горизонтали:
ü taLeftJustify – по левому краю;
ü taRightJustify – по правому краю;
ü taCenter – по центру.
· Layout: TTextLayout = (tlTop, tlCenter, tlBottom) – определяет способ выравнивания текста по вертикали:
ü tITop – по верхнему краю;
ü tICenter – по центру;
ü tIBottom – по нижнему краю.
· Autosize: Boolean – управляет автоматическим изменением размеров компонента по содержимому (тексту);
· Transparent: Boolean – управляет прозрачностью фона;
· WordWrap: Boolean – управляет автоматическим переносом текста.
Следует иметь в виду, что свойство Caption имеет строковый тип и ему, естественно, может быть присвоено только строковое значение. Для вывода числовых значений с помощью надписей необходимо воспользоваться функциями преобразования чисел в строку:
function IntToStr (Value: Integer): String – преобразует целое число в строку;
function FloatToStr (Value: Extended): String – преобразует вещественное число в строку;
function FloatToStrF (Value: Extended; Format: TFloatFormat; Precision: Integer; Digits: Integer): String – преобразует вещественное число в строку c возможностью форматирования;
function DateToStr (DateTime: TDateTime): String – преобразует тип дата/время в строку;
Следует заметить, что существуют и другие функции преобразования.
Приведем пример программы, определяющей позицию указателя мыши внутри формы.
1. Создайте приложение.
2. Разместите на форме надпись (TLabel).
3. Создадим реакцию приложения на перемещение указателя мыши, для этого перейдите в окне Object Inspector на вкладку Events и дважды щелкните в поле значения события OnMouseMove, в тело созданного обработчика события впишите следующий код:
Label1.Caption:= 'X= '+IntToStr(X)+' Y= '+IntToStr(Y);
4.
Выполните компиляцию и тестирование программы. Посмотрите на реакцию программы на перемещение указателя мыши в пределах формы (рисунок 4.3.1).
Рисунок 4.3.1 – Использование надписи для вывода координат указателя мыши
Текстовые поля
Текстовое поле (класс TEdit) позволяет отображать и редактировать текст. Класс TEdit содержит ряд свойств, не имеющих аналогов в уже рассмотренных элементах управления:
· AutoSelect: Boolean – определяет, будет ли выделяться текст в поле при получении полем фокуса ввода;
· CharCase: TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase) – определяет регистр вводимого текста:
ü ecNormal – текст отображается, как есть;
ü ecUpperCase – вводимые символы преобразуются к верхнему регистру;
ü ecLowerCase – вводимые символы преобразуются к нижнему регистру;
· MaxLength: Integer - максимальное количество символов вводимых в поле;
· SelText: String – содержит выделенный фрагмент текста;
· Text: String – основное свойство, вводимый или редактируемый текст;
· ReadOnly: Boolean – определяет возможность редактирования.
Основное событие – OnChange, вызывается при изменении содержимого поля ввода. Например, если установить следующий обработчик события OnChange для текстового поля, то при изменении текста в поле Editl синхронно будет изменяться и текст надписи Labell;
Поля ввода позволяют вводить не только текстовую, но и числовую информацию, для этих целей используются следующие функции преобразования:
function StrToInt (const S: String): Integer – преобразует строку в целое число.
function StrToFloat (const S: String): Extended - преобразует строку в вещественный тип.
function StrToDate (const S: String): TDateTime - преобразует строку в дату и время.
Все функции, в случае неудачи вызывают исключительную ситуацию EConvertError.
function StrToIntDef (const S: string; Default: Integer): Integer – преобразует строку в целое число.
Если преобразование нельзя выполнить, функция возвращает число, заданное параметром Default.Приведем пример управления размерами формы с использованием полей:
1. Создайте приложение.
2. Разместите на форме две надписи (класс TLabel), два поля (класс TEdit) и кнопку (класс TButton)
3. Свойствам Caption надписей присвойте значения «Ширина» и «Высота», так, чтобы ширина была напротив компонента Edit1, а высота напротив компонента Edit2
4. Создайте обработчик события нажатия кнопки и впишите в него следующий код:
Width:= StrToIntDef(Edit1.Text, Width);
Height:= StrToIntDef(Edit2.Text, Height);
5. Выполните компиляцию и тестирование программы. Посмотрите на реакцию программы при указании различных значений в полях ввода (рисунок 4.3.2).
Рисунок 4.3.2 – Использование полей ввода
Многострочные текстовые поля
Многострочное текстовое поле (класс TMemo) предназначено для отображения, ввода и редактирования текста. Основные свойства класса:
· Alignment: TAlignment – способ выравнивания текста в поле (см класс TLabel);
· CaretPos: TPoint – координаты текстового курсора в поле.
· Lines: TStrings – массив строк, компонента (основное свойство, см описание ниже);
· SelText: String – содержит выделенный фрагмент текста;
TPoint – запись следующего вида
type
TPoint = record
X: Integer;
Y: Integer;
end;
Пример отслеживания положения курсора при использовании многострочного редактора (класс TMemo):
1. Создайте приложение.
2. Разместите на форме компонент класса TMemo.
3. Создайте обработчик события OnKeyUp компонента Memo1 и впишите в него следующий код:
with Memo1.CaretPos do
Caption:= 'Символ: '+IntToStr(X)+' Строка: '+IntToStr(Y);
4. Выполните компиляцию и тестирование программы. Обратите внимание на поведение заголовка формы при печати в многострочном редакторе (рисунок 4.3.3).
Рисунок 4.3.3 – Отслеживание положения курсора многострочного редактора
Класс TStrings является очень удобным классом для обработки текста.
Основные свойства:· Count: Integer – количество строк в массиве;
· Strings[Index: Integer]: String – массив строк (каждый элемент массива – строка);
· Text: String – весь текст в виде одной строки;
Последние два свойства позволяют обрабатывать значения типа - Имя1=Значение1 Имя2=Значение2;
· Names[Index: Integer]: String – массив имен;
· Values[Index: Integer]: String – массив значений;
Основные методы:
function Add(const S: String): Integer – добавляет строку в массив. Возвращает номер добавленной строки;
procedure Clear – очистка массива строк;
procedure Delete(Index: Integer) – удаляет строку с указанным индексом;
procedure Insert(Index: Integer; const S: String); - вставляет строку;
procedure LoadFromFile(const FileName: String) – метод загрузки текста из файла;
procedure SaveToFile(const FileName: String) – метод записи текста в файл;
Пример использования компонента класса TMemo для работы с текстовыми файлами:
1. Создайте приложение.
2. Разместите на форме многострочный редактор (класс TMemo), надпись (класс TLabel), текстовое поле (класс TEdit) и две кнопки (класс TButton).
3. Выделите надпись и задайте свойство Caption в Object Inspector, присвойте значение «Имя файла».
4. Выделите компонент поле и в окне Object Inspector удалите значение свойства Text.
5. Задайте свойства Caption для компонентов Button1 и Button2 - «Открыть» и «Сохранить» соответственно.
6. Создайте обработчик события OnClick кнопки Button1 и впишите в него следующий код:
Memo1.Lines.LoadFromFile(Edit1.Text);
7. Создайте обработчик события OnClick кнопки Button2 и впишите в него следующий код:
Memo1.Lines.SaveToFile(Edit1.Text);
8. Выполните компиляцию и тестирование программы (рисунок 4.3.4).
Рисунок 4.3.4 – Использование многострочного редактора
Списки
Список (класс TListBox) состоит из строк (элементов списка). Пользователь может просматривать список, но прямое редактирование списка невозможно, в этом и заключается основное отличие списков от многострочного текстового поля.
Основные свойства списков:
· Columns: Integer – позволяет управлять количеством столбцов списка (по умолчанию значение 0);
· ItemIndex: Integer – выделенный элемент списка;
· Items: TStrings – массив строк списка (см. выше класс TStrings);
· MultiSelect: Boolean – управляет возможностью многострочного выделения;
· SelCount: Integer – количество выделенных элементов списка;
· Selected[Index: Integer]:Boolean – определяет выбран элемент Index списка или нет;
· Sorted: Boolean – управляет сортировкой элементов списка;
Пример добавления, удаления и сортировки элементов списка:
1. Создайте приложение.
2. Разместите на форме список (класс TListBox), текстовое поле (класс TEdit), флажок (класс TCheckBox) и три кнопки (класс TButton).
3. Задайте надписи кнопкам и флажку:
ü Button1.Caption – Добавить;
ü Button2.Caption – Удалить;
ü CheckBox1.Caption – Сортировка;
4. Создайте обработчик события OnClick кнопки «Добавить» и впишите в него код добавления элемента в список ListBox1 из текстового поля Edit1:
ListBox1.Items.Add(Edit1.Text);
5. Создайте обработчик события OnClick кнопки «Удалить» и впишите в него код удаления элемента списка ListBox1, если элемент выделен (т.е. ItemIndex > -1):
with ListBox1 do
if ItemIndex > -1 then Items.Delete(ItemIndex);
6. Создайте обработчик события OnClick флажка и впишите в него следующий код:
ListBox1.Sorted:= CheckBox1.Checked;
7. Выполните компиляцию и тестирование программы (рисунок 4.3.5).
Рисунок – 4.3.5. Пример использования списка
Комбинированные списки
Комбинированные списки объединяют возможности списков и текстовых полей, что отразилось на соответствующих свойствах и методах. Они позволяют не только выбирать значения из раскрывающегося списка, но и вводить новые или редактировать существующие значения. Основные свойства класса TComboBox:
· DropDownCount: Integer – количество строк, отображаемых в раскрывающейся части комбинированного списка;
· DroppedDown: Boolean – определяет, раскрыт список или нет;
· ItemIndex: Integer – выделенный элемент списка;
· Items: TStrings – массив строк раскрывающегося списка;
· MaxLength: Integer - максимальное количество символов вводимых в поле;
· SelText: String – содержит выделенный фрагмент текста;
· Sorted: Boolean – управляет сортировкой элементов раскрывающегося списка;
Пример приложения использующего раскрывающиеся списки
Изображения
Для вывода изображений используется компонент класса TImage, он может отображать графические файлы форматов BMP, JPG, EMF, JPEG, GIF, PNG, TIFF, WMF и ICO.
Основные свойства класса TImage приведены в табл. 9.4.Основные свойства класса TImage:
· AutoSize: Boolean – если данное свойство равно true, то размеры компонента изменяются в соответствии с размерами загружаемого изображения;
· Center: Boolean – если данное свойство имеет значение true, то изображение центрируется относительно клиентской области компонента;
· Picture: TPicture – изображение, отображаемое в компоненте TImage;
· Stretch: Boolean – если данное свойство равно true, то изображение масштабируется таким образом, чтобы вписаться в размеры компонента TImage;
Класс TPicture, инкапсулирующий свойства и методы, предназначенные для работы с графическими файлами, например, свойства Width и Height содержат размеры изображения.
Для работы с изображениями, могут использоваться следующие методы класса TPicture:
procedure LoadFromFile (const FileName: String) – загрузка изображения из файла;
procedure SaveToFlle (const FileName: String) – сохранение изображения в файл;
Изображение можно также получить из системного буфера обмена (clipboard) и занести в буфер с использованием следующих методов:
procedure LoadFromClipboardForaat (AFormat: Word; AData: THandle; APalette: HPALETTE);
procedure SaveToClipboardFormat (var AFormat: Word; var AData: THandle; var APalette: HPALETTE);
Параметр AFormat позволяет задать формат изображения. В Windows по умолчанию зарегистрированы три формата: один растровый (CF_BITMAP) и два векторных (CF_METAFILE и CF_ENHMETAFILE).
Доступ к предопределенным типам графических объектов может производиться через одно из трех свойств:
· Bitmap: TBitmap — растровое изображение;
· Metafile: TMetafile — векторное изображение;
· Icon: TIcon — изображение значка (в формате ICO).
Кроме того, для доступа к графическим объектам можно использовать свойство Graphic типа TGraphic, являющегося родительским для объектных типов TBitmap, TMetafile и TIcon.
Вопросы для самоконтроля
1. Какие основные свойства надписи вы знаете?
2. Какие основные свойства текстовых полей вы знаете?
3. Назовите основные функции преобразования данных.
4. Назовите основные свойства класса TStrings.
5. Какие методы класса TStrings вы знаете?
6. Что общего между многострочными текстовыми редакторами и списками?
Еще по теме Лекция 4.3. Элементы отображения, ввода и редактирования:
- 2. Цели и задачи рекламы
- Государство и церковь.
- ПРИЛОЖЕНИЕ
- Лекция 5.8 Особенности реляционного доступа к данным