Показать сообщение отдельно
  #2  
Старый 24.12.2019, 08:16
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Любое изменение в Edit вызывает его метод OnChanged, если в этом методе Вы изменяете содержимое другого Edit, то у него (второго Edit) так же вызывается метод OnChanged. Если оба Edit-а изменяют содержимое друг друга, то происходит зацикливание, по кругу вызывая изменения.
Чтобы этого избежать, Вам необходимо временно назначить пустое событие на изменение в редактируемом программно Edit-е.
Выглядеть это должно примерно так:
Код:
procedure TForm1.Edit1OnChanged(Sender: TObject);
var
  OldProc: TNotifyEvent;
begin
  OldProc := Form2.Edit1.OnChanged; // Запоминаем какое событие было назначено
  Form2.Edit1.OnChanged := nil;  // Устанавливаем пустое событие
  Form2.Edit1.Text := 'new some text'; // Производим изменения
  Form2.Edit1.OnChanged := OldProc;  // Возвращаем старое событие
end;
Аналогично делаете и для "парного" Edit.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием