CreateCaret()
showcaret()
destroycaret();
HideCaret();
***********
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
const
wm_newcaret=wm_user+1;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Image1: TImage;
procedure Edit1Enter(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure newcaret(var msg:Tmessage);message wm_newcaret;
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Edit1Enter(Sender: TObject);
begin
postmessage(handle,wm_newcaret,0,0);
end;procedure TForm1.newcaret(var msg: Tmessage);
begin
edit1.setfocus;
CreateCaret(edit1.Handle,image1.Picture.Bitmap.Handle,edit1.width,edit1.height);
showcaret(edit1.handle);
end;end.
//利用onenter事件,用postmessage发出一个自定义消息
//在自定义消息中,用sendmessage强制setfocus后,再createcaret就可以了
Edit收到焦点时,光标是变了,但一旦我键入字符,光标又变回原样。我想知道如何在编辑文字时,光标一直不变(自定义的)
只要响应application.onactivate事件可以了
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, AppEvnts;
const
wm_newcaret=wm_user+1;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Image1: TImage;
ApplicationEvents1: TApplicationEvents;
procedure Edit1Enter(Sender: TObject);
procedure ApplicationEvents1Activate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure newcaret(var msg:Tmessage);message wm_newcaret;
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Edit1Enter(Sender: TObject);
begin
postmessage(handle,wm_newcaret,0,0);
end;procedure TForm1.newcaret(var msg: Tmessage);
begin
edit1.setfocus;
CreateCaret(edit1.Handle,image1.Picture.Bitmap.Handle,edit1.width,edit1.height);
showcaret(edit1.handle);
end;procedure TForm1.ApplicationEvents1Activate(Sender: TObject);
begin
CreateCaret(edit1.Handle,image1.Picture.Bitmap.Handle,edit1.width,edit1.height);
showcaret(edit1.handle);
end;end.
showcaret()
destroycaret();
HideCaret();
***********
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
const
wm_newcaret=wm_user+1;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Image1: TImage;
procedure Edit1Enter(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure newcaret(var msg:Tmessage);message wm_newcaret;
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Edit1Enter(Sender: TObject);
begin
postmessage(handle,wm_newcaret,0,0);
end;procedure TForm1.newcaret(var msg: Tmessage);
begin
edit1.setfocus;
CreateCaret(edit1.Handle,image1.Picture.Bitmap.Handle,edit1.width,edit1.height);
showcaret(edit1.handle);
end;end.
//利用onenter事件,用postmessage发出一个自定义消息
//在自定义消息中,用sendmessage强制setfocus后,再createcaret就可以了
Edit收到焦点时,光标是变了,但一旦我键入字符,光标又变回原样。我想知道如何在编辑文字时,光标一直不变(自定义的)
只要响应application.onactivate事件可以了
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, AppEvnts;
const
wm_newcaret=wm_user+1;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Image1: TImage;
ApplicationEvents1: TApplicationEvents;
procedure Edit1Enter(Sender: TObject);
procedure ApplicationEvents1Activate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure newcaret(var msg:Tmessage);message wm_newcaret;
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Edit1Enter(Sender: TObject);
begin
postmessage(handle,wm_newcaret,0,0);
end;procedure TForm1.newcaret(var msg: Tmessage);
begin
edit1.setfocus;
CreateCaret(edit1.Handle,image1.Picture.Bitmap.Handle,edit1.width,edit1.height);
showcaret(edit1.handle);
end;procedure TForm1.ApplicationEvents1Activate(Sender: TObject);
begin
CreateCaret(edit1.Handle,image1.Picture.Bitmap.Handle,edit1.width,edit1.height);
showcaret(edit1.handle);
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货