我做了一个点击dbgrid1表头引发的过程,现在的问题是,我如何使dbgrid2、dbgrid3可使用该过程,过程里只使用了dbgrid1。var i : integer;
for i:= 1 to DBGridEh1.Columns.Count do
begin

end

解决方案 »

  1.   

    使用Sender参数。下面用3个Button举例说明(楼主看懂了,应用到DBGrid里去,就很简单了)type
      TForm1 = class(TForm)
        Button1: TButton;//放三个Button做试验
        Button2: TButton;
        Button3: TButton;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure BtnsOnClick(Sender : TObject);//声明为TForm1的类方法
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BtnsOnClick(Sender : TObject);
    begin
      ShowMessage('您点击的是 ' + TButton(Sender).Name);//使用了Sender参数
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Button1.OnClick := BtnsOnClick;//三个按钮的单击事件都指向BtnsOnClick
      Button2.OnClick := BtnsOnClick;
      Button3.OnClick := BtnsOnClick;
    end;end.
      

  2.   

    procedure clickhead(hh : TDBGridEh);
    var i : integer;
    beginfor i:= 1 to hh.Columns.Count do
    begin

    endend;比如你点第一个就使用 
    clickhead(DBGridEh1)依此类推
      

  3.   

    按我在一楼的用法,继续给楼主写更接近于DBGrid的代码://... 其他代码请仿效我在一楼的代码...procedure TForm1.ForDBGrids(Sender: TObject);
    var i : integer;
    begin
    for i:= 1 to TDBGridEh(Sender).Columns.Count do
      begin
      …
      TDBGridEh(Sender).  ....//如果点击了DBGridEh1,那这里TDBGridEh(Sender)就相当于DBGridEh1
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      DBGridEh1.OnClick := ForDBGrids;//三个DBGrid的单击事件都指向过程ForDBGrids
      DBGridEh2.OnClick := ForDBGrids;
      DBGridEh3.OnClick := ForDBGrids;
    end;相信楼主应该明白了。
      

  4.   

    procedure TForm1.ForDBGrids(Sender: TObject; var1,var2 : VarType);//vartype是参数类型
    begin
    ....
    end;多日不见楼主了。自从上次那个MainMenu和PageControl问题后。
      

  5.   

    利用 Sender 参数使代码重用,网上有许多介绍。'Sender'这个词在Delphi里随处可见,该用时就要用。
      

  6.   

    ztj007(田囝):其实写一个公共过程或函数,更为方便
    ---------------------------------
    难道上面的代码,不都是用的“公共过程或函数”吗?