Вы можете сделать это довольно просто. Создайте один обработчик OnChange и назначьте его обоим TEdits с помощью вкладки «События» Инспектора объектов. Тогда вы можете использовать что-то вроде следующего:
procedure TForm1.EditChanged(Sender: TObject); //Sender is the edit being changed
begin
if Sender = UNCEdit then // If it's is the UNCEdit being changed
begin
LocalPathEdit.OnChange := nil; // Prevent recursive calling!
LocalPathEdit.Text := ''; // Clear the text
LocalPathEdit.OnChange := EditChanged; // Restore the event handler
end;
else
begin
UNCEdit.OnChange := nil;
UNCEdit.Text := '';
UNCEdit.OnChange := EditChanged;
end;
end;
Это может быть немного упрощено, но это не так хорошо для чтения другими. Он также может быть защищен с помощью try..finally, хотя для простой очистки текстового содержимого редактирования это на самом деле не нужно.
procedure TForm1.EditChanged(Sender: TObject);
var
TmpEdit: TEdit;
begin
if Sender = UNCEdit then
TmpEdit := LocalPathEdit
else
TmpEdit := UNCEdit;
TmpEdit.OnChange := nil;
try
TmpEdit.Text := '';
finally
TmpEdit.OnChange := EditChanged;
end;
end;