熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi深度探索之使用Bold開發數據庫應用(3)

2013-11-23 17:37:26  來源: Delphi編程 

內建的Bold對象編輯界面

  雙擊BoldGrid中左側的箭頭或者記錄可以激活對象編輯對話框對象編輯對話框可以同時啟動多個如下圖所示意

  在BoldGrid中我們可以使用ctrl+鼠標點擊來多選對象也可以點擊網格左上角來選中所有的對象但是默認的BoldGrid對象編輯器不支持人員和賬目對象的關聯的顯示和編輯但彈出的對象編輯器則支持這些關聯上圖框起來的箭頭可以用來拖放對象將哈巴狗拖動到PayPerson的位置就可以建立支付人同賬目對象之間的關聯了

  還有一點要注意的是彈出式對象編輯器並不是同Grid同步綁定的因此我們可以打開多個編輯器的同時還可以在網格內的記錄間導航到不同的位置兩者可以做到互不影響游標而傳統的數據庫程序無法做到這點因為當游標改變時會同步改變所有同DataSource綁定的數據感知組件中的內容

  退出系統後可以看到Dataxml中記錄了剛才輸入的信息

主從關系的實現

  使用上面的Bold程序再輸入一個大尾巴兔兔的用戶你會發現有一個問題就是大尾巴兔兔同志目前沒有任何賬目支出但是點選到大尾巴兔兔對象上時賬目網格組件仍然是顯示所有的賬目信息而沒有實現主從關聯

  為了實現主從關系需要修改一下賬目對象的BoldListHandle組件的屬性將blhAcct的RootHandle屬性由原來的DmMoneybshMoney改成blhPerson表示父對象是人員同時要將Expression屬性改成Pay另外為了能夠在賬目網格中顯示同賬目關聯的人員信息雙擊bgAcct網格添加一個新的Column設定它的BoldPropertiesExpression為PayPersonname表示字段用來顯示支付賬目人的名字見下圖示意

  再次運行程序可以看到這回實現了真正的主從關聯當點擊哈巴狗時只顯示同哈巴狗關聯的賬目同時如果這時點擊賬目網格的添加命令的話新建的對象的PayPerson自動設定為哈巴狗如下圖示意

級聯刪除的實現

  前面雖然我們實現了主從關系但是將所有人員都刪除後你會發現dataxml文件中仍然有賬目信息這表明刪除人員時沒有將同人員綁定的賬目信息刪除也就是說並沒有實現級聯刪除

  為了更形象的察看這一現象在界面添加一個BoldGridBoldNavigator和BoldListHandle來顯示系統中所有的對象設定BoldListHandle的RootHandle屬性為DmMoneybshMoney設定Expression屬性為MoneyModelRootallInstances表示顯示系統中所有的對象實例

  然後向前面一樣將BoldListHandle綁定到BoldGrid和BoldNavigator並創建默認的Columns再次運行後的效果如下圖所示意

  可以看到全部對象列表中有兩個字段type字段表示系統中對象的類型而AsString字段則顯示對象的字符串表達但是默認Person對象的AsString字段裡面顯示的是對象組件加類別字符串而AcctItem對象的AsString顯示的是對象的Amount屬性但是為了觀察對象被刪除的情況我希望能夠顯示更有意義的字符串如顯示人員的名稱顯示賬目的名稱及支付人

  因此需要修改模型中對象默認字符串的定義雙擊數據模塊中bmMoney激活Bold UML Editor選中Person對象設定Default string rep為name表示默認的AsString屬性為人員的名稱見下圖示意

  同樣的設定AcctItem的Default string rep為payPersonname++name表示AsString由支付人的名稱及賬目名稱構成

  再次運行程序顯示效果示意如下

  這時將哈巴狗從人員列表中刪除後界面示意圖如下

  可以看到賬目對象大白菜和化妝品仍然還在只是支付人信息為空了看來賬目對象確實沒有被級聯刪除為了實現級聯刪除再次打開Bold UML Editor展開PayAssoc關聯選中Pay然後設定Delete action為Cascade表示使用級聯刪除見下圖示意

  再次運行程序輸入人員信息及人員賬目信息後再刪除人員會發現這回將綁定的賬目信息也一同刪除了

總結

  綜上所述使用Bold我們可以在只寫一行代碼不用設計任何數據庫表的情況下建立一個具有初步功能的應用程序由此可見Bold的強大的快速開發數據庫的能力接下來我將介紹一些更加高級的功能


From:http://tw.wingwit.com/Article/program/Delphi/201311/24783.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.