[Delphi] Problem mit Memo.SelStart

Hallo.

Ich möchte kontinuierlich die aktuelle Position des Cursors in einem TMemo anzeigen lassen. Witzigerweise stimmt selstart nach einer Änderung aber nicht immer damit überein (wenn man den Cursor durch den Text bewegt, der n Zeichen hat und man kommt vor das erste Zeichen, ist SelStart = 1, wenn man dann nochmal nach links geht, springt Selstart aber auf Null (obwohl sich der Cursor nicht bewegt). Andersherum ist es am Ende des Textes, wo hinter dem letzen Zeichen Selstart den Wert n-1 hat und nachdem man nochmals einen Schritt nach rechts geht erst auf n springt.

Selstart hat, wenn der Cursor vor dem a. Zeichen steht, also den Wert a-2, wenn man von links kommt aber den Wert a. Wenn man den Cursor mit der Maus setzt, hat SelStart den Wert a-1, ändert sich aber bei der unmittelbar nächsten Bewegung nach links oder rechts nicht.

Kurz: SelStart gibt nicht immer die Anzahl Zeichen VOR dem Cursor wieder. Wie kann ich dieses Kuddelmuddel umgehen ?

Grüße
Jochen

Hallo,

ich habe das mal nachprogrammiert und bei mir klappts:

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Edit1.Text := IntToStr(Memo1.SelStart);
end;

procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Edit1.Text := IntToStr(Memo1.SelStart);
end;

Grus, Niels

Hallo Niels,

danke ! Das Leben kann ja so gemein sein. Manchmal ist man einfach zu blind… ich hatte das OnKeyPress-Ereignis verwendet (wobei ich immer noch nicht verstehe, WARUM sich die Sache dann so komisch verhält) und habe OnKeyUp garnicht erst probiert.

Aber du hast Recht: so klappt das einwandfrei.

Beste Grüße

Jochen

Hallo Jochen,

zwei Dinge:

  1. das onKeyPress reagiert nicht auf bestimmte Tastendruecke (zB Cursor-Tasten)
  2. ich vermute, das OnKeyPress-Ereignis wird ausgefuehrt, bevor die Eigenschaft SelStart aktualisiert wird. Du bekommst also immer die letzte Cursor-Position, nicht die neue.

Gruss, Niels