无法获取ComboBox所选项目值

时间:2014-09-04 21:47:23

标签: lazarus

我目前正在使用此代码。我需要获取ComboBox所选项的String值:

procedure TForm5.BitBtn5Click(Sender: TObject);
var c,k,t,g: string;
begin

 //Get the name of the items
 c := ComboBox1.Items[ComboBox1.ItemIndex];
 k := ComboBox2.Items[ComboBox2.ItemIndex];
 t := ComboBox3.Items[ComboBox3.ItemIndex];
 g := ComboBox4.Items[ComboBox4.ItemIndex];

 //Show it
 ShowMessage(c);

 end;

组合框中有项目,因为您可以看到here,因为我将它们填入Form5的onCreate事件中。当我按下BitBtn5时,我有这样的错误:

enter image description here

我已经搜索了我的问题,我发现代码是一样的,但我有错误。你有什么主意吗? (我正在使用拉撒路1.2.4)

2 个答案:

答案 0 :(得分:2)

您的ComboBox项目索引中至少有一个是-1。将它们设置为表单创建时的有效索引,例如:

ComboBox1.ItemIndex := 0;

答案 1 :(得分:1)

我使用Lazarus 1.4.2。问题是从ComboBox中选择项目时,属性 ItemIndex 不会更新。 为了强制这个索引得到更新我只是在ComboBox的 OnChange 事件中放置了一些虚拟代码(即访问ItemIndex)(见下文)。然后我可以从其他地方读取ItemIndex,并且值是正确的。

procedure TForm1.ComboBoxChange(Sender: TObject);
var
  i: integer;
begin
  i := ComboBox.ItemIndex;
end;

我刚刚遇到这个问题而且我在互联网上找不到合适的解决方案。我的帖子很晚,但我希望这会有所帮助。