Delphi7,创建下拉列表框项目

5
我希望能够使用组合框为用户提供多种选项。因此有两个组合框。第一个有大约5个选项,第二个的项目将根据用户在第一个组合框中选择的内容创建。
到目前为止,我已尝试了以下方法:Combobox2.Items.Strings[1]:='xxxx' 这导致了一个错误。
List out of Bound.

我该怎么办?


我有点惊讶你没有使用CodeInsight发现“Items”属性的“Add”方法,或者你没有尝试它。 - Andreas Rejbrand
啊哈哈,我已经发现了这种方法,当我在处理备忘录时就使用过它,从那以后我再也没有用过它们...谢谢Andreas。 - user2296565
2个回答

5

要在运行时填充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 部分,因为如果在 BeginUpdateEndUpdate 之间抛出异常并且未处理,则组合框将保持其“更新”状态并从那时起无法正常工作。

当然,在这个简单的例子中,发生异常的风险很小,但在其他情况下可能会更显著。而且代码可能会改变:您可能会添加一个 ComboBox1.Items.Add(MightRaise()) 或者一个 if MightRaise() then ComboBox1.Items.Add('Epsilon')

无论如何,您都需要代码在所有情况下都能正常工作,而不是99.9%。此外,以上模式容易被识别,至少对我来说有助于理解代码。如果总是使用相同的模式,则代码变得更容易在脑海中解析。


-2

ComboCox1 的 onSelect 事件

procedure TForm1.ComboBox1Select(Sender: TObject);

begin

ComboBox2.Text  :=  ComboBox1.Text;

end;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接