IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Masquer les composants d'une TForm


Sujet :

Composants VCL Delphi

  1. #1
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 931
    Par défaut Masquer les composants d'une TForm
    Bonjour,

    J'ai 1 petite Form que je destine à la saisie de données; je souhaite la rendre capable d’acquérir plusieurs type de données, mais 1 seul à la fois.

    A cet effet, je souhaite y déposer plusieurs composants:
    • datepicker
    • mémo
    • spinedit

    dont seul celui nécessaire à la saisie sera visible. Un paramètre est transmis à cette forme pour indiquer le type de données à acquérir et donc quel composant spécialisé doit être visible.
    Cette form dispose aussi de 2 TBitBtn pour validation ou abandon.

    Je pensais utiliser FinComponent pour cacher les composants (sauf les TBitBtn):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i:=0 to ValueEdit.ComponentCount-1 do
            if not (ValueEdit.Components(i) is TBitBtn) then ValueEdit.Components(i).?????????
    Mais TComponent ne dispose pas de méthode ou de propriété permettant de cacher 1 composant "générique".

    Il semble possible d'obtenir la classe d'un composant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValueEdit.Components(i).ToString
    mais je ne vois pas comment "variabiliser" la commande pour masquer le composant: les exemples de FindComponent pré-typent (terme incorrect sûrement) systématiquement l'instruction afin d'atteindre les propriétés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TEdit[Component].Visible:=false
    là où
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTypedeCompo[Component].Visible:=false;
    me suffirait...

    Quelqu'un a 1 idée pour y arriver? (et m'éviter une cascade de if )

    Merci.

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    tout simplement parce que les Composants ne sont pas forcément visuels contrairement aux Controls

    donc tu peux garder ta logique mais en utilisant ControlCount et Controls[]

    par ailleurs, si tu places tes controls dans un Panel, tu peux parcourir les Controls du Panel qui ne seront pas les BitBtn OK / Annuler
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 931
    Par défaut
    Merci Paul.

    Grand merci pour ton retour rapide et la concision de tes informations.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 969
    Par défaut
    cela ressemble fort à un InputQuery alternatif

    Je l'ai pour TDateTimePicker soit TSLTMessageDlg.InputDateTime, cela permet d'éviter d'avoir les DFM et tout ça, un code générique que l'on utilise comme un InputQuery
    D'ailleurs, cela fourni un paramètre pour saisir Date, Time ou Date&Time, justement en instanciant à la volée ce qui est nécessaire.


    Même avec une Form comme la tienne, au lieu de cacher les contrôles, tu peux juste créer celui qui est nécessaire.

    Et je ne vois pas où tu aurais eu des if en utilisant une énumération TDialogInputType = (ditDate, ditMemo, ditInteger) comme paramètre en entrée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    datepicker.Visible := AType = ditDate;
    mémo.Visible := AType = ditMemo;
    spinedit.Visible := AType = ditInteger;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Masquer les composants d'une div
    Par new_wave dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/02/2017, 23h06
  2. [SWT] centrer les composants dans une vue
    Par LoloBebop dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 07/06/2006, 10h34
  3. Réponses: 2
    Dernier message: 06/06/2006, 08h32
  4. Comment lister tous les composants d'une fiche ?
    Par tipiweb dans le forum Langage
    Réponses: 2
    Dernier message: 18/01/2006, 21h53
  5. Envoie d'un message a TOUS les composant d'une form
    Par chddv dans le forum Composants VCL
    Réponses: 7
    Dernier message: 15/09/2003, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo