Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования на Delphi.doc
Скачиваний:
0
Добавлен:
01.01.2020
Размер:
5.09 Mб
Скачать

9.3.4. Группа взаимоисключающих переключателей

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

Рисунок 9.28. Компонент RadioGroup

Его характерные свойства кратко описаны в таблице 9.8.

Свойство

Описание

Align

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

Caption

Подпись к группе переключателей.

Columns

Число колонок в группе переключателей.

ItemIndex

Номер выбранного элемента, начиная с нуля. Если все переключатели находятся в выключенном состоянии, то значение свойства равно -1.

Items

Подписи к переключателям.

Таблица 9.8. Важнейшие свойства компонента RadioGroup

Компонент RadioGroup удобен тем, что заменяет группу компонентов RadioButton. Расположение переключателей, которые он отображает, подбирается автоматически с учетом заданного в свойстве Columns количества колонок. Номер активного зависимого переключателя хранится в значении свойства ItemIndex. Следующий рисунок 9.29 не относится к приложению Alarms, а просто поясняет, что такое компонент RadioGroup:

Рисунок 9.29. Четырехпозиционный переключатель представлен компонентом RadioGroup

Компонент RadioGroup создает группу, состоящую исключительно из переключателей. Однако он не годится в тех случаях, когда в группе должны присутствовать другие компоненты, что как раз имеет место в нашем примере. В этой ситуации для группировки компонентов применяется компонент GroupBox.

9.3.5. Панель группы компонентов

Компонент GroupBox служит для группировки компонентов, он расположен в палитре компонентов на вкладке Standard (рисунок 9.30).

Рисунок 9.30. Компонент GroupBox

Компонент GroupBox выглядит как панель с заголовком (рисунок 9.31). Текст заголовка задается в свойстве Caption.

Рисунок 9.31. Панель с заголовком представлена компонентом GroupBox

Компонент GroupBox может содержать в себе другие компоненты. Это, например, означает, что установка его свойства Visible в значение False прячет группу со всеми расположенными внутри компонентами, а не только рамку с заголовком.

9.3.6. Поле ввода и редактор текста

Для ввода текста предназначены компоненты Edit и Memo. Они представляют собой соответственно поле ввода и редактор многострочного текста (кроме них существует еще компонент RichEdit, предназначенный для ввода и отображения форматированного текста, но о нем мы поговорим отдельно).

Поле ввода (Edit) служит для ввода различных слов, фраз и другого относительно короткого текста. Он не имеет полос прокрутки, но разрешает прокручивать текст по горизонтали клавишами перемещения курсора влево и вправо. Компонент Edit расположен в палитре компонентов на вкладке Standard (рисунок 9.32).

Рисунок 9.32. Компонент Edit

Характерные свойства компонента Edit описаны в таблице 9.9.

Свойство

Описание

AutoSelect

Если равно значению True, то при активизации редактора находящийся в нем текст автоматически выделяется.

AutoSize

Если равно значению True, то высота редактора автоматически подгоняется по высоте текста.

BevelEdges

Вложенные свойства beLeft, beTop, beRight и beBottom определяют видимость соответственно левой, верхней, правой и нижней сторон рельефной рамки.

BevelInner

Внутренний скос рельефной рамки: bvNone — скос отсутствует, bvLowered — скос внутрь, bvRaised — скос наружу; bvSpace — скос заменяется отступом.

BevelKind

Вид рельефной рамки: bkNone — рамки нет, bkTile — рамка с четкими скосами, bkSoft — рамка со сглаженными скосами, bkFlat — плоская рамка (без скосов).

BevelOuter

Внешний скос рельефной рамки: bvNone — скос отсутствует, bvLowered — скос внутрь, bvRaised — скос наружу; bvSpace — скос заменяется отступом.

CharCase

Преобразует текст к прописным или строчным буквам: ecUpperCase — к прописным буквам, ecLowerCase — к строчным буквам, ecNormal -преобразование символов не выполняется.

HideSelection

Если равно значению True, то при потере редактором активности выделение текста снимается.

MaxLength

Максимальное количество символов, которое пользователь может ввести. Если оно равно 0, то пользователь может ввести текст неограниченной длины.

OEMConvert

Если равно значению True, то символы текста преобразуются в кодовую таблицу OEM.

PasswordChar

Если не равно #0, то указанный в этом свойстве символ отображается вместо каждого символа текста. Применяется для ввода пароля.

ReadOnly

Если равно значению True, то пользователь не сможет изменить текст в редакторе.

Text

Редактируемый текст.

OnChange

Происходит при изменении текста.

Таблица 9.9. Отличительные свойства и события компонента Edit

Редактируемый текст содержится в свойстве Text. Его максимальная длина определяется значением свойства MaxLength.

Иногда компонент Edit используется для отображения нередактируемого текста. Для этого свойство ReadOnly устанавливается в значение True. Вы спросите, чем он в таком состоянии лучше компонента Label? А тем, что может получать фокус ввода. Кроме того, текст в поле ввода можно выделить и поместить в Буфер Обмена.

Компонент Edit легко приспособить для ввода паролей. Для этого достаточно установить в свойстве PasswordChar вместо символа #0 какой-нибудь другой символ, обычно символ звездочки (*). Символ, заданный в свойстве PasswordChar отображается вместо реально вводимых символов, что мешает подсмотреть пароль посторонним.

Шаг 15. В форме SettingsForm компонент Edit применяется для ввода текстового сообщения будильника. Выберите его в окне свойств и в значении свойства Text впишите "Reminder !" (рисунок 9.33). Этот текст будет появляться в редакторе при появлении окна диалога.

Рисунок 9.33. Компонент Edit используется для ввода текстового сообщения будильника

Шаг 16. Изменение текста во время работы программы приводит к возникновению в компоненте Edit события OnChange. Обрабатывая это событие, можно, например, устроить работу окна диалога таким образом, что кнопка OK будет недоступна, если в редакторе нет текста. Чтобы реализовать такое поведение нашего диалога, определите для компонента MessageEdit следующий обработчик события OnChange:

procedure TAlarmDetailsForm.MessageEditChange(Sender: TObject);

begin

OkButton.Enabled := Length(MessageEdit.Text) <> 0;

end;

Выполните компиляцию программы и проверьте ее работу.

Прежде чем продолжить обсуждение примера Alarms, сделаем несколько замечаний по поводу редактирования многострочного текста. Редактор многострочного текста представлен компонентом Memo (рисунок 9.34).

Рисунок 9.34. Компонент Memo

Характерные свойства компонента Memo описаны в таблице 9.10.

Свойство

Описание

Align

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

Alignment

Выравнивание текста: taLeftJustify — прижат к левой границе, taRightJustify — прижат к правой границе, taCenter — центрирован.

HideSelection

Если равно значению True, то при потере редактором фокуса ввода выделение текста снимается.

Lines

Текст в виде массива строк.

MaxLength

Максимальное количество символов, которое пользователь может ввести. Если оно равно 0, то пользователь может ввести текст неограниченной длины.

OEMConvert

Если равно значению True, то символы текста преобразуются в кодовую таблицу OEM.

ReadOnly

Если равно значению True, то пользователь не сможет изменить текст в редакторе.

ScrollBars

Управляет видимостью полос прокрутки: ssNone — полосы прокрутки скрыты, ssBoth — полосы прокрутки видны, ssHorizontal — видна лишь горизонтальная полоса прокрутки, ssVertical — видна лишь вертикальная полоса прокрутки.

WantReturns

Если равно значению True, то клавиша Enter начинает в редакторе новую строку. Иначе нажатие клавиши Enter ассоциируется с нажатием стандартной кнопки окна диалога и для перевода строк применяется сочетание клавиш Ctrl+Enter.

WantTabs

Если равно значению True, то клавиша Tab вставляет в текст символ табуляции, вместо того чтобы передать фокус ввода следующему компоненту.

WordWrap

Если равно значению True, то работает перенос слов.

OnChange

Происходит при изменении текста.

Таблица 9.10. Важнейшие свойства и события компонента Memo

Компонент Memo похож на Edit, но в отличие от него хранит не одну строку текста, а множество строк. Доступ к строкам обеспечивает свойство Lines, представляющее собой объект класса TStrings (см. главу 3). С помощью свойства Lines строки можно добавлять, вставлять, удалять и т.д. Свойство Lines доступно в окне свойств, поэтому на стадии проектирования вы можете заполнить компонент Memo некоторым исходным текстом (рисунок 9.35). Этот текст увидит пользователь при появлении формы на экране. Ввод исходного текста осуществляется в специальном редакторе текста (String list editor), которое вызывается нажатием кнопки с многоточием в поле значения свойства Lines.

Рисунок 9.35. Окно для ввода многострочного текста, отображаемого компонентом Memo

Компонент Memo часто имеет одну или две полосы прокрутки (вертикальную и горизонтальную). Их появление зависит от значения свойства ScrollBars.

В нашем приложении Alarms компонент Memo не нужен, но вам он безусловно пригодится в других программах.