2

2 つの TListBox オブジェクトを同期するには、いずれかのリストボックスの変更を受け入れて、両方のリストボックスで使用できるようにする方法を教えてください。

===================== 更新済み =========================== ======================== この質問は最初の回答の後に更新されます

使用する必要がある場合

bindingslist1.Notify(ListBox2,''); 

常にリストボックスに変更を加えていますが、使用する代わりに livebibnding を使用する目的は何ですか

ListBox1.Items.Assign(ListBox2.Items ); 

常に変化が起こっています。

4

1 に答える 1

2

要するに、これは私がfiremonkeyアプリケーションとしてこれを行った方法です.vclでも同じように動作するはずです:

新しい firemonkey HD アプリケーションを作成する

2 つのリストボックスを追加 編集とボタン (データを入力するため) を追加

Listbox1 -> Livebindings -> New Livebinding -> TBindExpression

BindingsList1 という名前の新しいコンポーネントがフォームに自動的に追加されます。

新しい bindexpression プロパティを編集します (私の場合は BindExpressionListBox11)。

Direction = DirBiDirectional
Managed = true
NotifyOutputs = true
ControlExpression = Items
SourceExpression = Items

buttonclick イベントを作成します (または、onChanged に入れることもできますが、項目を追加するときに何らかの理由で呼び出されません。リストで何かを選択すると呼び出されます):

procedure TForm1.Button1Click(Sender: TObject);
begin
   listbox2.Items.Add(edit1.Text);
   bindingslist1.Notify(listbox2, '');
end;

listbox2 に項目を追加すると、変更は listbox1 にも反映されます (dirBiDirectional 設定により)。代わりに listbox1 に追加する場合は、次を呼び出す必要があります。

bindingslist1.Notify(listbox1, '');

これが開始に役立つことを願っています。

Embarcadero には、 http: //docwiki.embarcadero.com/RADStudio/en/LiveBindings_in_RAD_Studio という優れたライブバインディング機能もあります。

于 2011-12-08T10:35:50.723 に答える