私は2つのコンボボックスを持つフォームを持っています。両方のコンボボックスは同じアイテムリストを持ち、互いに完全に同期する必要があります。TComboBoxのプログラム的な変更をLiveBindingsでうまくいくようにするにはどうすればよいですか?
この作業を行うために、私はLiveBindingをセットアップして、両方のコントロールを他の目的のために存在するClientDataSetの同じフィールドにバインドします。このフォームのコントロールを同期したままにしておきます。私のTBindingsList
には両方のコンボボックスの両方に同じフィールドにリンクするTLinkControlToField
があります。
GUI内ですべての変更を行う限り、すべて正常に動作します。無関係なアクションはボックスのいずれかの選択状態を変更する場合は、彼らが同期して取得
:
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
)。
ItemIndex
ではなくText
プロパティを設定し、ClientDatasetのバッキングフィールドの値を編集しようとしましたが、これらのいずれも異なる結果を生成しませんでした。
1つのコンボボックスの状態をプログラムで変更し、それに合わせてもう1つのLiveBindingを更新する方法を知っている人はいますか?
2つのコンボを有することに代わり、一つだけを持っていると 'TPageControl.OnChange'イベントでその' parent'を変更する可能性があります。同期の必要性はもう存在しません。 –