Delphi XE2 新功能:LiveBindings --- 把對象之間的屬性綁定起來 日期:2011年9月9日 做者: 人氣:5340 查看:[大字體 中字體 小字體]框架
XE2 有了 FireMonkey 框架,它不一樣於 VCL ,以往的數據感知控件不能放在它上面,因此 XE2 提供了 LiveBindings 功能做爲替代方案。另外它也是個通用的基礎設施,一樣可用於傳統的VCL字體
這裏用一個極簡化的例子說明它的意圖,在窗體上放一個 edit 和一個 label,找到 label 的 LiveBindings 屬性,選 New LiveBinding... ,再選擇 TBindExpressionlua
而後設置屬性如圖所示.net
這樣就把 edit 的 text 屬性和 label 的 caption 屬性綁定起來了,不用寫任何代碼。運行後,會看到 label 的內容就是 edit 的 text 值,可是在 edit 中輸入內容,label 卻沒有跟着變化,若是要從新得到 edit 的值,能夠用代碼: Self.BindExpressionLabel11.Evaluate; //這個BindExpressionLabel11,就是剛纔點 New LiveBinding... 時新建的對象。orm
BindExpressionLabel11 的 SourceComponent 屬性,用於指定數據來源於哪裏(哪一個對象)。SourceExpression 屬性,是一個表達式,示例中只是簡單的寫了 text,這個 text 就是 SourceComponent 的屬性(也就是指 TEdit 的屬性)。 還能夠寫這樣的表達式: text+'aaa' name+text對象
可是卻不能寫 trim(text) 這樣的表達式,不過咱們能夠用它的 OnAssignValue 事件來實現這個功能,這個事件在 Evaluate 時觸發,表達式所計算出來的值被放在事件的 var Value: TValue 參數裏,它是個var 的,因此能夠修改它的值。 view plaincopy to clipboardprint?blog
LiveBingings 也能夠感知數據集,可是要在 FireMonkey 2D Application 環境下,在窗體上放一個 label,一樣再找到 LiveBindings 屬性,會發現它多了一項 Link to DB Field...事件
選擇它,出現下面的圖,這個界面裏的樹,描述了當前窗體上放置的數據集,和它的字段,設置好後,它看起來就象是個 TRzDbLabel 了,實時顯示字段值,不須要象上面的例子那樣寫Evaluate()ip