我想做个界面、逻辑和数据单元分离的程序,单条数据的读取、修改和删除可以通过逻辑单元中定义的类属性进行双向传递,但如果要对整张表的数据在表示界面显示,这个数据集该怎么从数据单元传过来呢?应该是一个对象集吧,请高手指点。

解决方案 »

  1.   

    把数据库结构映射成一个类,通过类来传递值,或者用Record也行...
      

  2.   

    Type
      TREC = Record
           var1:String
      END;
      PRec = ^Rec
    用PRec传递
      

  3.   

    是不是学DELPHI的大多数人都被五花八门的控件给惯懒了?为什么不多钻一下OOP呢?
      

  4.   

    呵呵,Delphi做界面的控件比较多啊~
    我用Delphi做界面,后台别人用C#做的DLL将数据集传过来,就可以读出数据。不过我不知道这是否符合规范。
      

  5.   

    to cuizhen7(如花) : 我本来就是在学OOP,没有在滥用控件啊,只是我的水平不到家,所以希望各位能帮帮我,指点一下迷津。
    我只是用分离的方法,让程序更容易维护。举个例子:
    1、逻辑单元中定义这个类
    type
      TStock = class
      private
        FStockCode: string;
        FStockPrice: Real;
      public
        procedure SetStockCode(const AStockCode: string);
        function GetStockCode: string;
        procedure SetStockPrice(const AStockPrice: real);
        function GetStockPrice: real;
        property StockCode read GetStockCode write SetStockCode;
        property StockPrice read GetStockPrice write SetStockPrice;
      end;
    2、数据存取单元
      type
      TDMStockForm = class(TDataModule)
        ADOConn: TADOConnection;
        ADOQuery: TADOQuery;
        procedure DataModuleCreate(Sender: TObject);
      private
        { Private declarations }
      public
        function ReadStockInfo: TStock;
        procedure WriteStockInfo(AStock: TStock);
        { Public declarations }
      end;3、显示单元
      通过对AStock对象的读取和写入来完成数据的增加、删除。
    我现在遇到的问题是怎么对表中多条记录通过这个业务单元返回到显示单元,因为我这些中定义的是单个对象的操作,怎么存储多条记录呢?
      

  6.   

    to wing_er():我觉得用记录集应该可以解决,不过能不能说的详细一点,谢谢!
      

  7.   

    每张表映射成一个列表对旬,每条数据对应成一个结构体,这个对象来管理这些数据,提供添加,删除,保存,查找方法.逻辑层用来操作数据层,界面直接调用逻辑层来显示.实现类似于ListToListView,ListToTreeView的方法.
      

  8.   

    问题解决了,多谢ZyxIp(绝望中...)指点