我非常熟悉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中//
和{}
之间有什么区别?基本上,我可以使用//
和{}
撰写任何评论来理解我的计划吗?
答案 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.
*)