现在有这样一个需求,左侧是一个listbox,用来显示列表信息,然后右边用pagecontorl做的多页面数据管理,每个tabsheet就是对应一个数据库的表,可以参见下图
现在思路有点不清晰,请指点下,我想通过工具栏的新建、编辑、保存、删除来对数据进行处理,我现在有三个矿产,每个矿产所显示的tabsheet页面不一样,比如矿泉水,那么就把除了地热、地下水的基本情况两个tabsheet隐藏,其他的都显示,对应的地热,就是把矿泉水、地下水的tabsheet给隐藏,其他的都显示,地下水也是如此处理,这是界面上的操作,那么功能上的操作,因为我用的是adotable,那么每个tabsheet上就都有一个关键码,矿区编号,这个就是表示这所有的表都是通过这个矿区编号来进行关联的,新建矿区,我就是全部用adotable.append,然后再在界面上通过dbedit来进行数据的输入,保存呢,我就是用adotable.post,编辑就是adotable.edit。为了方便工作,我写了几个函数,比如对pagecontrol的界面控制,用了一个jbqkqshow(kc:string)、然后因为新建的时候,也涉及到一个界面显示、然后又是对不同数据表的操作,我是不是也要写一个专门处理数据表的函数呢?现在感觉思路有点乱,总想抽象点出来,尽量的将程序好控制,好处理,不知道各位有没有什么好的思路,或者对我的这个有好的建议,如果用类来处理,该如何处理呢?谢谢大家,最近因为几个项目同时压着,这个只是其中的一个信息化的项目,所以头很昏,先感谢了~

解决方案 »

  1.   

    公共的功能,如果是数据库,那么 ,肯定 有添加,修改,删除,查询,这四大功能。
    示例代码如下所示(仅供参考):
    type
    { TBase }  TBase = class(TObject)
      private
        FstrSQL: string;
        procedure SetstrSQL(const Value: string);  protected  public
        constructor Create;
        destructor Destroy; override;    function InsertRecord: Boolean; virtual; abstract;    //添加数据
        function UpdateRecord: Boolean; virtual; abstract;    //修改数据
        function DeleteRecord: Boolean; virtual; abstract;    //删除数据    function OpenDataSet: Boolean; virtual; abstract;     //打开数据集
        function RefreshDataSet: Boolean; virtual; abstract;  //刷新数据集    function FillDataSet: Boolean; virtual; abstract;     //填充数据至控件  published
        property strSQL: string  read FstrSQL write SetstrSQL;//执行的SQL语句
      end;implementation{ TBase }constructor TBase.Create;
    beginend;destructor TBase.Destroy;
    begin  inherited;
    end;procedure TBase.SetstrSQL(const Value: string);
    begin
      FstrSQL := Value;
    end;
      

  2.   

      To unearth 
    朋友,你这段代码,不错,可以共享一个 完整的 DEMO 吗,
      

  3.   

    Delphi 中自带的TObject,可以参考一下。不需要另外提供了。
    这样写的好处就是:所有的类都是从基类中继承的,所以说,如果以后要添加什么功能,可以在父类中添加,而不需要每个单元变动太大。即一改则全改的情况。至于特殊的情况,可以使用virtual, overide, inherited 配合使用,效果很不错。