2016-11-28 18 views
3

Delphi 10.1では、DogCollection という名前のObjectListがあり、各エントリはカスタムクラスのTDog型です。Delphis LiveBindingsでBindSourceのオブジェクトを抽出するには?

malcolm grovesのチュートリアルのおかげで、私はDogCollectionにStringgrid を設定することができました。

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

は今、私は何でもオブジェクトとstringgridで強調表示され、私は型Tドッグから変数「CurrentDog」を更新するスクロールstringgridと毎回をスクロールできるようにしたいと思います。

私は自分のDogObjectsについての概要と私の犬の単一のオブジェクト を個別に表示/操作することができます。

私はこの時点で考えていません。

もしあなたの助けを借りれば、右クリック - >ナビゲータの追加でナビゲーターを追加しても、アダプターのAfterScrollイベントをトリガーすることはできません。

ご協力いただきありがとうございます。

答えて

1

質問を理解することはできませんが、あなたのリストの選択されたオブジェクトを操作するために変数 "CurrentDog"を持つ必要はないと思います。

犬(名前、年齢...)に必要なすべてのコンポーネント(TEdit)を作成し、これらのコンポーネントをTDataGeneratorAdapterの同じフィールド(名前、年齢...)にバインドすることができますTAdapterBindSourceの "Adapter"プロパティ)。

グリッド内の行を選択すると、対応するオブジェクトが編集コンポーネントに表示されます。 「テキスト」プロパティを変更すると、グリッドが更新されます。

EDIT:InternalAdapter

いくつか検索した後、あなたはOnClickイベントでは、あなたのTAdapterBindSource

のInternalAdapterを使用してオブジェクトを取得することができます:私のクラスはまだその他の機能を持っている

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

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

ボタンを押すと動作します。たとえば、データベース内のオブジェクトを更新する場合などです。 現在のプロパティ値をDBに保存するTDog-Classでupdate-functionを作成しました。 強調表示されたオブジェクトにアクセスする方法は少なくとも必要です。 –

+1

Ok、検索回数が少なくても、TAdapterBindSourceのInternalAdapterを使用する必要があります。 OnClickボタンで: プロシージャTForm8.Button1Click(送信者:TObject); var アダプタ:TBindSourceAdapter; begin アダプタ:= AdapterBindSource1.InternalAdapter; CurrentDog:= TDog(Adapter.Current); end; –

+0

私は家に帰ってくれてありがとう、ありがとう、私はそれを実装しようとし、それが動作するかどうかを確認します。 –

関連する問題