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.