数据模块的名字是DM,定义了一个过滤数据子集的过程
PROCEDURE DISPLAY(DATASET:TDATASET; FILTERSTRING:STRING);PROCEDURE TDM.DISPLAY(DATASET:TDATASET; FILTERSTRING:STRING);
BEGIN
 DATASET.Filtered:=FALSE;
 DATASET.Filter:=FILTERSTRING;
 DATASET.Filtered:=TRUE;
END;我在别的窗体里调用这个过程也能实现预期的功能,但我感觉反映有点慢
而且必须加上DM. ,即在别的窗体调用时要
DM.DISPLAY(ADOTABLE1,'COUNTRY=...');
我想系统自带的函数比如SHOWMESSAGE(); 就可以直接调用就不用加上UNIT_NAME.SHOWMESSAGE(); 是不是我的写法不规范???高手请指教!!!!!!!!

解决方案 »

  1.   

    如果按下面方法定义,可以不带单元的名字
    var
      frmDm: TfrmDm;PROCEDURE DISPLAY(DATASET:TDATASET; FILTERSTRING:STRING);然后是过程的实现
    PROCEDURE DISPLAY(DATASET:TDATASET; FILTERSTRING:STRING);
    BEGIN
     DATASET.Filtered:=FALSE;
     DATASET.Filter:=FILTERSTRING;
     DATASET.Filtered:=TRUE;
    END;这样凡是在引用DM的地方,都可以直接用Display执行这个过程了
      

  2.   

    因为你声明的函数DISPLAY是在DM内的Public声明的,
    你应该在Public外声明,如:
      public
        { Public declarations }
      end;  procedure DISPLAY(DATASET:TDATASET; FILTERSTRING:STRING);
      
      var
        dm:Tdm;
      implementation  procedure DISPLAY(DATASET:TDATASET; FILTERSTRING:STRING);
      begin
        DATASET.Filtered:=FALSE;
        DATASET.Filter:=FILTERSTRING;
        DATASET.Filtered:=TRUE;  end;这样建立的函数在别处调用时,就不用写dm了。
    哈哈哈阿,你试试