2014-02-11 63 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

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