動態

詳情 返回 返回

一步一步學習使用LiveBindings(4) 使用LiveBindings同步多個控件的數據 - 動態 詳情

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

請按如下的步驟來實現這個例子:

1. 單擊主菜單中的 File > New > Multi-Device Application - Delphi > Blank Application ,創建一個新的多設備應用程序。
建議立即單擊工具欄上的Save All按鈕,將單元文件保存為uMainForm.pas,將項目保存為LiveBinding_DataSync.dproj。

你的項目結構應該像這樣:
img

2. 從工具面板,拖如下的控件到主窗體。

  • TPrototypeBindSource —— 將提供示例數據。
  • TBindNavigator —— 將為示例數據提供導航功能。
  • TListBox —— 將顯示某些信息(例如AlphaColor名稱)。
  • TStringGrid —— 將顯示關於示例數據的所有信息。

右擊PrototypeBindSource1控件,從彈出的菜單中選擇“Fields Editor”,添加BitmapName和ColorsName 2個示例字段,如下圖所示。
img

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

綁定連接如下:

  • 將 PrototypeBindSource1 的 * 屬性綁定到 BindNavigator1 的 * 屬性。
  • 將 PrototypeBindSource1 的 * 屬性綁定到 StringGrid1 的 * 屬性。
  • 將 PrototypeBindSource1 的 * 屬性綁定到 ListBox1 的 Synch 屬性。
  • 將 PrototypeBindSource1 的 BitmapName1 屬性綁定到 ListBox1 的 Item.Text 屬性。

ListBox和ListView都有Synch綁定項,主要作用如下:

  • 保持選中項同步:當你在 TListBox 中選擇一個項目時,它會自動同步到綁定的數據源中的對應記錄
  • 雙向數據流:不僅從數據源到 UI 的顯示同步,還包括從 UI 選擇回到數據源的同步

TStringGrid的*綁定到PrototypeBindingSource1的*,則表示使用PrototypeBindingSource1中的所有字段自動創建TStringGrid的列。

注意:如果數據源的結構發生變化(如字段增減),綁定 * 的網格會自動調整列結構以匹配。

現在,可以看到LiveBindings的雙向數據綁定的威力,當然目前仍然沒有過多的編碼,也沒有涉及到任何的細節,不用急,在這個系列中,將會逐漸進行深入。

Add a new 評論

Some HTML is okay.