TTntComboBox空白第一行

问题描述:

我有一个TTntComboBox,并且在显示模式对话框(组合框所属的模式对话框)之前将itemindex设置为正值,但是第一次,组合框显示空项目。TTntComboBox空白第一行

如果关闭对话框并重新打开它,它会显示所需的项目。

在第一次显示对话框并且组合框样式为csDropDownList之前,itemindex不是-1。

编辑 - >

在代码 键片断把在主函数 - 在WinMain中

父对话框有一个列表框和编辑形式初始化为

 Application->CreateForm(__classid(TChildDialog), &ChildDialog); 

,添加和删除按钮来编辑,添加,删除列表框的条目。当点击任何按钮时,条目的数据将以问题形式显示(我将称之为ChildDialog) 。 与编辑按钮相关联的动作是如下(母体形式)

if (ListBox->ItemIndex >= 0) { 
    TTntListItem *Item = ListBox->Items->Item[ListBox->ItemIndex]; 
    ChildDialog->SetData(Item->Data); 
    if (ChildDialog->ShowModal() == mrOk) { 
     delete Item->Data; 
     TData *NewData = ChildDialog->GenerateData(); 
     PopulateData(Item, NewData); 
    } 
} 


void __fastcall ParentForm::PopulateData(TTntListItem *Item, TData *Data) { 
    Item->Data = Data; 
    Item->SubItems->Clear(); 
    Item->SubItems->Add(functionUsingSomeDatastruct(Data)); 
} 

而且ChildDialog的SetData的(形式的所讨论) - 其具有编辑框,组合框如下

void __fastcall TChildDialog::SetData(TData *Data) 
for (int i = 0; i < someDataStructLength(); i++) { 
    if (!strcmp(someDataStruct(i)->String, Data))  { 
    combobox->ItemIndex = i; 
    break; 
    } 
} 
EditBox->Text = SomeData.String2; 

的构造函数子对话框定义为

__fastcall ChildDialog::ChildDialog(TComponent* Owner) 
    : TForm(Owner) 
    { 
    combobox->Items->Clear(); 
    for (int i = 0; i < datacount(); i++) { 
     combobox->Items->Add(someDataStruct(i)->Sring); 
    } 
    combobox->ItemIndex = 0; 
    } 
+1

你如何显示表格?你是否每次都创建它的新实例,或者是否重复使用同一个实例?你什么时候设置项目索引? – 2012-03-07 18:26:36

+0

我重复使用同一个实例。我将窗体显示为“if(Dialog-> ShowModal()== mrOk){}”。在显示对话框之前,我将项目索引设置为正值。 – dips 2012-03-07 18:48:34

+0

你的代码有一些设计缺陷,但由于我们无法访问它,所以我们不能告诉你它是什么。一种可能性是,您在*之前用项目填充列表框中的项目索引*。 – 2012-03-07 19:57:04

终于找到了答案。我正在使用gettext进行本地化。

在FormShow - 我打电话TranslateComponent为

ChildDialog::FormShow() { 
    TranslateComponent(this); 
} 

这是重新组合框的ItemIndex所。

现在把它移到ctor。

+1

+1,即使在所有负面和接近的投票之后,都可以查找和发布答案。 – 2012-03-09 18:44:37

+1

+1也是出于同样的原因。 – 2012-03-12 07:45:06

+0

@dips,你可以标记自己的答案是正确的(点击勾号。)这可能会赚你一些徽章或其他:) – 2012-03-14 10:20:18