程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 圖解Delphi 8 Eco開發實戰(6)

圖解Delphi 8 Eco開發實戰(6)

編輯:Delphi

4. 編碼

下面我們要完成的就是界面設計、編碼工作。在工程視圖中雙擊WinForm.pas打開窗體編輯器。ECO Application Wizard已經創建了一個ReferenceHandle組件rhRoot和多個Extender組件。Extender組件保留其默認屬性即可,如果將其刪除用戶界面中的控件將無法和ECO關聯。設置rhRoot的EcoSpaceType 為 "EcoCRMEcoSpace.TEcoCRMEcoSpace",如果在EcoSpaceType屬性下拉列表中沒有選項,可重新編譯一下工程。

在界面上放置6個DataGrid,分別將其重命名為dgPersons、dgCompanys、dgCompanyCars、dgPersonCarSells、dgCompanyCars、dgPersonCars,為使界面更清晰可以分別設定一下DataGrid的CaptionText。並且在每個DataGrid上放置兩個按鈕,其Text分別為"添加"、"刪除"。完成界面設計為如下樣式。

用戶界面中的組件需要和ExpressionHandle相連接才能顯示感知對象實例。在這裡ExpressionHandle與Delphi中Dateset的概念很類似,它是一組數據的集合。向窗體編輯器中新添加一個ExpressionHandle,設置其Name屬性為ehCompanys,其RootHandle屬性為rhRoot,雙擊Expression打開OCL Expression編輯器。OCL Expression編輯器很類似於我們以前用的SQL編輯器,不過它使用的是OCL語法,在系統發布運行後ECO會根據不同的數據庫平台將OCL翻譯成相應的SQL進行執行。在OCL Expression編輯器中輸入"Company.allInstances",它的含義是取得Company的所有對象實例,我們可以將它等效理解為SQL語句中的" Select * from Company"。

同樣我們為其他的幾個類建立對應的ExpressionHandle,它們的名字分別為ehPersons、ehCompanyCarSells、ehPersonCarSells、ehCompanyCars、ehPersonCars。為實現主子表關聯關系我們還需要CurrencyManagerHandle組件,添加一個CurrencyManagerHandle組件到設計器中,將其重命名為cmhCompany,設定其RootHandle屬性為主對象ehCompany,其BindContext 屬性為顯示Company列表的dgCompanys。

CurrencyManagerHandle組件的Element屬性即表示對象集中的當前元素,它是根據BindContext屬性來進行判斷當前元素的。我們如果想要使ehCompanyCarSells與Company建立主子關聯關系則需要設置ehCompanyCarSells的RootHandle屬性為cmhCompany,Expression屬性為"self.CarSell"。建立其他需要進行主子表關聯的CurrencyManagerHandle,它們分別是cmhPerson、ehCompanyCarSells、ehPersonCarSells、ehCompanyCars、ehPersonCars。其屬性與cmhCompany類似。

主要組件屬性為:

ehPersons.Expression := 'Person.allInstances';
ehPersons.RootHandle := Self.rhRoot;
ehCompanyCars.Expression := 'self.Car';
ehCompanyCars.RootHandle := Self.cmhCompanyCarSell;
cmhCompanyCarSell.BindingContext := Self.dgCompanyCarSells;
cmhCompanyCarSell.RootHandle := Self.ehCompanyCarSells;
ehCompanyCarSells.Expression := 'self.CarSell';
ehCompanyCarSells.RootHandle := Self.cmhCompany;
cmhCompany.BindingContext := Self.dgCompanys;
cmhCompany.RootHandle := Self.ehCompanys;
ehCompanys.Expression := 'Company.allInstances';
ehCompanys.RootHandle := Self.rhRoot;
ehPersonCarSells.Expression := 'self.CarSell';
ehPersonCarSells.RootHandle := Self.cmhPerson;
cmhPerson.BindingContext := Self.dgPersons;
cmhPerson.RootHandle := Self.ehPersons;
ehPersonCars.Expression := 'self.Car';
ehPersonCars.RootHandle := Self.cmhPersonCarSell;
cmhPersonCarSell.BindingContext := Self.dgPersonCarSells;
cmhPersonCarSell.RootHandle := Self.ehPersonCarSells;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved