I'm using a TMemo as the base of a text editor, and the editor has to do some text replacement.? How do I get the exact insert position of the insertion point?? I used SelStart, but when the insertion point is too close to the end of the document, this becomes unreliable.? Here's my code.
procedure TfrmEditor.txtEditorKeyPress(Sender: TObject; var Key: char);
var
? CursorPos: Integer;
? TextLen : integer;
? TextBeforeCursor: string;
begin
? TextLen := length (txtEditor.Text);
? if Key = '-' then
? begin
??? // Get the current cursor position
??? CursorPos := txtEditor.SelStart;??? // Ensure there is enough text to analyze
??? if CursorPos >= 2 then
??? begin
????? // Get the last two characters before the dash ????? TextBeforeCursor := Copy(txtEditor.Text, CursorPos - 2, 2);
????? // Check if the last two characters are also dashes
????? if TextBeforeCursor = '--' then
????? begin
??????? // Remove the three dashes
??????? txtEditor.SelStart := CursorPos - 2;
??????? txtEditor.SelLength := 2;
??????? txtEditor.SelText := '\[em]';
??????? // Cancel the current dash keypress
??????? Key := #0;
????? end;
??? end;
? end;
end;TextLen is there only for debugging purposes.
