Любое изменение в 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.