|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Взаимное изменение двух полей Edit по событию OnChange
Добрый день!
Есть два поля Edit. При изменении пользователем Edit1 хочу изменять поле Edit2, а по изменению пользователем Edit2 изменять Edit1. Подскажите, как это можно реализовать? Я так понимаю, что событие OnChange не подходит, так как вызывается и при программном изменении поля. Последний раз редактировалось Tyom, 14.04.2017 в 11:40. |
#2
|
|||
|
|||
Попытка вычисления не удаётся.
Код:
procedure TForm1.Edit1Change(Sender: TObject); begin Edit2.Text := FloatToStr (StrToFloat(Edit1.Text) + 1); end; procedure TForm1.Edit2Change(Sender: TObject); begin Edit1.Text := FloatToStr (StrToFloat(Edit2.Text) + 1); end; Возможно ли заблокировать вызов события OnChange при программном изменении? Оставить только изменение пользователем (как в ComboBox) Последний раз редактировалось Admin, 14.04.2017 в 19:31. |
#3
|
||||
|
||||
Лучше задействовать обработчики EditKeyUp, но без проверок возможны ошибки конвертации, если вместо цифирок буковки пользователь введёт
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#4
|
||||
|
||||
Цитата:
Код:
procedure TForm1.Edit1Change(Sender: TObject); begin Edit2.OnChange := nil; Edit2.Text := FloatToStr (StrToFloat(Edit1.Text) + 1); Edit2.OnChange := Edit2Change; end; procedure TForm1.Edit2Change(Sender: TObject); begin Edit1.OnChange := nil; Edit1.Text := FloatToStr (StrToFloat(Edit2.Text) + 1); Edit1.OnChange := Edit1Change; end; Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#5
|
||||
|
||||
Можно один обработчик OnChange использовать у обоих полей:
Код:
procedure TForm1.EditChange(Sender: TObject); begin if Tag=-2147483648 then Exit; Tag:=-2147483648; if Sender=Edit1 then Edit2.Text:=Edit1.Text+'Edit1' else if Sender=Edit2 then Edit1.Text:=Edit2.Text+'Edit2'; Tag:=0; end; Пишу программы за еду. __________________ |