大概是想实现 
在DataModule2 
r:=DataModule2.table1 
然后在Form1中使用 
r.open 
实现r.open代替DataModule2.table1.open; 
该?????? 
 
 

解决方案 »

  1.   

    不太明白楼主的意思。
    是不是想在Form1中调用DataModule2的数据源?
    如果是这样的话那就先在Form1中引用DataModule2,然后就可以直接这样DataModule2.r.open赋值了。或者你先定义一个变量,把DataModule2.r赋给它。这样就更简明了。
      

  2.   

    var
    r:ttable;
    begin
    r:=ttable.create;
    r:=DataModule2.table1;
    r.open;   
    end;不过你这样有什么意义呢?直接引用DataModule2.table1多好啊
      

  3.   

    form1中var
      t:TTable;
    begin
      t:=DataModule2.Table1;
      t.Open;
    end;
      

  4.   

    我想让Form1里的代码变成
    r.open;
    r.close;
    等等...全用r代替
    不具体指定数据模块,达到不需要修改Form1的代码,
    哪个数据模块需要被Form1使用时,
    就在数据模块的共用声明里加个r声明,然后r:=这个模块的某个表现在
      public
        r:ttable;
    procedure TDataModule2.DataModuleCreate(Sender: TObject);
    begin
      r:=DataModule2.Table1;
      r.open;
    end;
    都通过了,
    在Form中
    r.open
    被判定为:程序有错,不能调用....
      

  5.   

    改好了,编译通过
    DataModule2的
    var
      DataModule2: TDataModule2;
      uandp:ttable;implementation{$R *.dfm}procedure TDataModule2.DataModuleCreate(Sender: TObject);
    begin
      uandp:=datamodule2.ZTable;
    end;Form1的
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      uandp.open;
    end;