Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
191
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

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

450

Компонент 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) служит для ввода различных слов, фраз и другого относительно короткого текста. Он не имеет полос прокрутки, но разрешает прокручивать текст по горизонтали клавишами перемещения курсора влево

451

и вправо. Компонент Edit расположен в палитре компонентов на вкладке

Standard (рисунок 9.32).

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

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

Свойство

AutoSelect

AutoSize

BevelEdges

BevelInner

BevelKind

BevelOuter

CharCase

Описание

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

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

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

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

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

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

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

HideSelection

MaxLength

OEMConvert

PasswordChar

ReadOnly

Text

OnChange

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

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

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

OEM.

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

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

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

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

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

452

Иногда компонент 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).

453

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

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

Свойство

Align

Alignment

HideSelection

Lines

MaxLength

OEMConvert

ReadOnly

ScrollBars

WantReturns

Описание

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

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

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

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

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

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

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

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

WantTabs

WordWrap

OnChange

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

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

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

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

454

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]