2016-06-08 63 views
1

第二次和第三次点击按钮后我想做点什么等等。如何知道点击了多少次按钮?

+0

您是否尝试过在表单上声明属性? –

+0

no idk如何,我试过'Button2.Tag:= StrToInt(Label1.Text);'但无用@ IgnacioVazquez-Abrams – ColdZer0

+3

如果您必须滥用'Tag'属性来跟踪点击次数'Button2.Tag:= Button2.Tag + 1'会做的伎俩。 – Johan

回答

7

声明表单级变量,并在每次单击该按钮时递增它。

type 
    TForm1 = class(TForm) 
    // component/control variables 
    private 
    FClickCount: Integer; 
    end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    FClickCount := FClickCount + 1; // or Inc(FClickCount); 
end; 
-1

我知道你已经接受了答案,但是,FWIW,这是我该怎么做的。

如果按钮点击次数并不需要的OnClick()处理器之外使用,你可以保持计数器本地的处理程序,通过使用已定义的常是这样的:

procedure TForm1.Button1.click(Sender: TObject); 
{$J+} 
const 
    counter: integer = 0; 
{$J-} 
begin 
    inc(counter); 

    if (counter < 2) then exit; 
end; 

注:

1){$ J +}允许赋值给键入的常量。

2)像这样的类型常量的使用已被弃用多年(尽管它们对于像这样的东西很有用 - 保持声明和使用“变量”彼此靠近对我来说是件好事书和使用表单级别变量这似乎是错误的,因为它破坏封装)。

+2

呃。可写常量是丑陋的。当你写'const'时,它应该表示* const *,而不是*使用被声明为常量的值作为变量而不是*。可写常量与goto属于同一个类别。 *弃用多年*意味着*不告诉人们他们可以使用它们*,尤其是*不会教新开发人员使用不推荐的方式开始使用*。 –

+0

美丽(丑陋)在旁观者的眼中。我认为在这种情况下的表单变量是丑陋的。为此使用标签属性可能是一个很好的折衷方案,但在另一评论中被称为“滥用”。我的优先顺序是使用类型化常量,然后使用标签属性,然后使用表单变量。随着封装的想法高举。 –

+0

不可以。*不论用户看到它,被弃用的功能*被添加到新代码中都是丑陋的。这相当于告诉某人使用BDE和Paradox启动一个新的数据库应用程序。如果你坚持可笑的不必要的范围缩减,比你更好的解决方案是将按钮点击事件移到单元末尾,并在程序上方声明一个全局计数器;它也缩小了范围,因为它只是从它的声明开始才可见,它允许初始化,并且不会通过*写入常量*来混淆代码。 –

相关问题