Тема: «Компоненты ввода и отображения и ввода текстовой информации. Кнопки»
План
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.
Для ввода данных с клавиатуры на форме можно размещать специальные компоненты: 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. Пример программы для расчета выражения
Пусть имеется форма вида:

Кнопка Рассчитать (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.