Alsooo.. ich hab es jetzt vielleicht nicht SO elegant gelöst, aber es funktioniert super.
Was geschiet:
Zuerst wird nach "vorne" gesucht (1. Schleife), und zwar nach dem End-tag "</a>",
Delphi-Quellcode:
procedure TForm1.TBXItem79Click(Sender: TObject);
var
aTag, aEndTag: String;
i, x: Integer;
Point: TPoint;
begin
// erst nach </a> suchen
for x:= CurPosition+2 {+2 hinzugefügt} to Length(SynMemo1.Lines.Text) do
begin
aEndTag := Copy(SynMemo1.Text, x, 4);
if aEndTag = '</a>' then
begin
for i := CurPosition-1 {-1 hinzugefügt} downto 0 do
begin
aTag := Copy(SynMemo1.Text, i, 3);
if aTag = '<a ' then
begin
GetCaretPos(Point);
aLinkPopUp.Popup(Point.X+125, Point.Y+50);
break;
end;
end;
end;
end;
end;
{
Anmerkung zu den beiden in Klammern gesetzten Kommentaren:
OHNE den Zusatz -1, würde das Menu auch dann kommen, wenn der Cursor HINTER "a" (<Xa, da wo's X ist)
ist.
Ohne den Zusatz +1 würde das Menu auch dann kommen, wenn der Cursor zwischen [..]>und</a> wäre.
}
Über Verbesserungsvorschläge bezüglich des Codes wäre ich reichlich dankbar.