在DBGRID的事件中,用到了列的排序和支持鼠标滚轮的事件,每一个FORM表单里都在重复同样的代码,我考虑有什么方法可以用一个固定的代码,然后在每个表单事件里调用,不知道可否?求具体的引用的代码!

解决方案 »

  1.   

    把你的dbgrid封装成一个自定义控件,放在frame就行了,最简单的,详情问度娘
      

  2.   

    哪果引用到的窗体里的实体不多的话,可以提取为一个公共的静态方法(Delphi里是类方法),将用的对象都传给这个方法,然后进行处理就行了。
      

  3.   

    自己封装一个grid,这还有什么可想的
      

  4.   

    大概明白了大家伙的意思,用继续的方式,下面是我在主窗体的一段代码:procedure TF_frame.DBGrid1TitleClick(Column: TColumn);
    var
        i:integer;
        fieldname:string;
    begin
        i:=Column.Index;
        if bSort then
        begin
            fieldname:=DBGrid1.Columns[i].FieldName+' ASC';
            bSort:=False;
        end
        else
        begin
            fieldname:=DBGrid1.Columns[i].FieldName+' DESC';
            bSort:=True;
        end;
        F_data.ADOQuery1.Sort:=fieldname;
    end;如何在子窗体中调用它呢??求解
      

  5.   

    1、把该方法封装到DBGrid控件里。这个要用到控件的继承和封装技术,就是重新扩展一个控件出来。
    2、另外一个办法是把FORM窗体加上DBGrid,然后加班方法,做成模版。其实也是窗体继承的原理。