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 :

Rendre une fenetre magnétique par rapport à une autre


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 12
    Points
    12
    Par défaut Rendre une fenetre magnétique par rapport à une autre
    Bonjour,

    Je suis en train de créer une petite application avec C++ Builder 6. Comme vous pouvez surement vous en douter j'ai plusieurs fenetre (From) dont une principale et d'autres secondaires.

    Je désirerais déplacer mes fenetres secondaires en meme temps que je déplace ma fenetre principale (effectuer le meme déplacement) . Le résultat final serait par exemple une petite punaise en haut à gauche de ma fenetre qui me servirait a fixer les fenetre secondaire sur les principale.

    Quelqu'un aurait déjà programmé ce genre de déplacement? Et pourrait peut etre me mettre sur une bonne piste?

    Un tout grand merci d'avance.

    Léo

  2. #2
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Vous pouvez procéder ainsi.

    Dans la classe principale, vous déclarez quatre variables, les anciennes coordonnées et les nouvelles

    Dans le constructeur de la classe principale, vous initialisez ces coordonneés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    __fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
    {
    Ax=Left;
    Ay=Top;
    }
    À chaque déplacement de la fenêtre principale, vous appliquez la différence sur les autres fenêtres, ici Form2. Pour plusieurs fenêtres, il faut appliquer le même différentiel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void __fastcall TForm1::FormCanResize(TObject *Sender, int &NewWidth,
          int &NewHeight, bool &Resize)
    {
    int Dx,Dy;
     
    Nx=Left;
    Ny=Top;
    Dx=Nx-Ax;
    Dy=Ny-Ay;
    Form2->Left+=Dx;
    Form2->Top+=Dy;
    Ax=Nx;
    Ay=Ny;
    }
    À bientôt
    Gilles

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Un tout grand merci, c'est exactement ce que je voulais !!!!

    Mille merci!!!!

    Léo

  4. #4
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    J'ai décomposé pour vous faire comprendre le mécanisme mais on peut supprimer la variable intermédiaire qui ne sert à rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TForm1::FormCanResize(TObject *Sender, int &NewWidth,
          int &NewHeight, bool &Resize)
    {
    Nx=Left;
    Ny=Top;
    Form2->Left+=Nx-Ax;
    Form2->Top+=Ny-Ay;
    Ax=Nx;
    Ay=Ny;
    }
    À bientôt
    Gilles

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/11/2014, 21h29
  2. Direction d'une coordonnée GPS par rapport à une autre ?
    Par amzioujda dans le forum Mathématiques
    Réponses: 3
    Dernier message: 04/06/2014, 16h19
  3. Mise à jour d'une nouvelle table par rapport à deux autres existantes
    Par drake56 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/07/2011, 17h13
  4. Réponses: 1
    Dernier message: 22/04/2008, 20h35
  5. Réponses: 5
    Dernier message: 21/10/2007, 13h33

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