delphi中的edit怎么设为只读后没有光标也没有焦点?Enable的方法除外

delphi中的edit如何设为只读后没有光标也没有焦点?Enable的方法除外。
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;