動作確認
C++ Builder XE4
TComboBoxにてItems[]を変更時、ItemIndexが-1に初期化されてしまう。
それを回避するため、以下のような関数を用意している。
void TItemsUpdator::setStringToTComboBoxItems(String str, TComboBox *cbPtr, bool withSpace)
{
if (cbPtr == NULL) {
return;
}
TStringList *slPtr = static_cast<TStringList *>( cbPtr->Items );
int preIdx = cbPtr->ItemIndex;
if (withSpace) {
slPtr->StrictDelimiter = true;
slPtr->Delimiter = L',';
slPtr->DelimitedText = str;
} else {
slPtr->CommaText = str;
}
// Items[]変更時にItemIndexが-1に初期化されるので元々の値に戻す
cbPtr->ItemIndex = preIdx;
}
もっとシンプルな方法で同じことができないだろうか。