2016-06-08 64 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啓動一個新的數據庫應用程序。如果你堅持可笑的不必要的範圍縮減,比你更好的解決方案是將按鈕點擊事件移到單元末尾,並在程序上方聲明一個全局計數器;它也縮小了範圍,因爲它只是從它的聲明開始纔可見,它允許初始化,並且不會通過*寫入常量*來混淆代碼。 –

相關問題