具有未知ItemIndex的组合框项目选择

时间:2014-10-11 20:17:25

标签: delphi

我非常熟悉Delphi。我有一个Delphi XE2程序。我在表单创建过程中创建 ComboBox1 ,如下所示:

procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Items.BeginUpdate;
  ComboBox1.Items.Clear;
  ComboBox1.Items.Add('BBBB');
  ComboBox1.Items.Add('DDDD');
  ComboBox1.Items.Add('AAAA');
  ComboBox1.Items.Add('CCCC');
  ComboBox1.Items.EndUpdate;
end;   

...以下是 ComboBox1 属性:

Sorted = True
OnChange = ComboBox1Change
OnDropDown = ComboBox1DropDown

我的要求是在选择项目时做一些工作,使用 case of ,请记住我不知道 ItemIndex < / strong> AAAA ...... DDDD 等。

所以我尝试了以下内容:

case ComboBox1.ItemIndex of ComboBox1.Items.IndexOf('AAAA'):
  begin
    //
    //
  end
end;

case ComboBox1.ItemIndex of ComboBox1.Items.IndexOf('BBBB'):
  begin
    //
    //
  end
end;

case ComboBox1.ItemIndex of ComboBox1.Items.IndexOf('CCCC'):
  begin
    //
    //
  end
end;

case ComboBox1.ItemIndex of ComboBox1.Items.IndexOf('DDDD'):
  begin
    //
    //
  end
end;

我的项目没有编译。它给出了如下错误:

[DCC Error] Unit1.pas(....): E2026 Constant expression expected 

另一个问题是:Delphi中//{}之间有什么区别?基本上,我可以使用//{}撰写任何评论来理解我的计划吗?

1 个答案:

答案 0 :(得分:6)

case仅适用于序数(整数)类型和常量表达式。请改用几个if语句。

var
  SelectedItem: string;

begin
  SelectedItem := '';
  if ComboBox1.ItemIndex <> -1 then
    SelectedItem := ComboBox1.Items[ComboBox1.ItemIndex];

  // Or you can just exit if ComboBox1.ItemIndex is -1
  // If ComboBox1.ItemIndex = -1 then
  //   Exit;
  if SelectedItem = 'AAAA' then
  begin

  end
  else if SelectedItem = 'BBBB' then
  begin

  end
  else if SelectedItem = 'CCCC' then
  begin

  end
  else if SelectedItem = 'DDDD' then
  begin

  end;
end;

{}//之间的差异而言,第一个可以包含多行注释,而第二个只是单行注释。

{ 
  This is a multiple line comment
  between curly braces.
}

// This is a single line comment. If I want to exend it
// to a second line, I need another single line comment

还有另一个多行评论指标,从旧的Pascal日开始:

(*
  This is also a multiple line comment
  in Delphi.
  {
  It is useful to surround blocks of code that
  contains other comments already.
  }
  This is still a comment here.
*)