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 :

déplacement des Timage créées dynamiquement


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bhahmed
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Par défaut déplacement des Timage créées dynamiquement
    salut,
    j'ai créé des Timage dynamiquement dans un panel et j'aimerai les faire déplacer avec la sourie;
    j'ai réussi à faire déplacer des timage créées d'une manière statique mais j'ai pas pu réussir l'autre.
    en plus j'aimerai faire des liaison entre les images. j'ai crée un paintbox pour tracer les lignes mai je ne sai pas comment extraire les nouveaux coordonnées des Timages.
    ci- joint mon code de déplacement des images statiques :


    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
    25
    26
    27
    28
    void __fastcall TForm1::Image2MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
      MoveFlag = true;
    Movex = X;
    Movey = Y;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
     if(MoveFlag)
    {
    Image2->SetBounds( Image2->Left + X - Movex,
    Image2->Top + Y - Movey,
    Image2->Width,
    Image2->Height);
    }
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Image2MouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
     MoveFlag = false;
    }
    //---------------------------------------------------------------------------


    et voici le code de la création dynamique des Timage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Graphics::TIcon *rond1 = new Graphics::TIcon();
    rond1->LoadFromFile("D:\\Mes images\\PFE\\cpu\\PC1.ico");
     
     
    image1->Picture->Icon->Assign(rond1);
    image1->Parent = Panel1;
     
    }

  2. #2
    Membre expérimenté Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Par défaut
    Méthode bourin:
    tu déclares un tableau de TImage dans tes variables globales:
    TImage *MyImages[25]; //25 étant alors le nombre maxi d'image que tu vas créer dynamiquement... Tu peux ajuster cette valeur en fonction de tes besoins.


    En revanche attention avec ton code, cela signifie que tes variables existantes deviennent des tableaux...

  3. #3
    Membre confirmé Avatar de bhahmed
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Par défaut
    j'ai déclaré le Timage comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    image1 = new TImage(Form1);


    il faut donc juste changer cette déclarartion.
    et pour les déplacer y t'il une solution
    Merci

  4. #4
    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 !

    En fait, si j'ai bien compris ce que tu cherches à faire, tu peux gérer chaque image avec une même méthode pour chaque événement.
    Il faut pour celà, affecter ces méthodes aux Images lors de leur création.
    Voici un exemple de code pour la création dynamique et autant utiliser un TList.

    L'astuce consiste à travailler au niveau du Sender qui est un pointeur sur l'objet qui a sollicité la méthode.
    Voici tes méthodes et la modification qu'il faut y apporter :

    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
    25
    26
    27
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Image2MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    //...inchangé
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    if(MoveFlag)
        {
        TImage *Image = (TImage*)Sender; // << le sender est notre image
        Image->SetBounds(Image->Left + X - Movex, 
                         Image->Top + Y - Movey, 
                         Image->Width,
                         Image->Height);
        }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Image2MouseUp(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
    {
    //...inchangé
    }
    //---------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TList *Images = new TList;
    Le code pour la création des images :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TImage *Image = new TImage(this); //this (Form1) ou Panel1 au choix...
    Image->Parent = Panel1;
    //Affectation des méthodes
    Image->OnMouseDown = Image2MouseDown;
    Image->OnMouseMove = Image2MouseMove;
    Image->OnMouseUp   = Image2MouseUp;
    //... le reste de l'initialisation...
    Images->Add(Image);
    Il ne faudra pas oublier de libérer la liste, dans la OnClose de Form1, sans
    pour autant détruire les images puisque c'est leur propriétaire (Form1 ou le panel)
    qui s'en chargera :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Images->Clear();
    delete Images;
    pour accéder aux images depuis la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TImage *Image;
    for(int j = 0; j < Images->Count; j++)
        {
        Image = (TImage*)Images->Items[j];
        //... s'il y a quelque chose à faire sur l'image....
        }
    A plus !

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    La méthode d'henderson est celle que j'ai utilisé (en delphi) pour faire exactement la même chose que toi bhahmed, et ca fonctionne très bien !
    Par contre, moi je n'ai pas créé de TList... je ne vois pas trop à quoi ca sert en faite ...

    Voilà
    @ +

  6. #6
    Membre confirmé Avatar de bhahmed
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Par défaut
    ero-sennin qu'est ce que tu as fais alors ?

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

Discussions similaires

  1. Détruire des CheckBox créées dynamiquement
    Par Chayanne47 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 15/04/2008, 15h40
  2. supprimer des labels crées dynamiquement
    Par patbou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/10/2007, 13h53
  3. Action sur des boutons crées dynamiquement
    Par barthelus76 dans le forum SWT/JFace
    Réponses: 13
    Dernier message: 28/06/2007, 20h32
  4. suppression des images créées dynamiquement
    Par bhahmed dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/09/2006, 21h37
  5. effacer des composants crée dynamiquement
    Par forzaxelah dans le forum Delphi
    Réponses: 7
    Dernier message: 29/06/2006, 14h14

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