Лекция № 3

Тема: «Компоненты ввода и отображения и ввода текстовой информации. Кнопки»

 

План

1. Отображение текста на форме

2. Поля редактирования

3. Управляющие кнопки Button и Bitbtn

4. Пример программы для расчета выражения

 

1. Отображение текста на форме

В библиотеке визуальных компонентов Delphi существует множество компонентов, позволяющих отображать, вводить, редактировать текстовую информацию. Для отображения различных надписей (меток) на форме используется в основном компонент Label (Standard).

Компонент имеет свойства:

 

Свойство

Описание

Alignment

Выравнивание текста

AutoSize

Если равно true, то размер надписи подгоняется под размер текста

Caption

Задает текст надписи. Допускается использовать в надписи символ &. Символ, перед которым стоит &, становится "горячим": надпись можно выбрать с помощью сочетания клавиш Alt+"горячий символ"

Color

Цвет фона

Cursor

Указатель мыши при наведении на ме0тку

Enabled

Если равно true, то надпись доступна

Font

Параметры форматирования шрифта

Height

Высота в пикселях

Hint

Текст всплывающей подсказки

Left

Отступ от левого края формы в пикселях

Name

Имя надписи для обращения к нему в коде программы

ShowHint

Если равно true, то отображается текст всплывающей подсказки

Top

Отступ от верхнего края формы в пикселях

Transparent

Если равно true, то фон надписи будет прозрачным

Visible

Если равно true, то надпись видна на форме

Width

Ширина надписи в пикселях

WordWrap

Если равно true, то текст надписи может автоматически переходить на новую строчку

 

Большинство свойств можно задать как при проектировании, так и в коде с помощью команды:

 

имя_надписи.свойство:=значение;

 

Можно отметить еще одно свойство компонента Label, которое превращает его в подобие управляющего элемента. Это свойство FocusControl. Если в свойстве метки Caption поместить перед одним из символов символ амперсанд «&», то символ, перед которым поставлен амперсанд, отражается в надписи метки подчеркнутым (сам амперсанд вообще не отображается). Если после этого обратиться к свойству метки FocusControl, то из списка можно выбрать элемент, на который будет переключаться фокус, если пользователь нажмет клавиши быстрого доступа клавишу Alt + подчеркнутый символ. Благодаря свойству FocusControl метки могут обеспечить клавишами быстрого доступа другие элементы, например, те окна редактирования, где такие клавиши не предусмотрены. Только для того, чтобы клавиши быстрого доступа в метках срабатывали, необходимо установить свойство ShowAccelChar этих меток в true. 

 

2. Поля редактирования

Для ввода данных с клавиатуры на форме можно размещать специальные компоненты: Edit (Standard) или LabelEdedit (Additional).

Эти компоненты представляют собой поля, в которых отображается курсор и можно вводить информацию. Поля редактирования наделены многими функциями, присущими большинству редакторов. Например, в них предусмотрены типовые комбинации горячих клавиш: Ctrl+C – копирование выделенного текста в буфер обмена Clipboard (команда Copy), Ctrl+X – вырезание выделенного текста в буфер Clipboard (команда Cut) Ctrl+V – вставка текста из буфера Clipboard в позицию курсора (команда Paste), Ctrl+Z – отмена последней команды редактирования. Эти же команды автоматически доступны из контекстного меню компонентов.

Компонент Edit имеет свойства:

 

Свойства

Описание

AutoSelect

Если равно true, то при переходе в поле в нем автоматически выделяется весь текст

AutoSize

Если равно true, то высота поля подгоняется под размер текста (ширина не меняется)

BorderStyle

Задает тип границы вокруг поля

CharCase

Автоматически форматирует текст на верхний или нижний регистр

Color

Задает цвет фона поля

Cursor

Задает указатель мыши

Enabled

Если равно true, то доступ к полю разрешен

Font

Задает параметры форматирования текста

Height

Высота поля в пикселях

Hint

Текст всплывающей подсказки

Left

Отступ поля от левого края формы в пикселях

MaxLength

Максимальная длина поля в символах. Если равно 0, то неограниченно

Name

Имя поля для обращения к нему в тексте программы

PasswordChar

Задает символ, который будет подставляться вместо символов, которые вводятся. Аналог поля для ввода пароля

ReadOnly

Если равно true, то поле блокируется для редактирования

ShowHint

Если равно true, то отображается текст всплывающей подсказки

TabOrder

Задает порядок перехода на компонент по клавише TAB. Нумерация компонентов начинается с 0

TabStop

Если равно false, то переход на поле клавишей TAB будет невозможный

Text

Сохраняет содержимое поля. Может быть прочитанным в тексте программы

Top

Отступ поля от верхнего края формы в пикселях

Visible

Если равно true, то поле видимое

Width

Ширина поля в пикселях

 

У поля также есть свойства, доступные только при написании кода:

 

Свойство

Описание

Modified

Если равно true, содержимое поля менялось

SelStart

Номер символа, с которого нужно выделить текст

SelLength

Количество символов, которое нужно выделить в поле

SelText

Позволяет прочитать выделенный текст

 

Например, если в поле есть текст «выделение текста» и в нем пользователь выделил слово «текста», то SelLength = 6, Selstart = 10 и SelText = «текста».

Поля редактирования можно использовать и просто как компоненты для отображения текста. Для этого надо установить в false их свойство ReadOnly и целесообразно установить AutoSelect в false. В этом случае пользователь не сможет изменять отображаемый текст, и поле редактирования становится подобным меткам, рассмотренных выше. Но есть и определенные различия. Во-первых, поля редактирования оформлены несколько иначе. А главное – поля редактирования могут вмещать текст, который превышает их длину. В этом случае пользователь может прокручивать этот текст, перемещая курсор в окне. Таких особенностей не имеет ни одна метка.

Содержимое полей всегда сохраняется как текст. Если в поле вводятся цифры, то для ее использования  в расчетах нужно конвертировать содержимое поля в число с помощью функций:

 

StrToFloat(поле.Text) – преобразование строки в вещественное значение

StrToInt(поле.Text) – преобразование строки в целое значение.

 

Компонент LabelEdedit, кроме самого поля редактирования, имеет метку. Она задается свойством EditLabel. Это свойство имеет все основные свойства, присущие метке Label.

Свойство LabelPosition компонента LabeldEdit указывает, с какой стороны от окна размещается метка: lpAbove - сверху, выровнена по левому краю, lpBelow - снизу, выровнена по левому краю, lpLeft - слева, lpRight - направо.

В целом, компонент LabeledEdit очень удобный и, вероятно, может заменить поля Edit в большинстве приложений, поскольку редко нужно поле редактирования без его метки. 

 

3. Управляющие кнопки Button и Bitbtn

Кнопка – это один из наиболее используемых компонентов в программах. С помощью кнопок пользователь может генерировать события, которые вызывают выполнение определенных подпрограмм.

Простой и, пожалуй, наиболее часто используемой кнопкой является кнопка Button (Standard). Реже используется кнопка Bitbtn (Additional), которая отличается возможностью отразить на ее поверхности изображение. Большинство свойств, методов и событий у этих видов кнопок одинаковы.

 

Свойство

Описание

Cancel

Если равно true, кнопка реагирует на клавишу ESC

Caption

Задает текст надписи на кнопке. Допускается использование символа &

Cursor

Задает указатель мыши при наведении на кнопку

Default

Если равно true, то кнопка реагирует на клавишу ENTER

Enabled

Если равно true, то кнопка доступна

Font

Задает параметры шрифта для кнопки

Height

Задает высоту кнопки в пикселях

Hint

Задает текст всплывающей подсказки

Left

Задает отступ кнопки от левого края формы в пикселях

Name

Задает имя кнопки для обращения к ней в коде программы

ShowHint

Если равно true, то отображается текст всплывающей подсказки

TabOrder

Задает порядок перехода на кнопку клавишей TAB

TabStop

Если равно false, то переход на кнопку клавишей TAB будет запрещен

Top

Задает отступ кнопки от верхнего края формы в пикселях

Visible

Если равно true, то кнопка видима

Width

Задает ширину кнопки в пикселях

WordWrap

Если равно true, то надпись на кнопке автоматически переходит на новую строку

 

Все вышесказанное в равной степени относится и к компоненту Bitbtn. Данный компонент также является кнопкой, но на ней может отображаться рисунок. Изображения на этой кнопке задается свойством Glyph. При нажатии кнопки с тремя точками в строке свойства Glyph появляется окно. Нажав в нем кнопку Load, вы перейдете в обычное окно открытия файла рисунка и можете выбрать файл битовой матрицы .bmp, содержащий желаемое изображение. В частности, с Delphi поставляется большое количество изображений для кнопок. Они расположены в каталоге C:\ ProgramFiles \CommonFiles\ BorlandShared \ Images \ Buttons. После того, как вы выбрали изображение, нажмите ОК и выбранное изображение появится на вашей кнопке левее надписи.

Расположение изображения и надписи на кнопке определяется свойствами Margin, Layout и Spacing. Если свойство Margin равно -1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. При этом положение изображения относительно надписи определяется свойством Layout, которое может принимать значения: blGlyphLeft (слева, это значение принято по умолчанию), blGlyphRight (справа), blGlyphTop (вверху), blGlyphBottom (внизу). Если же Margin> 0, то в зависимости от значения Layout изображение и надпись смещаются к той или иной край кнопки, отступая от нее на число пикселей, заданный значением Margin.

Свойство Spacing задает число пикселей, разделяющие изображения и надпись на поверхности кнопки. По умолчанию Spacing = 4. Если задать Spacing = 0 изображения и надпись будут размещен вплотную друг к другу. Если задать Spacing = -1, то текст появится посередине между изображением и краем кнопки.

Еще одно свойство Bitbtn - свойство Kind определяет тип кнопки. По умолчанию значение этого свойства равно bkCustom - заданная пользователем. Но можно установить и множество других определенных типов: bkOk, bhCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkIgnore, bkAll. В этих типах уже сделаны соответствующие надписи, введенны пиктограммы, заданны еще некоторые свойства.

Основным событием для кнопки является событие OnClick, которое наступает при щелчке на кнопке. Для написания обработчика этого события щелкните по кнопке два раза и в заготовке процедуры введите нужные команды. 

 

4. Пример программы для расчета выражения

Пусть имеется форма вида:

 

http://server/DELPHI/lekcii/lekc04_1.jpg

 

Кнопка Рассчитать (Button1) суммирует значения двух первых полей (Edit1 и Edit2) и записывает ответ в третье поле (Edit3). Перед расчетом выдать запрос на выполнение операции.

Для кнопки Рассчитать напишем код:

 

procedure TForm1.Button1Click(Sender:Tobject);

//опишем дополнительные переменные

var a,b,c:real;

begin

//выдаем запрос на выполнение рассчетов

if Application.Messagebox ('Рассчитать?', 'Запрос', mb_yesno+ mb_iconquestion) = idyes then

//если на запрос пользователь ответил да

begin

//конвертируем содержимое полей в числа

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

//суммируем значения полей

c:=a+b;

//записываем ответ в третье поле

Edit3.Text:=FloatToStr(c);

end;

end;

 

Кнопка Очистить очищает содержимое всех полей. Выдать запрос на выполнение операции.

Для кнопки Очистить напишем код:

 

procedure TForm1.Button2Click(Sender: Tobject);

begin

//выдаем запрос на выполнение операции

if Application.Messagebox ('Очистить?','Запрос', mb_yesno+mb_iconquestion)=idyes then

//если на запрос пользователь ответил да

begin

//очищаем поля

Edit1.Text:='';

Edit2.Text:='';

Edit3.Text:='';

end;

end;

 

При выходе из программы выдать запрос на выполнение операции. Для выдачи запроса на закрытие программы в события формы OnCloseQuery напишем код:

 

procedure TForm1.FormCloseQuery(Sender: Tobject; var CanClose: boolean);

begin

if Application.Messagebox('Выйти?','Запрос',mb_yesno)=idno then

CanClose:=false;

end; 

 

Вопросы для самоконтроля

1. Опишите компонент Label? Как привязать "горячий" символ компонента к текстовому полю?

2. Опишите компонент Edit.

3. Опишите компоненты Button и BitButton.