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 :

Problème de chevauchement des forms


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 93
    Points : 46
    Points
    46
    Par défaut Problème de chevauchement des forms
    Bonjour,

    J'ai deux forms : une réservé aux mesures et l'autre réservé aux images et j'aimerais que la form sur laquelle on clic passe devant l'autre.

    Voici en image :


    Alors que ma page visualisation est sélectionné par clic, la page Edition des valeurs mesurées reste devant.

    Ci-dessous le code pour l'affichage de ma page visualisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {        TVisualisationGdeImg * tmp = new TVisualisationGdeImg(this);
            tmp->ChargerImage(Image1->Picture->Bitmap);
     
         tmp->Show();
            //tmp->ShowModal();
            //tmp->Release();
    }
    J'ai essayé avec les actions ShowModal mais la fenetre de l'image bloque l'accès au programme empechant ainsi l'acces a ma page de mesures...


    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Salut, j'ai le même problème que toi dans mon application. J'ai tenté qqchose, mais sa ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TFormMain::FormActivate(TObject *Sender)
    {
        SetWindowPos(this->Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    }
    Pour plus d'info sur SetWindowPos: http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 93
    Points : 46
    Points
    46
    Par défaut
    MERCIIII
    tu me sauves la vie !

    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
    void __fastcall TVisualisationGdeImg::FormClick(TObject *Sender)
    {
    SetWindowPos(this->Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    SetForegroundWindow(this->Handle);
     
     
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TVisualisationGdeImg::FormActivate(TObject *Sender)
    {
    SetWindowPos(this->Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
     SetForegroundWindow(this->Handle);
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TVisualisationGdeImg::FormCreate(TObject *Sender)
    {
     SetWindowPos(this->Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE);
     SetForegroundWindow(this->Handle);
    }
    Voila j'ai fait ca !
    Quand il ouvre, cela met la page dans le coin gauche : FormCreate et conserve la size. j'ai rajouté SHOWWINDOW mais je crois il sert à rien.
    Quand tu cliques dessus, il garde l'emplacement d'avant et la met au premier plan. (Je pense que juste le FormActivate est nécessaire.)


    Cela marche impecc pour moi. J'espère vraiment que pour toi cela va marché.
    Merci encore
    a +

    PS1 : Je ne le met pas en résolu, j'attend ta réponse.
    PSG : c'est les meilleurs

  4. #4
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Je suis content que sa fonctionne pour toi. C'est une des raisons pourquoi je ne n'hésite pas à mettre des bouts de code qui ne fonctionne pas Des fois sa donne des idées à quelqu'un et sa ouvre un nouvel horizon

    Dans mon cas, le code ne fonctionne pas. Je ne crée pas ma Form dynamiquement comme toi par contre. Voici mon problème:
    1. FormPrincipale est ouverte au démarrage
    2. Je clique sur un bouton dans ma FormPrincipale qui fait FormSecondaire->Show();
    3. Maintenant FormSecondaire est par dessus FormPrincipale
    4. Quand je clique sur FormPrincipale le focus vient sur celle-ci, mais elle reste en arrière plan

    Si je met ton code dans l'évènement FormActivate, FormPrincipale sera TOPMOST car au démarrage cet évènement est appelé. Donc, quand elle va ouvrir FormSecondaire, elle aussi sera TOPMOST. Car elle va se placer dans z-order de TOPMOST devant FormPrincipale.

    Le problème n'est pas si grave que ça car en général dans mon application les gens n'ont pas besoin de voir les deux fenêtres en même-temps. Donc, il n'ont qu'a fermer la FormSecondaire.

Discussions similaires

  1. Problème dans désign des formes géométriques
    Par ahmadov47 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 26/01/2015, 10h09
  2. [VI-2010] Problème de lissage des formes et textes
    Par cic31 dans le forum Visio
    Réponses: 0
    Dernier message: 12/09/2014, 10h43
  3. Problème d'administration des form services MOSS 2007
    Par hyuu! dans le forum SharePoint
    Réponses: 5
    Dernier message: 09/04/2008, 14h13
  4. Réponses: 6
    Dernier message: 27/11/2006, 06h42
  5. Réponses: 2
    Dernier message: 31/03/2006, 09h23

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