Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
end;
Оператор
if (Key = '-') and (sign)
then Key:= #0;
не позволит пользователю ввести знак числа после значащих цифр и, кроме то-
го, дважды ввести знак (-).
Теперь, кажется все. Но нет, еще не все! Представьте ситуацию – пользо-
ватель хотел ввести отрицательное число, но забыл ввести знак минус, а цифры уже ввел. Попробуйте ввести несколько цифр, затем вернуть курсор на начало строки и попытайтесь ввести (-). У вас не получится! Даже если вы удалите введенные цифры клавишей Delete или BackSpace. Потому что sign имеет значение true. Ситуация не столь проста, как кажется. Чтобы ввести отрица-
тельное число нужно сначала нажать на кнопку "Ввод" или на клавишу Enter,
т.е. пользователь будет вынужден ввести число, которое не хотел вводить!
Придется контролировать положение курсора. У компонента есть свойство
SelStart, которое указывает на текущее положение курсора. Используя это свойство и функцию Pos, перепишем обработчик следующим образом:
procedure TForm1.LabeledEdit1KeyPress(Sender: TObject;
var Key: char);
begin
if Key = #13 then
begin
sign:= false;
n:= StrToInt(LabeledEdit1.Text);
LabeledEdit2.Text:= IntToStr(n);
exit;