我想使用comboBox为用户提供各种选项.所以有2个组合框.第一个有大约5个选项,第二个项目将根据用户在第一个组合框中选择的内容创建.
到目前为止,我已经尝试过这个:ComboBox2.Items.Strings [1]:=’xxxx’,这出现了我的错误:
List out of Bound.
我该怎么办?
解决方法
要在运行时填充TComboBox,您可以这样做[1]:
ComboBox1.Items.BeginUpdate; try ComboBox1.Items.Clear; ComboBox1.Items.Add('Alpha'); ComboBox1.Items.Add('Beta'); ComboBox1.Items.Add('Gamma'); ComboBox1.Items.Add('Delta'); finally ComboBox1.Items.EndUpdate; end;
您还可以为其分配预制的TStringList:
ComboBox1.Items.Assign(MyStringList);
[1]:
try..finally部分很重要,因为如果没有它,如果引发异常并且在BeginUpdate和EndUpdate之间没有处理,则组合框将保持(“卡住”)处于“更新”状态,因此将从该点发生故障上.
当然,在这个简单的例子中,异常的风险很小,但在其他情况下,它可能很重要.代码可能会改变:您可能会在将来添加ComboBox1.Items.Add(MightRaise())或if MightRaise(),然后添加ComboBox1.Items.Add(‘Epsilon’).
无论如何,您希望代码在所有情况下都有效,而不是99.9%.此外,上述模式很容易识别,至少对我来说有助于理解代码.如果您始终使用相同的模式,则代码将更容易在心理上进行解析.