我想使用组合框为用户提供多种选择。所以有2个组合框。第一个有大约 5 个选项,第二个项目将根据用户在第一个组合框中选择的内容创建。
到目前为止,我已经尝试过这个:Combobox2.Items.Strings[1]:='xxxx'
这出现了这个错误:
List out of Bound.
我应该怎么办?
要在运行时填充 a 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]:
这部分很重要,因为如果没有它,如果在 and 之间引发异常并且try..finally
未处理,则组合框将保持(“卡住”)处于其“更新”状态,因此从那时起将出现故障。BeginUpdate
EndUpdate
当然,在这个微不足道的例子中,异常的风险很小,但在其他情况下它可能很重要。并且代码可能会更改:您将来可能会添加 aComboBox1.Items.Add(MightRaise())
或 an if MightRaise() then ComboBox1.Items.Add('Epsilon')
。
无论如何,您希望代码在所有情况下都能 100% 工作,而不是 99.9%。此外,上述模式很容易识别,至少对我来说有助于理解代码。如果您始终使用相同的模式,则代码会更容易在心理上进行解析。
事件 onSelect ComboCox1
procedure TForm1.ComboBox1Select(Sender: TObject);
begin
ComboBox2.Text := ComboBox1.Text;
end;