我想使用combobox为用户提供各种选项.所以有2个组合框.第一个有大约5个选项,第二个项目将根据用户在第一个组合框中选择的内容创建.
到目前为止,我已经尝试过这个:Combobox2.Items.Strings[1]:='xxxx'这出现了我的错误:
List out of Bound.
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
要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;
Run Code Online (Sandbox Code Playgroud)
您还可以为其指定预制件TStringList:
ComboBox1.Items.Assign(MyStringList);
Run Code Online (Sandbox Code Playgroud)
[1]:
该try..finally部分很重要,因为如果没有它,如果异常被引发并且未在BeginUpdate和之间处理EndUpdate,则组合框将保持("卡住")处于其"更新"状态,因此将从该点开始出现故障.
当然,在这个简单的例子中,异常的风险很小,但在其他情况下,它可能很重要.代码可能会改变:您可能会在将来添加一个ComboBox1.Items.Add(MightRaise())或一个if MightRaise() then ComboBox1.Items.Add('Epsilon').
无论如何,您希望代码在所有情况下都有效,而不是99.9%.此外,上述模式很容易识别,至少对我来说有助于理解代码.如果您始终使用相同的模式,则代码将更容易在心理上进行解析.