2014-02-11 87 views
-1

我的教科書說我需要製作一個程序/遊戲,只要將指針移動到按鈕上,該按鈕就會移到窗體上的隨機位置。 然後,我需要一個標籤,顯示我嘗試點擊按鈕的次數。 下面的代碼:德爾福,需要幫助「使計算機計數」

procedure TForm1.FormActivate(Sender: TObject); 
var 
    iCount : Integer; 
begin 
randomize; 
iCount := iCount + 1; //my textbook explains barely anything to me! 
end; 


procedure TForm1.btnClickMeMouseMove(Sender: TObject; Shift: TShiftState; 
    X, Y: Integer); 
begin 
labelOutput.caption := IntToStr (iCount); 
btnClickMe.Top := Random (Form1.ClientHeight - 5 - btnClickMe.Height); 
btnClickMe.Left := Random (Form1.ClientWidth - 5 - btnClickMe.width); 
end; 


end. 

如果我說labelOutput.caption := IntToStr (iCount);,它給了我一個錯誤說Value assigned to 'iCount' never used 我還需要知道如何做到這一點之前,我進行其他練習。
謝謝..

+0

請問你的代碼現在已經編譯?如果它做什麼不起作用? 你的變量iCount應該在接口中定義,在private說:'iCount:integer'。你現在擁有它的方式iCount現在可能沒有在'btnClickMeMouseMove'方法中聲明。 – Sentient

+2

首先,'iCount'需要更加全球化。其次,它應該在'MouseMove'中增加,而不是在表單被激活時增加。 –

+0

你需要一個持久的變量。局部變量的存在時間與聲明它們的函數一樣長。你需要一個你的表單類型的字段來保存計數器。 –

回答

1

當別人告訴你,你需要聲明的變量在表格的界面(如果你沒有的話),但更重要的是,你需要增加它在按鈕的OnMouseMove事件,而不是在形式的OnActivate事件(您應該使用OnCreate事件代替)。

試試這個:

type 
    TForm1 = class(TForm) 
    labelOutput: TLabel; 
    btnClickMe: TButton; 
    procedure FormCreate(Sender: TObject); 
    procedure btnClickMeMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); 
    private 
    iCount : Integer; 
    end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    Randomize; 
end; 

procedure TForm1.btnClickMeMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); 
begin 
    iCount := iCount + 1; 
    labelOutput.Caption := IntToStr (iCount); 
    btnClickMe.Left := Random (ClientWidth - btnClickMe.Width); 
    btnClickMe.Top := Random (ClientHeight - btnClickMe.Height); 
end; 
+0

哈哈謝謝雷米!非常感激! –