var i:integer;
begin
  for i:=0 to self.ComponentCount-1 do
    begin
   Components[i].OnMouseMove:=myDrag.onMouseMove;//此名该如何写?主要是要每个控件上的OnMouseMove指向我自己的OnMouseMove。   end;
end;

解决方案 »

  1.   

    Components[i].OnMouseMove:=你的过程名;
      

  2.   

    问题是Components[i].OnMouseMove没有OnMouseMove事件啊?!!
      

  3.   

    那就....
    var i:integer;
    begin
      for i:=ComponentCount-1 downto 0 do do
        begin
          try 
            Components[i].OnMouseMove:=你的过程名;
          except
          end;
        end;
    end;
      

  4.   

    编释时通不过
    Components[i].OnMouseMove:=你的过程名;
      

  5.   

    以下是完整的代码示例:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,typinfo;type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        ListBox1: TListBox;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure  MyMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure  TForm1.MyMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
    begin
      ShowMessage('Mouse on '+Sender.ClassName+' x:'+IntToStr(x)+',y:'+IntToStr(y));
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      i:integer;
      temp:PPropInfo;
      x:TMethod;
    begin
      TMouseMoveEvent(x):=MyMouseMove;
      for i:=0 to self.ComponentCount-1 do
      begin
        temp:=nil;
        temp:=GetPropInfo(self.Components[i],'OnMouseMove');
        if temp<>nil  then
        begin
          //SetVariantProp(Components[i],'OnMouseMove',MyMouseMove);
          SetMethodProp(Components[i],temp,x);
        end;
      end;
    end;end.
      

  6.   

    递归啊.这是delphi入门级别程序了
      

  7.   

    谢谢Dongluo(Gavin Luo) ,我已经试成功了,
    我同时也试成功了mousedown,mouseup。
    再问一声,要是onClick的事件该如何写?
      

  8.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 0 to ComponentCount - 1 do
        if Components[I] is TWinControl then
        begin
          (Components[I] as TForm).OnMouseDown := myDrag.OnMouseDown;
          (Components[I] as TForm).OnMouseMove := myDrag.OnMouseMove;
          (Components[I] as TForm).OnMouseUp := myDrag.OnMouseUp;
          (Components[I] as TForm).OnClick := myDrag.OnClick;
        end;
    end;
      

  9.   

    那就....
    var i:integer;
    begin
      for i:=ComponentCount-1 downto 0 do do
        begin
          try 
            Components[i].OnMouseMove:=你的过程名;
          except
          end;
        end;
    end;
      

  10.   

    zswang(伴水清清)(专家门诊清洁工) ( ) 信誉:155 没用
      

  11.   

    var i:integer;
    begin
      for i:=0 to Owner.ComponentCount-1 do
        Components[i].OnMouseMove:=myDrag.onMouseMove;
    end;不过忠告你一句:用这种方法来实现拖动是很危险的。因为在很多别的地方开发者都需要OnMouseMove这个事件,你不应该占用它。如果需要这么做,那就应该使用钩子或者把父窗体子类化。
      

  12.   

    onClick := 'you procedure'
      

  13.   

    Components[i].OnClick:=myDrag.onClick;
      

  14.   

    主  题:  提个小问题,我刚从事开发控件,很多不懂,但这样的要求我想应该能达到。  
    作  者:  skynew2004 (总想让别人帮我一下。skynew.ys168.com)  
    等  级:    
    信 誉 值:  105  
    所属社区:  Delphi VCL组件开发及应用  
    问题点数:  20  
    回复次数:  14  
    发表时间:  2005-2-2 21:34:50  做个控件,只要用户用我的控件就能扁历当前用户的设计窗口中的所有控件并设置其属性。
    在程序设计中我已经能做到,但在控件制作中我不会,也就是如何能到当前用户窗口中的控件的有关信息等。
    不知有没有大虾能帮帮我?分不够再加。
    看来这贴没必要再回了