前几天听我的同事说,在他原来的公司,他们的代码和界面是可以完全的分开的,程序员只做程序,界面完全是由美工画出来的。比如列表的(dbgrid,stringgrig,combox,listbox)等,只要按要求船给方法就可以得到结果,我想知道要怎么能实现呢。

解决方案 »

  1.   

    代码根据不同的功能写在不同的单元,实现接口返回需要的数据。例如DBGrid就返回DataSource,ListBox就返回TStringList。做界面时使用那些已经做好的接口来完成。
      

  2.   

    这是一个比较大的话题, 建议你看看Joanna Carter的MVP文章和范例。
      

  3.   

    我同事说,不是那么的,他说反回的好像都是Tlist的
      

  4.   

    首先抛弃代码和界面的概念,暂时忘记DELPHI中的一些术语,从单纯的面向对象来说,用功能对象和显示对象来理解比较好。简单来说,(功能对象)<->接口 or 接口类<->显示对象   中间通过一个或多个参数作为他们的接口。靠,这个上面想画个图来表示太郁闷了。
      

  5.   

    先返回统一格式的数据,界面根据配置文件来加载数据.TFORM也是对象呀,主要是看交互的接口定义.
      

  6.   


    我開發了這樣一套系統架構,主要應用於ERP/MRP等數據庫系統。完全面向對象,子窗體代碼相當少,減少開發人員的大量工作,也相應減少系統因開發人員的疏忽出錯的機會。
     
    目前實現的功能有:
    1、客戶端簡繁自動識別,並自動調整系統相關Caption、Text等,界面數據不作調整
    2、實現了增、改、刪、導出(excel,txt,xml,html)等基本功能
    3、除主界面標准功能外,其它功能根據頁面自動實現,並實現可控
    4、可根據不同用戶設置數據的查看、修改、刪除任意記錄的權限
    5、可以根據不同用戶設置一個或多個數據欄位是否可視
    6、元件Caption自動加載,從數據字典內抓取
    7、自動識別主鍵,並自動判斷數據是否重復,控件自動聚焦
    8、資料保存時是基於事務的,保證資料的完整性
    9、查詢條件自動實現,並可手工添加查詢條件
    10、Grid風格可客制化
    11、元件數據源設置錯誤自動報錯
    12、數據修改、刪除的完整日志保存
    13、子窗體開發時數據的刪除前、修改前、保存前的事件的特殊部分由開發人員自行定義。
    14、審核的設置,及審核、反審核等功能,由審核中心統一管理
    15、報表的客戶自定義,由報表中心統一管理並授權做到每一元件、每一記錄完全可控。
     
    程序人員只需要在界面添加元件,並設置好datasource及dataField等,並加載數據即可。
     
    一個最簡單的Form只需要寫兩行代碼即可實現新增、修改、刪除、查詢、導出,打印,定制報表等基本功能。

    procedure TF_Company.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      inherited;
      F_Company:=nil;
    end;
     
    procedure TF_Company.FormCreate(Sender: TObject);
    begin
      inherited;
      GetCDSData(Ds_Master,'P_company'); //加載數據  p_company為表名
    end;