2010-04-02 76 views
2

這是inno setup的代碼部分。我的意圖是在選擇一個時刻創建兩個複選框。 但是這段代碼返回錯誤。Pascal和Delphi語法錯誤?

[代碼]部分:

procedure CheckBoxOnClick(Sender: TObject); 
var 
Box2,CheckBox: TNewCheckBox; 
begin 
if CheckBox.Checked then 
    CheckBox.State := cbUnchecked; 
    Box2.State := cbChecked; 
else        //THIS LINE RETURNS AN ERROR: "Identifier Expected." 
    CheckBox.State := cbChecked; 
    Box2.State := cbUnchecked; 
end; 

procedure Box2OnClick(Sender: TObject); 
var 
Box2,CheckBox: TNewCheckBox; 
begin 
if Box2.Checked then 
    CheckBox.State := cbChecked; 
    Box2.State := cbUnchecked; 
else        //same error 
    CheckBox.State := cbUnchecked; 
    Box2.State := cbChecked; 
end; 

procedure CreateTheWizardPages; 
var 
    Page: TWizardPage; 
    Box2,CheckBox: TNewCheckBox; 
begin 
    { TButton and others } 

    Page := CreateCustomPage(wpWelcome, '', ''); 

    CheckBox := TNewCheckBox.Create(Page); 
    CheckBox.Top :=ScaleY(8)+ScaleX(50); 
    CheckBox.Width := Page.SurfaceWidth; 
    CheckBox.Height := ScaleY(17); 
    CheckBox.Caption := 'Do this'; 
    CheckBox.Checked := True; 
    CheckBox.OnClick := @CheckBoxOnClick; 
    CheckBox.Parent := Page.Surface; 

    Box2 := TNewCheckBox.Create(Page); 
    Box2.Top :=ScaleY(8)+ScaleX(70); 
    Box2.Width := Page.SurfaceWidth; 
    Box2.Height := ScaleY(17); 
    Box2.Caption := 'No,Thanks.'; 
    Box2.Checked := False; 
    Box2.OnClick := @Box2OnClick; 
    Box2.Parent := Page.Surface; 
end; 


procedure InitializeWizard(); 
//var 
begin 
    { Custom wizard pages } 
    CreateTheWizardPages; 
end; 

請告訴我在哪裏兌換..

回答

5

在帕斯卡爾thenelse一個單獨的語句或塊必須遵循。

這就是解析器如何解釋你的代碼:

  1. 如果條件爲真,行CheckBox.State := cbUnchecked;將被執行。通過該聲明,if條款已完成。
  2. 然後Box2.State := cbChecked;將始終執行。
  3. else不屬於任何當前打開的if聲明 - >語法錯誤

你在一個塊來包圍代碼,就像這樣:

procedure CheckBoxOnClick(Sender: TObject); 
var 
    Box2,CheckBox: TNewCheckBox; 
begin 
    if CheckBox.Checked then 
    BEGIN 
    CheckBox.State := cbUnchecked; 
    Box2.State := cbChecked; 
    END else        
    BEGIN 
    CheckBox.State := cbChecked; 
    Box2.State := cbUnchecked; 
    END; 
end; 
+0

我的不好,謝謝。 – 2010-04-02 06:45:11

0

非常簡單。在您的then之後添加begin ... end條款。


if CheckBox.Checked then 
BEGIN 
    CheckBox.State := cbUnchecked; 
    Box2.State := cbChecked; 
END 
else