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 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    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 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    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