Файл: Учебное пособие для студентов Авторы А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько Содержание Содержание 1.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.05.2024

Просмотров: 130

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
OnClick. Обрабатывая это событие, можно установить любую зависимость между состоянием переключателя и состоянием других компонентов формы. Например, когда включен режим Everyday, компоненты для ввода дня недели и даты должны быть недоступны. Когда включен режим Weekly on, должен быть доступен выбор дня недели, но недоступна установка даты. Наконец, когда включен режим Date, установка дня недели должна быть недоступна, а установка даты — доступна. Чтобы достигнуть такой согласованности в работе, определите для переключателей EverydayRadioButton, WeeklyRadioButton и DateRadioButton единый обработчик события OnClick:

procedure TAlarmDetailsForm.RecurringRadioButtonClick(Sender: TObject);

begin

WeeklyComboBox.Enabled := Sender = WeeklyRadioButton;

DatePicker.Enabled := Sender = DateRadioButton;

end;

Шаг 14. Разумеется, компоненты WeeklyComboBox и DatePicker первоначально должны быть недоступны. Поэтому, удерживая клавишу Shift, выберите названную группу компонентов и установите свойство Enabled в значение False.

Теперь запустите программу и проверьте правильность ее работы.

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

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