delphi中的edit怎么设为只读后没有光标也没有焦点?Enable的方法除外
delphi中的edit如何设为只读后没有光标也没有焦点?Enable的方法除外。
delphi中的edit如何设为只读后没有光标也没有焦点?
Enable的方法除外,Enadle后文字颜色会变灰色。。
有方法可以实现?
------解决方案--------------------
------解决方案--------------------
你要是像设置WS_EX_NOACTIVATE 样式这么干,就不用子类化edit了。
要批量设置的话可以这样
delphi中的edit如何设为只读后没有光标也没有焦点?
Enable的方法除外,Enadle后文字颜色会变灰色。。
有方法可以实现?
------解决方案--------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
edt1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
OldWndProc: TWndMethod;
procedure NewWndProc(var m: TMessage);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.NewWndProc(var m: TMessage);
begin
// 滤掉 WM_SETFOCUS 消息
if m.Msg <> WM_SETFOCUS then
OldWndProc(m);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// 接管 edt1 的窗口过程
OldWndProc := edt1.WindowProc;
edt1.WindowProc := NewWndProc;
end;
end.
------解决方案--------------------
你要是像设置WS_EX_NOACTIVATE 样式这么干,就不用子类化edit了。
要批量设置的话可以这样
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
edit: TEdit;
begin
for i := 0 to ControlCount - 1 do
begin
if Controls[i] is TEdit then
begin
edit := Controls[i] as TEdit;
SetWindowLong(edit.Handle, GWL_STYLE,
GetWindowLong(edit.Handle, GWL_STYLE) or WS_EX_NOACTIVATE);
end;
end;
end;