2010-03-27 5 views
1

Je voudrais qu'un bouton modifie une étiquette pour qu'elle soit visible et non visible lorsqu'elle est cliquée. J'ai essayé le code suivant, mais il ne fonctionne pas:Rendre un libellé visible/invisible dans 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; 

Il compile, mais ne fonctionne pas!

+0

Si Caché est VRAI quand vous entrez ce code, vous allez rendre Label6 visible, alors vous allez faire Hidden = Flase, alors vous testerez si Hidden est false (et il est, vous venez de le faire Faux), et vous allez à nouveau Label6.Visible = False et Hidden = true. –

Répondre

3

Faites ceci:

Label6.Visible := not Label6.Visible; 

C'est tout le code dont vous avez besoin.

En outre, si vous allez adresser l'étiquette dans le code, donnez-lui un nom d'identification approprié (comme lblCountOfMatches ou quelque chose). Enfin, la raison pour laquelle votre code ne fonctionne pas est que Hidden n'est jamais défini. Il sera par défaut à false lorsqu'il est déclaré. Si vous voulez utiliser le code que vous avez maintenant (ce qui est trop bavard), vous devez émettre:

Hidden := Label6.Visible 

avant d'inspecter cachés.

+0

A travaillé parfaitement, merci! – chendriksen

0

Le problème est double: vous avez déclaré une variable locale que vous essayez ensuite de comparer et vous exécutez les deux comparaisons même si la première a été traitée.

Vous pouvez aussi ne pas besoin du booléenne: vous pouvez simplement vérifier si elle est actuellement visible

Ce que vous devez faire est donc quelque chose comme ceci:

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

Ou le encore plus simple:

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

Caché est déclaré globalement, mais je l'ai juste mis ici pour montrer ce que j'utilisais. J'ai essayé votre méthode mais ça n'a pas marché! L'étiquette va du visible au caché, mais ne redevient pas visible! – chendriksen

0

J'ai eu un problème similaire. J'ai remarqué que cela a causé parce que j'ai changé l'état de visibilité du contrôle (Tedit) lorsque le formulaire n'était pas encore visible.

Cela n'a donc pas fonctionné: Form2.Edit1.Visible: = True; Form2.Visible: = Vrai; Ceci a fonctionné: Form2.Visible: = True; Form2.Edit1.Visible: = Vrai; Donc, d'abord rendre le formulaire visible, puis le contrôle.

Avant de trouver cela, j'ai essayé de nombreuses solutions, mais aucune n'a fonctionné. J'utilise Delphi 2007.

Questions connexes