Zitat von
Pseudemys Nelsoni:
@Sprint: HideCaret/DestroyCaret funktionieren nicht (schon getestet), Das Caret bleibt immer da.
Wie wende ich denn DestroyCaret auf mein RIchedit an? irgendwie erwartet das ding keine parameter.
Vielleicht solltest du dir mal die Beschreibung und besonders die Beispiele zu HideCaret durchlesen.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls;
type
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
TMyRichEdit =
class(TRichEdit)
private
OldWndProc: TWndMethod;
procedure NewWndProc(
var Message: TMessage);
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyRichEdit }
constructor TMyRichEdit.Create(AOwner: TComponent);
begin
inherited;
OldWndProc := Self.WindowProc;
Self.WindowProc := NewWndProc;
end;
destructor TMyRichEdit.Destroy;
begin
Self.WindowProc := OldWndProc;
inherited;
end;
procedure TMyRichEdit.NewWndProc(
var Message: TMessage);
begin
if Message.Msg <> WM_PAINT
then
HideCaret(Self.Handle);
OldWndProc(
Message);
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
with TMyRichEdit.Create(Self)
do
begin
Parent := Self;
Align := alClient;
end;
end;
end.