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

C++Builder Discussion :

Comment identifier l'état Front();


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut Comment identifier l'état Front();
    J'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Image1->BringToFront() ou Image2->BringToFront();
    pour basculer les deux images en superposées. Je voudrais savoir comment identifier, par programme, quelle image est devant (ou arrière)?
    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    L'ordre de superposition des contrôles dans une fenêtre (ordre Z) correspond à l'ordre (inversé ou non, je ne m'en souviens plus) des contrôles dans la propriétés Controls de la fenêtre.
    Il te suffit donc d'examiner cette propriété pour avoir la réponse à ta question.

    Un petit exemple pour mettre cela en évidence. Une fiche avec deux images. Un premier bouton qui utilise alternativement BringToFront() sur l'une ou l'autre image.
    un deuxième bouton qui affiche l'orde de superposition comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            AnsiString ordre;
     
            for (int i=0;i<ControlCount;i++)
            {
                    if (!lstrcmp(String(Controls[i]->ClassName()).c_str(),
                                            "TImage"))
                    {
                            TImage *img = (TImage *) Controls[i];
                            ordre += img->Name;
                            ordre += ";";
                    }
            }
            ShowMessage(ordre.c_str());
    Tu peux vérifier que ce bouton affiche "Image1;Image2;" si Image2 est au premier plan et "Image2;Image1;" dans le cas inverse

  3. #3
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci josse95

    J'ai fait exactement comme tu as écrit: poser deux images sur un form et ton code marche!
    Mais, si je pose les deux images dans un GroupBox, cela ne marche plus. J'ai l'impression que le Controls ne donne que l'ordre de composants directement installés sur le form.
    Merci d'avance

  4. #4
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Oui, ça marche, il suffit d'ajouter son parent TabSheet4:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    AnsiString ordre;
            for (int i=0;i<TabSheet4->ControlCount;i++)
            {
                    if (!lstrcmp(String(TabSheet4->Controls[i]->ClassName()).c_str(),
                                            "TImage"))
                    {
                            TImage *img = (TImage *) TabSheet4->Controls[i];
                            ordre += img->Name;
                            ordre += ";";
                    }
            }
            ShowMessage(ordre.c_str());

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

Discussions similaires

  1. comment identifier une transaction http?
    Par didier.cabale dans le forum Développement
    Réponses: 5
    Dernier message: 13/04/2005, 16h42
  2. [SqlException] comment identifier l'exception
    Par Jchasson dans le forum JDBC
    Réponses: 3
    Dernier message: 08/10/2004, 11h38
  3. [IDE][VS.NET] Comment sauvegarder l'état des 'Region' ?
    Par CkurcK dans le forum Contribuez
    Réponses: 2
    Dernier message: 23/02/2004, 14h33
  4. [Rave] comment faire un état paramétré ?
    Par HRAICHI dans le forum Rave
    Réponses: 2
    Dernier message: 02/10/2003, 10h14
  5. [CR][VB] comment générer un état ?
    Par ndi dans le forum SDK
    Réponses: 3
    Dernier message: 22/08/2002, 13h13

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