3

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 を他のコンボ ボックスに更新させる方法を知っている人はいますか?

4

1 に答える 1