OnMouseMove没有对象检查器delphi

时间:2013-02-17 05:10:20

标签: delphi onmousemove

我的应用程序有350个编辑字段,所有这些字段都有一个OnMouseMove事件。 我为所有这些代码生成了这段代码:

...

type

...    
procedure Edit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure Edit2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);    
...

implementation

{$R *.dfm}

...    
procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,  
  Y: Integer);  
begin 
  Edit1.SetFocus(); 
end;

procedure TForm1.Edit2MouseMove(Sender: TObject; Shift: TShiftState; X,  
  Y: Integer);
begin 
  Edit2.SetFocus(); 
end;    
...

但我没有去对象检查器双击OnMouseMove。 有没有办法让这个工作没有对象检查器。 您是否有一个示例代码行可以使其适用于第一个编辑字段?

1 个答案:

答案 0 :(得分:9)

您可以创建一次并自行分配代码:

type
  TForm1=class(TForm)
    procedure EditMouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    //...
  end;

implementation

procedure TForm1.EditMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  CurrEdit: TEdit;
begin
  if (Sender is TEdit) then
  begin
    CurrEdit := TEdit(Sender);
    // Do whatever with CurrEdit
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.OnMouseMove := EditMouseMove;
  Edit2.OnMouseMove := EditMouseMove;
  Edit3.OnMouseMove := EditMouseMove;
end;

如果您想为表单上的每个TEdit指定相同的一个:

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to ControlCount - 1 do
    if Controls[i] is TEdit then
      TEdit(Controls[i]).OnMouseMove := EditMouseMove;
end;