假定有一個TStringGrid控件和一個TListBox控件,想要同步兩個控件的數據顯示,比如在TStringGrid上輸入一個字段串,在TListBox控件上馬上看到更新,這通常需要編寫事件處理代碼。LiveBindings提供了雙向數據綁定,讓開發人員可以分分鐘實現一個多控件同步的程序,這個示例的運行效果如下圖所示:

請按如下的步驟來實現這個例子:
1. 單擊主菜單中的 File > New > Multi-Device Application - Delphi > Blank Application ,創建一個新的多設備應用程序。
建議立即單擊工具欄上的Save All按鈕,將單元文件保存為uMainForm.pas,將項目保存為LiveBinding_DataSync.dproj。
你的項目結構應該像這樣:

2. 從工具面板,拖如下的控件到主窗體。
- TPrototypeBindSource —— 將提供示例數據。
- TBindNavigator —— 將為示例數據提供導航功能。
- TListBox —— 將顯示某些信息(例如AlphaColor名稱)。
- TStringGrid —— 將顯示關於示例數據的所有信息。
右擊PrototypeBindSource1控件,從彈出的菜單中選擇“Fields Editor”,添加BitmapName和ColorsName 2個示例字段,如下圖所示。

3. 接下來右擊任意位置,從彈出的菜單中選擇“Bind Visually”菜單項,打開LiveBindings Designer,在設計器中,開始進行快速綁定操作。

綁定連接如下:
- 將 PrototypeBindSource1 的 * 屬性綁定到 BindNavigator1 的 * 屬性。
- 將 PrototypeBindSource1 的 * 屬性綁定到 StringGrid1 的 * 屬性。
- 將 PrototypeBindSource1 的 * 屬性綁定到 ListBox1 的 Synch 屬性。
- 將 PrototypeBindSource1 的 BitmapName1 屬性綁定到 ListBox1 的 Item.Text 屬性。
ListBox和ListView都有Synch綁定項,主要作用如下:
- 保持選中項同步:當你在 TListBox 中選擇一個項目時,它會自動同步到綁定的數據源中的對應記錄
- 雙向數據流:不僅從數據源到 UI 的顯示同步,還包括從 UI 選擇回到數據源的同步
TStringGrid的*綁定到PrototypeBindingSource1的*,則表示使用PrototypeBindingSource1中的所有字段自動創建TStringGrid的列。
注意:如果數據源的結構發生變化(如字段增減),綁定 * 的網格會自動調整列結構以匹配。
現在,可以看到LiveBindings的雙向數據綁定的威力,當然目前仍然沒有過多的編碼,也沒有涉及到任何的細節,不用急,在這個系列中,將會逐漸進行深入。