2016-11-28 27 views
3

在Delphi 10.1中,我有一個名爲DogCollection的ObjectList ,每個條目都是類型爲TDog的自定義類。如何在Delphis LiveBindings中提取BindSource的對象?

感謝來自malcolm groves的教程我能夠用我的DogCollection填充Stringgrid 。

http://www.malcolmgroves.com/blog/?p=1084

現在我希望能夠通過stringgrid每次我滾動我想更新從類型TDog變量「CurrentDog」滾動,與任何對象在stringgrid高亮顯示。

因此,我有一個關於我的DogObjects的概述,以及我可以獨立查看/操作的單個對象我的狗 。

我在這一點上沒有想法。

如果它對你有幫助,我也不能讓適配器的AfterScroll事件觸發,即使我用RightClick-> Add Navigator添加導航器。

我感謝您的幫助和時間。

回答

1

不確定要理解這個問題,但我認爲你不需要有一個變量「CurrentDog」來處理你選擇的列表對象。

您可以創建您的狗(名稱,年齡...)所需的所有組件(TEdit),並將這些組件綁定到TDataGeneratorAdapter中的相同字段(名稱,年齡...) TAdapterBindSource的「Adapter」屬性)。

然後,當您在網格中選擇一行時,相應的對象將出現在您的編輯組件中。當您修改「文本」屬性時,網格會更新。

編輯:InternalAdapter

一些搜索後,你可以得到你的目標與你TAdapterBindSource

在OnClick事件的InternalAdapter:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Adapter: TBindSourceAdapter; 
begin 
    Adapter:= AdapterBindSource1.InternalAdapter; 

    CurrentDog:= TDog(Adapter.Current); 
end; 
+0

我的班級還有其他職能按鈕按下工作。例如,當我想更新我的數據庫中的對象。 我在我的TDog-Class中創建了一個更新函數,它將當前的屬性值保存回數據庫。 所以我至少需要一種方法來訪問突出顯示的對象。 –

+1

好吧,經過幾次搜索之後,您必須使用TAdapterBindSource的InternalAdapter。 所以在OnClick按鈕上: procedure TForm8.Button1Click(Sender:TObject); var 適配器:TBindSourceAdapter; begin Adapter:= AdapterBindSource1.InternalAdapter; CurrentDog:= TDog(Adapter.Current); 結束; –

+0

謝謝你,我回家後,我會盡力實現它,看看它是否有效。 –