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 :

Connaitre la form activé


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par défaut Connaitre la form activé
    Bonjours, je developpe un application, qui contien plusieur form.
    Je voudrais savoir si il y a une fonction qui existe qui retourne le nom de la form qui est affiché a l'ecran.

    Je m'explique je voudrais faire clignoter un composant quand il y a un défaut, pour ce faire je pense metre une petite image surchaque form sur laquelle je change la propriété visible toute les 500 ms.
    Le composant qui clignoteras s'apeleras pareil sur chaque form

    un truc de ce genre la je ne sais pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      TForm *Form;
        Form = GetFormActivate();
        Form->ImageCligno->Visible = true;
    Je sais pas si je me suis bien exprimé lol

    Cordialement Baxter

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Dans un contexte MDI, la form enfant active est donnée par ActiveMDIChild.
    Toutes les form enfant sont mises en liste dans MDIChildren (MDIChildCount étant le nombre de fenêtres enfant dans la liste).
    Ces trois propriétés sont gérées par la fenêtre principale (Style = fsMDIForm).

    A plus !

  3. #3
    Membre éclairé Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par défaut
    depuis que jai touché cette propriété je n'accede a plus aucune form, il me dis que le pointeur Form6-> est NULL

    quesqui ce passe ?

  4. #4
    Membre éclairé Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par défaut
    jai limpression qu'il lance tous mon programme avant d'avoir fais tous sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
            try
            {
                     Application->Initialize();
                     Application->CreateForm(__classid(TForm1), &Form1);
                     Application->CreateForm(__classid(TForm2), &Form2);
                     Application->CreateForm(__classid(TForm3), &Form3);
                     Application->CreateForm(__classid(TForm5), &Form5);
                     Application->CreateForm(__classid(TFormStatCom), &FormStatCom);
                     Application->CreateForm(__classid(TForm6), &Form6);
                     Application->CreateForm(__classid(TForm7), &Form7);
                     Application->CreateForm(__classid(TForm8), &Form8);
                     Application->CreateForm(__classid(TForm9), &Form9);
                     Application->CreateForm(__classid(TForm4), &Form4);
                     Application->CreateForm(__classid(TForm11), &Form11);
                     Application->CreateForm(__classid(TForm13), &Form13);
                     Application->CreateForm(__classid(TForm12), &Form12);
                     Application->CreateForm(__classid(TForm14), &Form14);
                     Application->CreateForm(__classid(TFormImpre), &FormImpre);
                     Application->CreateForm(__classid(TForm10), &Form10);
                     Application->CreateForm(__classid(TForm15), &Form15);
                     Application->CreateForm(__classid(TForm16), &Form16);
                     Application->Run();
            }
    jai eseyé du pas a pas et juste apres la premiere ligne il lance le onshow de la form1 et la dedans je fais appele a des objet d'autre form.
    Avant sa fonctionnais pourtant grrr
    Jai remis la propriété formStyle comme avant mais c toujours pareil

  5. #5
    Membre éclairé Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par défaut
    voila une capture :



    Je galére, je sais pas pourquoi sa me fais sa grrrr

    Ensuite je ne peut pas utiliser un pointeur vers la form parce que si je fais sa, sa marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Form6->Images1->Visible = true;
    Mais si je fais sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TForm *Form;
       Form = Form6;
       Form->Images1->Visible = true;
    Il dis Images1 n'est pas une propriété de TForm

    Mais le principale probléme actuelle vien du fait que apperement les autre form ne se construise plus

    Aidez moi s'il vous plait

    Cordialement Baxter

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Si on travaille dans un contexte MDI, la form principale est une fsMDIForm.
    Toutes les fénêtres enfant sont des fsMDIChild (celles qui se dessinent dans la zone client de la form principale).

    Par contre, on peut rajouter des fsStayOnTop qui vont se dessiner par dessus la form principale.
    Dans ce cas précis, on peut éventuellement utiliser un pointeur que l'on initialise à chaque OnActivate si on a plusieurs fenêtres qui vont dans ce sens.
    Ca reste vrai dans un contexte plus général... pour des fiches normales.

    TForm est la classe de base qui ne peut qu'ignorer ce à quoi ressemble une classe dérivée (TForm6 par exemple).

    Si on travaille dans le contexte MDI, la séquence est la suivante (on a besoin de transtyper de la classe de base TForm sur la class dérivée):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(ActiveMDIChild != NULL)
        {
        if(ActiveMDIChild->ClassNameIs("TForm6"))
            {
            TForm6 * Form = (TForm6*)ActiveMDIChild;
            //.....
            return;
            }
        //On fait pareil pour les autres fenêtres, chacune ayant sa propre classe
     
        }
    Le code exact dépend d'où l'on teste : ActiveMDIChild ou Form1->ActiveMDIChild...


    On peut donc adapter ce code à un poiteur.
    Le code exacte, dépend de la manière dont on déclare le pointeur (global ou propriété de la form principale)
    En global ça donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TForm *FenetreActive; //En global dans unit1 de Form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    extern TForm *FenetreActive; // dans les autres fenêtres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TForm6::OnActivate(TObject *Sender)
    {
    FenetreActive = this;
    }
    Donc depuis n'importe quelle autre fenêtre (qui aurait pris la main sans avoir le focus):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(FenetreActive != NULL)
        {
        if(FenetreActive->ClassNameIs("TForm6"))
        ...
        }
    ...
    Je ne sais pas quoi rajouter de plus... ???

    Salut !

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

Discussions similaires

  1. [C# 2.0] Comment connaitre la Form active ?
    Par 5:35pm dans le forum Windows Mobile
    Réponses: 4
    Dernier message: 10/08/2006, 22h57
  2. [VB6] Form Activate
    Par jerzy59 dans le forum VB 6 et antérieur
    Réponses: 53
    Dernier message: 19/05/2006, 15h18
  3. [C#] Cacher une Form active
    Par ArHacKnIdE dans le forum Windows Forms
    Réponses: 10
    Dernier message: 22/03/2006, 16h35
  4. [C#] liste des form actives
    Par chnew dans le forum C#
    Réponses: 5
    Dernier message: 02/01/2006, 13h04
  5. Comment connaitre la fenêtre active ?
    Par bazinou dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 29/09/2005, 14h26

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