2010-03-27 86 views
1

我希望有一個按鈕可以在點擊時將標籤變爲可見和不可見。我試過下面的代碼,但它不起作用:使標籤在Delphi中可見/不可見

Var: 
    Hidden : Boolean; 
Begin 
    If Hidden = True 
    Then 
     Begin 
     Label6.Visible := True; 
     Hidden := False; 
     End; 
    If Hidden = False 
    Then 
     Begin 
     Label6.Visible := False; 
     Hidden := True; 
     End; 

它編譯,但不行!

+0

如果在輸入代碼時Hidden爲TRUE,那麼您將使Label6可見,然後您將使Hidden = Flase,然後您將測試Hidden是否爲假(並且,你只是假它),然後你會再次使Label6.Visible = False和Hidden = true。 – 2010-04-02 10:10:45

回答

3

這樣做:

Label6.Visible := not Label6.Visible; 

這就是你需要的代碼。

另外,如果你打算要解決的標籤代碼,請給它一個適當的識別名稱(如lblCountOfMatches或東西)。

最後,你的代碼不工作的原因是Hidden從不設置。聲明時它將默認爲false。如果你想使用你現在使用的代碼(這是太冗長),你必須發出:

Hidden := Label6.Visible 

檢查前隱藏。

+0

工作完美,謝謝! – chendriksen 2010-03-27 19:06:44

0

的問題是雙重的:你聲明的局部變量,你再嘗試比較,你執行,即使第一個被處理的兩個比較。

你也不需要布爾:你可以檢查它是否是當前可見

什麼,你應該做的,因此是這樣的:

begin 
    if Label6.Visible then 
    Label6.Visible := False 
    else 
    Label6.Visible := True; 
end; 

還是更簡單:

begin 
    Label6.Visible := not Label6.Visible; 
end; 
+0

隱藏是全局聲明的,但我只是把它放在這裏來顯示我正在使用。我試過你的方法,但沒有奏效!標籤從可見到隱藏,但不再可見! – chendriksen 2010-03-27 19:02:32

0

我有類似的問題。 我注意到這是因爲我改變了控件的可見性狀態(Tedit),當窗體不可見時。

所以這並沒有工作: Form2.Edit1.Visible:= TRUE; Form2.Visible:= True;

這工作: Form2.Visible:= TRUE; Form2.Edit1.Visible:= True;

所以首先讓窗體可見,然後控制。

在發現之前,我嘗試了很多解決方案,但都沒有成功。 我正在使用Delphi 2007.