我們知道,TFdQuery 是通過 TFdConnection 去連接數據庫的。
而 TFdConnection 連接數據庫的參數,可以通過 TFdManager 獲得。
打開前面的例子程序,在設計期,選擇 FdQuery1,看看其屬性面板,有一個屬性:FetchOptions,這個屬性可以拉開,裏面有一堆屬性可以設置。
選中 FdConnection1,查看其屬性面板,也有一個 FetchOptions 屬性;
選中 FdManager1 查看其屬性面板,也有一個 FetchOptions 屬性。
默認情況下,也就是拖了上述幾個控件到界面上,什麼屬性都不去修改的情況下,FdQuery1 的 FetchOptions 屬性裏面的那一堆屬性值,是默認跟隨 FdQuery1.FetchOptions 裏面的屬性的。這裏我們可以做一個實驗:
1. 在屬性面板選擇 FdQuery1 的 FetchOptions 屬性,拉開,裏面最後一個屬性名是 Unidirectional,其值是 False;
2. 在屬性面板上查看 FdConnection1 的相同屬性,也是 False;
3. 在屬性面板上查看 FdManager1 的相同屬性,也是 False;
4. 修改 FdManager1 的該屬性爲 True;
5. 選擇 FdQuery1,在屬性面板查看該屬性,已經自動變爲 True 了。說明它自動跟隨 FdManager1 的屬性設置。
上述自動跟隨的好處是,當你有一大堆的 TFdQuery 的時候,只要集中在 FdManager1 裏面設置相關屬性就可以了,無需逐個 TFdQuery 去設置。
------------------------ 分割線 ------------------------
但是,如果某個 TFdQuery 需要單獨設置某個屬性,也是可以的。還是以 Unidirectional 作爲例子,在 FdManager1 裏面已經設置爲 True,則 FdQuery1 也跟隨爲 True。這時候,如果 FdQuery1 我要單獨設置爲 False 怎麼辦?
直接選擇 FdQuery1,在屬性面板 裏面,將這個屬性設置爲 False 就可以了。這時候,FdQuery1 的 FetchOptions 拉開的一堆屬性的第一個屬性名爲 AssignedValues 的屬性裏面,多了一個 [evUnidirectional]。意思是,AssignedValues 裏面有哪個屬性的名字,哪個屬性就可以單獨設置而不跟隨 FdManager。
如果程序寫了一半,你又想要那個屬性跟隨 FdManager 的設置,在其 FetchOptions 屬性底下的 AssignedValues 屬性裏面,把該屬性對應的名字去掉,就可以了。