1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
WM_MYEDIT_ENTER = WM_USER + 1;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
private
{ Private declarations }
public
mycaret :TBitmap;
procedure WMMyEditEnter(var Message: TMessage); message WM_MYEDIT_ENTER;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMMyEditEnter(var Message: TMessage) ;
begin
CreateCaret(Message.WParam,mycaret.Handle,0,0);
ShowCaret(Message.WParam);
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
PostMessage(Handle, WM_MYEDIT_ENTER,TWinControl(Sender).Handle, 0) ;
end;
procedure TForm1.Edit1Enter(Sender: TObject);
begin
PostMessage(Handle, WM_MYEDIT_ENTER, TWinControl(Sender).Handle, 0) ;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i,j :integer;
begin
mycaret := Tbitmap.Create;
mycaret.Width := 1; // largeur du curseur
mycaret.Height := Edit1.Width;
mycaret.canvas.Brush.Color := clRed; // couleur du curseur
mycaret.Canvas.fillrect(mycaret.Canvas.ClipRect);
For i:=0 To mycaret.Width-1 Do
For j:=0 To mycaret.Height-1 Do
mycaret.Canvas.Pixels[i,j]:=mycaret.Canvas.Pixels[i,j]Xor $FFFFFF;
end;
end. |
Partager