if fmBSCustomer.PageControl1.ActivePageIndex=0 then
begin
fmDM.aqurBSCust.Cancel;
fmBSCustomer.dxDBInspector1.Options:=fmBSCustomer.dxDBInspector1.Options-[dioEditing];
Key_No_Off(false);
end;
以上程序想做成公用函数,fmBSCustomer和fmDM.aqurBSCust是作为两个参数可变的
其他都是不变的,把这个公用函数放在一个没有窗体的单元里,提示PageControl和
dxDBInspector1没有定义,我在uses中添加了各自要使用的单元,还是不行,如何解决。

解决方案 »

  1.   

    if (fmBSCustomer As TForm).PageControl1.ActivePageIndex=0 then
    begin
    (fmDM As TForm).aqurBSCust.Cancel;
    (fmBSCustomer As TForm).dxDBInspector1.Options:=(fmBSCustomer  As TForm).dxDBInspector1.Options-[dioEditing];
    Key_No_Off(false);
    end;
      

  2.   

    你将fmBSCustomer和fmDM.aqurBSCust作为参数
    看你的代码估计一个是窗体一个是数据模块
    这样做当然找不到窗体中的pagecontrol的定义,另外一个dxDBInspector1也一样
      

  3.   

    函数的参数里面添加俩个  AFunction(..APageControl: TPageControl;ADxDBInspector:TDxDBInspector)  在函数里面使用APageContrl和ADxDBInspector。
    调用函数的时候制定具体的PageControl名称和DxDBInspector名称
      

  4.   

    procedure AddItem(FormName:TForm;aqur:TADOQuery;
    APage:TPageControl;AdxDBInsp:TdxDBInspector);
    var p:TPoint;
    begin
      if FormName.APage.ActivePageIndex=0 then
        begin
          fmDM.aqurBSPack.Append;
          FormName.AdxDBInsp.Options:=FormName.AdxDBInsp.Options+[dioEditing];
          FormName.AdxDBInsp.SetFocus;
          Key_No_Off(true);
        end;
      end;
    提示APage和AdxDBInsp未定义
      

  5.   

    每个控件都存在一个单元文件中的,你先把在这个单元中用到的所有控件的PAS文件放在USE中:如果不知道对应的PAS可以这样子:
    1。新建一个空窗体,记住USE中的内容
    2。将对应的控件放入窗体中,对比一下还没放前的内容就知道
       是哪个PAS
      

  6.   

    不用在公共函数的单元里Uses任何单元,否则还叫什么公共函数,别的单元要uses它
    procedure CommonProc(frmBSCustomer:TForm,...);
    //除Form变量外,Form中的控件一律不放入变量
    begin
    if TPageControl(fmBSCustomer.FindComponent('PageControl1')).ActivePageIndex=0 then
     ....  //以下照此办理,我看不出你其它的控件都是什么,就不写了
    end;
      

  7.   

    我试过用 
    with formname do 
    beginend