2 つのコンボ ボックスを持つフォームがあり、どちらにも同じ項目リストが含まれており、互いに完全に同期する必要があります。(これらは、 の 2 つの異なるタブにある同じオプションのリストを表しますTPageControl
。)
これを機能させるために、LiveBinding をセットアップして、両方のコントロールを ClientDataset の同じフィールドにバインドします。ClientDataset は、このフォーム上のコントロールの同期を維持するためだけに存在します。MyTBindingsList
にはTLinkControlToField
両方のコンボ ボックスがあり、両方を同じフィールドにリンクしています。
GUI 内ですべての変更を行う限り、すべて正常に動作します。
ただし、関係のないアクションによってボックスの 1 つの選択状態が変更されると、それらは同期しなくなります。
cboMainValue.Items.InsertObject(0, 'ALL', TObject(-1));
cboAltValue.Items.Clear;
cboAltValue.Items.Assign(cboMainValue.Items);
cboMainValue.ItemIndex := 0;
cboAltValue.ItemIndex := 0;
この時点の後、何らかの理由でcboMainValue
、期待されるテキストが表示されますが、cboAltValue
空白のままです (つまりItemIndex = -1
)。
Text
ではなくプロパティを設定ItemIndex
し、ClientDataset のバッキング フィールドの値を編集しようとしましたが、いずれも異なる結果を生成しません。
1 つのコンボ ボックスの状態をプログラムで変更し、それに合わせて LiveBinding を他のコンボ ボックスに更新させる方法を知っている人はいますか?