144______________________________________________Глава 3

(команда Cut), Ctrl-V — вставка текста из буфера Clipboard в позицию курсора
(команда Paste), Ctrl-Z — отмена последней команды редактирования. Правда, по-
льзователи часто не догадываются об этих возможностях редактирования. Так что
полезно напоминать им об этом соответствующими подсказками.

Окна редактирования можно использовать и просто как компоненты отобра-
жения текста. Для этого надо установить в false их свойство ReadOnly. В этом слу-
чае пользователь не сможет изменять отображаемый текст.

Свойство Text окон редактирования имеет тип строки AnsiString (см. соответ-
ствующий раздел главы 15). При присваивании этому типу числовой информации
происходит ее автоматическое преобразование в строку. Поэтому вы можете непо-
средственно осуществлять подобные присваивания. Например, оператор

Editll->Text =5.1;

будет воспринят компилятором нормально и приведет к появлению в окне текста
«5,1». Но при вводе из окна числовой информации надо использовать функции
StrToFloat — преобразование строки в значение с плавающей запятой, и StrTo-
Int — преобразование строки в целое значение. Если вводимый текст не соответст-
вует числу (например, содержит недопустимые символы), то функции преобразо-
вания генерируют исключение EConvertError (об исключениях см. в главе 4 раз-
дел 4.9). Поэтому в программе необходимо предусмотреть обработку этого исклю-
чения. Например:

int А;

try
(

А = StrToInt(Editl->Text);

}

catch (EConvertError&)

(

ShowMessage("Вы ввели ошибочное число; повторите ввод");

Этот код обеспечивает сообщение пользователю об ошибке ввода и предотвра-
щает ошибочные вычисления. Впрочем, это не лучший вариант предотвратить
ошибочный ввод, поскольку пользователь узнает о своей ошибке только после
того, как программа пытается использовать введенные данные. Лучше, если поль-
зователь просто не сможет ввести неправильные символы. Это можно сделать, и в
главе 4 в разделе 4.3.2 показано, как программно обеспечить, чтобы в окне редак-
тирования пользователь, например, мог вводить только цифры или наоборот —
мог вводить символы и не мог вводить числа. В главе 7 в разделе 7.3 рассмотрено,
как на основе окна Edit можно сделать свой собственный компонент, обладающий
этими свойствами.

Свойство MaxLength определяет максимальную длину вводимого текста. Если
MaxLength = 0, то длина текста не ограничена. В противном случае значение Max-
Length указывает максимальное число символов, которое может ввести пользова-
тель.

Свойство Modified, доступное только во время выполнения, показывает, про-
водилось ли редактирование текста в окне. Если вы хотите использовать это свой-
ство, то в момент начала работы пользователя с текстом Modified надо установить
в false. Тогда при последующем обращении к этому свойству можно по его значе-
нию (true или false) установить, было или не было произведено редактирование.

Свойство AutoSelect определяет, будет ли автоматически выделяться весь
текст при передаче фокуса в окно редактирования. Имеются также свойства толь-
ко времени выполнения SelLength, SelStart, SelText, определяющие соответст-
венно длину выделенного текста, позицию перед первым символом выделенного
текста и сам выделенный текст. Например, если в окне имеется текст «выделение