Erstmal danke für Eure Antworten.
Hab mich nun doch für eine andere Lösung entschieden. Noch nicht ganz ausgereift aber...
Ich nehme ein EDIT von TADVEdit aus den TMS-Komponenten (bin Kunde).
Beispieltext für das Edit:
'12345; 67890; 123456; 98765'
Delphi-Quellcode:
function PosExReverse(substr, str: string; Indexpos : integer): integer;
var x : integer;
begin
x := length(str)-Indexpos+1; //Positionen im String müssen auch reverse sein
x := posex(substr,AnsiReverseString(str),x);
if x = 0 then x := length(str)+1;
result := length(str)-x+1; //Position zurückdrehen und Ergebnis zurückliefern
end;
procedure TForm5.Edit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var mp : Tpoint;
mpxe, //Ende des markierten Textes
mpxb, //Beginn des markierten Textes
mpxs : integer; //ermittelte Indexposition aus dem Mausklick
begin
mp.X := x; //Mauskoordinate X in Point
mp.Y := y; //Mauskoordinate Y in Point
mpxs := Edit1.CharFromPos(mp); //aktuelle Indexposition aus dem Edit holen
//so nun müssen wir den anfang finden
mpxb := PosExReverse(';',edit1.Text,mpxs); //Beginn ermitteln
//und nun das ende finden
mpxe := posex(';',edit1.Text,mpxs);
//und nun den Text zwischen den Semikolons markieren
edit1.SelStart := mpxb;
edit1.SelLength := mpxe-mpxb-1;
label1.Caption := trim(edit1.SelText); //das Ergebnis extra anzeigen bzw. weiterverwenden
end;