Home » Tipps & Tricks » Komponenten » TRichEdit/TMemo/TEdit » Eigenen Caret in TMemo

Eigenen Caret in TMemo

Dieser Artikel zeigt, wie Sie einem TMemo-Feld einen eigenen Caret zuweisen können. Zuständig dafür sind die Windows-API Funktionen CreateCaret zum Erstellen und ShowCaret zum Anzeigen.Dieses erste Beispiel vergrößert den Cursor auf das Wunschformat:

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if CreateCaret(Memo1.Handle, 1, 8, 15) then
   ShowCaret(Memo1.Handle)
 else
   RaiseLastOSError;
end;

CreateCaret erwartet 4 Parameter. Dem Ersten muss das Handle übergeben werden. Steht der zweite Parameter auf 0, wird der Cursor schwarz, steht er auf 1 wird er gräulich schattiert. Die letzten Parameter geben die horizontale und vertikale Ausdehnung an.Dem zweiten Parameter kann auch ein Handle von einem Bitmap übergeben werden, um ihn grafisch aufzuwerten. Dabei werden die letzten beiden Parameter ignoriert:

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if CreateCaret(Memo1.Handle, Image1.Picture.Bitmap.Handle, 0, 0) then
    ShowCaret(Memo1.Handle)
  else
    RaiseLastOSError;
end;

Das Bild wird in seinen Negativ-Farben dargestellt.RaiseLastOSError ist erst ab Delphi 6 verfügbar. Programmierer, die mit älteren Versionen arbeiten, müssen an dieser Stelle RaiseLastWin32Error verwenden.