- •Delphi Справочник по компонентам. Класс tList
- •Класс tStream
- •Функции работы с файлами
- •Функции преобразования чисел с плавающей точкой
- •Функции работы с датами и временем
- •Элементы управления
- •Положение, размеры и выравнивание элементов управления
- •Активность и видимость элементов управления
- •Внутренний интерфейс Drag&Drop
- •Ярлычки и оперативная подсказка
- •Оконные элементы управления
- •Фокус ввода
- •Графическая подсистема
- •Класс tFont
- •Класс тРеn
- •Класс tBrush
- •Класс tCanvas
- •Класс tGraphic
- •Класс tPicture
- •Класс tMetafile
- •Класс tIcon
- •Класс tBitmap
- •Описание компонентов vcl
- •TPopupMenu.
- •Компонент tMainMenu
- •Компонент tPopupMenu
- •Компонент tBitBtn
- •Компонент tSpeedButton
- •Компонент tRadioGroup
- •Компонент tSpinButton
- •Ввод и редактирование текста
- •Компонент tEdit
- •Компонент тМеmo
- •Компонент tMaskEdit
- •Функции для форматирования текста
- •Оформление приложения
- •Компонент tPaintBox
- •Компонент tBevel
- •Компонент tImage
- •Компонент tHeader
- •Ввод и выбор значений
- •Компонент tListBox
- •Компонент tComboBox
- •Компонент tScrollBar
- •Компонент tSpinEdit
- •Компонент tDrawGrid
- •Многостраничные диалоговые окна
- •Компонент tNotebook
- •Компонент tTabSet
- •Компонент tTabbedNotebook
- •Группирование компонентов
- •Компонент tGroupBox
- •Компонент tPanel
- •Компонент tScrollBox
- •Компоненты — стандартные диалоговые окна Windows
- •Компоненты tOpenDialog и tSaveDialog
- •Компонент tColorDialog
- •Компонент tFontDialog
- •Компонент tPrintDlalog
- •Компонент tFindDialog
- •Компонент tReplaceDialog
- •Работа с файловой системой
- •Компонент tDriveComboBox
- •TDirectoryListBox
- •Компонент tFileListBox
- •Компонент tFilterComboBox
- •Компонент tDirectoryOutline
- •Работа со средствами мультимедиа
- •Динамический обмен данными (dde)
- •Компонент tdDeServerConv
- •Компонент tdDeServerltem
- •Компонент tddeciIentConv
- •Компонент tddecIientltem
- •Дополнительные компоненты
- •Компонент tGauge
- •Компонент tCalendar
- •Компонент tColorGrld
- •Использование интерфейса ole
- •Компонент toleContainer
- •Форма и ее свойства
- •Управление дочерними элементами
- •Приложение и среда его выполнения
- •Объект Application
- •Объект Clipboard
- •Компонент tScreen
- •Файлы инициализации
- •Печать данных из приложения
- •Компонент tSession
- •Компонент tDatabase
- •Компонент tDataSource
- •Компонент tTable
- •Компонент tQuery
- •Компонент tStoredProc
- •Компонент tReport
- •Компонент tBatchMove
- •Компонент tField
- •Объект tFieldDef
- •Важнейшие типы данных
- •Компоненты отображения данных и управления данными
- •Компонент tdbGrid
- •Компонент tdbNavigator
- •Компонент tdbText
- •Компонент tdbEdit
- •Компонент tdbMemo
- •Компонент tdbImage
- •Компонент tdbListBox
- •Компонент tdbComboBox
- •Компонент tdbCheckBox
- •Компонент tdbRadioGroup
- •Компонент tdbLookupUst
- •Компонент tdbLookupCombo
Компонент тМеmo
TObject->TPersistent->TComponent->TControl->TWinControl->TCustomEdit->
—”TCu s t omMerno-”TMemo
Модуль STDCTRLS
Страница Палитры компонентов Standard
Компонент представляет собой многострочный редактор текста. Содержимое редактора представлено как объект, содержащий текст в виде набора строк:
(Pb) property Lines: TStrings;
Текст в редакторе может выравниваться по левому, правому краям и по центру:
(Р1э) property Alignment: TAlignment;
TAlignment = (taLeftJustify, taRightJustify, taCenter) ;
При наборе текста пользователь может ввести различные управляющие символы, в частности, клавишами <Enter> и <ТаЬ>. Эти символы могут быть обработаны редактором, а могут быть сразу переданы форме. В случае, если свойства
§ property WantReturns: Boolean;
property WantTabs: Boolean;
обращены в True, символы передаются редактору. Обратим внимание на то, что если установлено WantTabs, то с помощью клавиатуры передать фокус такому редактору можно, а после этого отдать другому компоненту — нельзя. Если свойства равны False, символы передаются форме. В этом случае для ввода этих символов в редактор можно воспользоваться комбинациями <Ctrl>+<Enter> и <Ctrl>+<Tab> соответственно.
Два свойства отвечают за организацию прокрутки текста в окне редактора:
(Pb) property Wordwrap: Boolean ;
— отвечает за поведение редактора при достижении правой границы во время набора текста. Если свойство равно True, то при этом происходит переход на новую строку. В случае False при достижении правой границы происходит горизонтальная прокрутка текста и пользователь может продолжать набор; на новую строку можно перейти, нажав <Enter>;
(Pb) property ScrollBars: TScrollStyle;
TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth) ;
— устанавливает наличие полос прокрутки в вертикальном и горизонтальном направлениях. Если есть горизонтальная полоса, то свойство Wordwrap теряет смысл: вместо переноса происходит прокрутка.
Следующие свойства аналогичны определенным в TEdit — BorderStyle, HideSelection, MaxLength, OEMConvert и ReadOnly.
Для получения полноценного приложения — текстового редактора, в него нужно включить компонент TMemo и снабдить средствами чтения, записи и печати файлов, поиска и замены текста и т. п. Такой редактор вы найдете в примере DEMOEDIT на дискете, прилагаемой к книге.
Компонент tMaskEdit
TObject->TPersistent->TComponent->TControl—”TWinControl->TCustomEdit-> —>TCustomMaskEdit—^TMaskEdit Модуль MASK Страница Палитры компонентов Additional
Этот специальный редактор допускает лишь ввод текста, соответствующего заданному программистом шаблону, например, паролей, регистрационных номеров, дат и других данных, которые имеют определенный формат представления.
Шаблон ввода в виде строки содержится в свойстве:
(РЬ) property EditMask: string;
Если он не определен, TMaskEdit работает как обычный редактор. Свойство
(Ro) property IsMasked: Boolean;
показывает, определен ли шаблон редактирования (значение EditMask не равно пустой строке).
"Черновой" текст, содержащий введенные пользователем символы, соответствует свойству:
property EditText: string;
В то же время отформатированный (наложенный на шаблон) текст содержится в свойстве Text.
Опишем правила, применяемые при составлении шаблона. Шаблон состоит из трех частей, разделяемых символом ';' или другим, заменяющим его. Первая часть является обязательной — она определяет собственно маску ввода. Каждому символу в поле ввода редактора соответствует специальный символ в маске, определяющий, что можно ввести на этом месте.
Описатели маски ввода представлены в таблице:
Символ маски |
Означает, что на этом месте во вводимом тексте... |
L |
должна быть буква (A-Z, a-z, А-Я, а-я). |
I |
может быть буква. |
А |
должен быть буквенно-цнфровой символ. |
а |
может быть буквенно-цифровой символ. |
С |
должен быть любой символ ASCII. |
с |
может быть любой символ ASCII. |
0 |
должна быть любая цифра. |
9 |
может быть любая цифра. |
# |
может быть любая цифра или знаки '+', •-'. |
"Должен" означает, что пользователь обязан ввести в поле соответствующий символ, "может" — что не обязан. Например, шаблон "LLOO" обязывает пользователя ввести пароль из двух букв и двух цифр, a "LL99" — из двух букв и не более двух цифр.
Кроме описателей полей ввода, в шаблоне могут быть литералы и другие форматирующие символы.
Литералами будем называть символы, которые появляются при отображении строки ввода, но не могут изменяться пользователем и предназначены только для ее оформления. Перед литералом должен стоять символ 'V. Типичный пример — ввод телефонных номеров. Для семизначного номера с возможностью ввода междугороднего кода нужен шаблон "!\(999\)000-0000;1;_". Тогда код города (если он есть) в отформатированном тексте будет заключен в скобки.
Специальные символы приведены в следующей таблице:
Символ |
Значение |
\ |
Символ, непосредственно предшествующий литералу. |
|
Разделитель для часов, минут и секунд при вводе времени. |
/ |
Разделитель для дней, месяцев и лет при вводе даты. |
\ |
Разделитель полей в маске. |
' |
Символ определяет подавление пробелов: если он есть в маске (в любом месте), в выходном тексте подавляются пробелы перед текстом; в противном случае — идущие после текста. |
> |
Символ, после которого все вводимые буквы преобразуются к верхнему регистру. |
< |
Символ, после которого все вводимые буквы преобразуются к нижнему регистру. |
о |
После этой пары символов преобразование регистров отменяется. |
- |
Пустое поле при вводе (отображается как пробел). Курсор не будет останавливаться в этой позиции. |
Вторая часть шаблона — это символ '0' или '!', определяющий, записываются ли литералы в обработанный текст (свойство Text). При 0 символы опускаются. Использование такого компонента при работе с базами данных дает возможность экономии места.
Например, пользователь ввел цифры 1234567. Тогда при действующем шаблоне "999\-99\-00;1;_" свойство Text будет равно "123-45-67", а для шаблона "999\-99\-00;0;_" - "1234567".
Третья часть содержит символ, который будет показываться в полях, предназначенных для ввода. Например, шаблон для ввода номеров машин "L 00\-00 LL;1;X" будет выглядеть как "X ХХ-ХХ XX". По умолчанию этот символ определяется значением константы DefaultBlank(cM. ниже).
Вторая и третья части шаблона могут отсутствовать.
Синтаксис шаблона может быть изменен за счет переопределения программистом специальных символов '_'> ';' и '0'. Для этого нужно изменить определенные в модуле Mask константы:
const
DefaultBlank: Char = '_';
MaskFieldSeparator: Char = ';';
MaskNoSave: Char = '0';
Для ввода шаблонов в Delphi есть довольно удобный специальный редактор, содержащий некоторые полезные образцы. К сожалению, в этой версии в нем есть ошибка — при вводе маски он не всегда сразу воспринимает введенные изменения. В этом случае еще раз компилируйте создаваемое приложение.
Непосредственную проверку введенного текста осуществляет метод:
procedure ValidateEdit;
Он обычно вызывается при нажатии кнопки Default в модальной форме и при каждой утере фокуса редактором. При отсутствии введенных символов в тех местах, где они необходимы, возникает исключительная ситуация EDBEditError.
Метод
function GetTextLen: Integer;
возвращает длину текста Text.