2014-10-11 179 views
0

我是Delphi的新手。我有一個Delphi XE2程序。我在FormCreation時間創建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請記住,我不知道ItemIndexOfAAAA ...... 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 //{}之間的區別?基本上,我可以通過使用//{}來爲理解我的程序寫任何評論。

回答

5

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 

也有另一種多行註釋指示器以及從舊帕斯卡天結轉:

(* 
    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. 
*) 
+0

沒有選擇項目時會有什麼'SelectedItem'的價值? – 2014-10-11 20:42:18

+0

你必須先測試一下。我也會編輯以顯示。 – 2014-10-11 20:43:55