You could try something like this:
procedure TForm1.Edit1EditingDone(Sender: TObject);
var
p: integer;
s, s1, s2: string;
ed: TEdit absolute Sender;
begin
if not (Sender is TEdit) then
Exit;
p:=Pos(ed.Text, DBMemo1.Text);
if (p > 0) then begin
s:=DBMemo1.Lines.Text;
s1:=Copy(s, 1, p - 1);
s2:=Copy(s, p, Length(ed.Text));
DBMemo1.Lines.Text:=s1 + '->' + s2;
DBMemo1.SelStart:=p+1;
DBMemo1.SelLength:=Length(ed.Text);
end;
end;
However, DBMemo is a wrapper around the widgetset memo, and different widgetsets behave differently, and the WordWrap property (or other settings) may also interfere.