我希望能够使用组合框为用户提供多种选项。因此有两个组合框。第一个有大约5个选项,第二个的项目将根据用户在第一个组合框中选择的内容创建。
到目前为止,我已尝试了以下方法:
到目前为止,我已尝试了以下方法:
Combobox2.Items.Strings[1]:='xxxx'
这导致了一个错误。List out of Bound.
我该怎么办?
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() then ComboBox1.Items.Add('Epsilon')
。
无论如何,您都需要代码在所有情况下都能正常工作,而不是99.9%。此外,以上模式容易被识别,至少对我来说有助于理解代码。如果总是使用相同的模式,则代码变得更容易在脑海中解析。
ComboCox1 的 onSelect 事件
procedure TForm1.ComboBox1Select(Sender: TObject);
begin
ComboBox2.Text := ComboBox1.Text;
end;