wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 2

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Déplacer un bouton
Conversation (Résolue) : Déplacer un bouton
09-06-2010 08:52:10  Déplacer un bouton #1
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour,

Je voudrais savoir s'il est possible de déplacer un wxbutton ?
Si oui tant mieux, sinon ? le détruire et le créer à sa nouvelle position ?

Merci d'avance.

Yann
09-06-2010 09:09:45  Re: Déplacer un bouton #2
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,
je comprend pas bien le sens de ta question. Tu utilises des sizers mais le bouton n'est pas à la position désirée ?
Sem
09-06-2010 09:22:37  Re: Déplacer un bouton #3
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
En fait j'ai un wxScrolledWindow dans lequel j'ai une ligne de dessinée. A gauche de cette ligne à la même hauteur j'ai un wxbutton. Lorsque je clique sur le bouton je veux que la ligne monte ainsi que le bouton. D'où ma question : comment déplacer un wxbutton ...

Je ne sais pas si cela est bien clair ...
Merci pour ta réponse.

Yann
09-06-2010 09:33:00  Re: Déplacer un bouton #4
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,
si tu places ton bouton directement dans la fenêtre, il se déplacera tout seul.
Par exemple :

Code wxWidgets:

partition::partition(wxWindow *parent)
: wxScrolledWindow(parent, wxID_ANY, wxDefaultPosition, wxSize(800,600))
{
   new wxButton(this, wxID_ANY, wxS("Clique moi!"), wxPoint(200,200)); // Position absolue
}
 
 


Si tu souhaites bouger à la main, wxWindow possède une méthode Move.
Sem

Dernière modification par Sem (09-06-2010 09:36:53)

09-06-2010 09:33:17  Re: Déplacer un bouton #5
Warzer (Membre)
Inscrit le : 05-10-2007
Messages: 284
Snippets: 4
Tutoriels: 0
Hors ligne
Salut,

Tu peux utiliser SetSize qui te permet de modifier la position de ton bouton et tu remet les valeurs par défaut en largeur et hauteur pour ton bouton pour ne pas en modifier la taille.

En espérant que ca puisse t'aider.
A plus.

Dernière modification par Warzer (09-06-2010 09:33:41)

09-06-2010 10:15:30  Re: Déplacer un bouton #6
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Merci pour vos réponses :
j'ai un problème d'écriture pour atteindre la méthode move de wxWindow :

j'écris : button->wxWindow.Move (...) et naturellement ca ne marche pas ..
09-06-2010 10:43:06  Re: Déplacer un bouton #7
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
yannp:
Merci pour vos réponses :
j'ai un problème d'écriture pour atteindre la méthode move de wxWindow :

j'écris : button->wxWindow.Move (...) et naturellement ca ne marche pas ..
bonjour,
le wxButton hérite de wxControl qui hérite lui même de wxWindow et la méthode Move est public, donc tu peux directement faire:
button->Move(...);

Sem
09-06-2010 15:17:07  Re: Déplacer un bouton #8
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Ok merci. J'ai fais un essai "classique", cela fonctionne. Cependant j'ai un autre problème :

J'ai une classe qui crée des boutons. La voici :

boutonPortee.h

Code:

 
#include <wx/wx.h>
 
class boutonPortee : public wxScrolledWindow
{
    public :
        boutonPortee (wxScrolledWindow *parent, wxPoint pos, int zoom);
        ~boutonPortee ();
 
        int  getPosY();
        void onClickUP(wxCommandEvent& event);
        void onClickBOTTOM(wxCommandEvent& event);
 
        wxButton *btnUp, *btnBottom, *btnSon, *btnMultiPortee;
        int posY;
 
    private :
        DECLARE_EVENT_TABLE()
};
 

Je declare dans le cpp :

Code:

 
BEGIN_EVENT_TABLE(boutonPortee, wxScrolledWindow)
    EVT_BUTTON(BOUTON_PORTEE_UP,  boutonPortee::onClickUP)
    EVT_BUTTON(BOUTON_PORTEE_BOTTOM,  boutonPortee::onClickBOTTOM)
END_EVENT_TABLE()
 

J'utilise cette classe dans une autre classe :

Code:

 
class partition : public wxScrolledWindow
{
    public:
        partition(  wxWindow *parent,
                    wxWindowID winid = wxID_ANY,
                    const wxPoint& pos = wxDefaultPosition,
                    const wxSize& size = wxDefaultSize,
                    long style = wxScrolledWindowStyle,
                    const wxString& name = wxPanelNameStr);
        void OnDraw( wxDC &dc );
        void OnMouseEvent(wxMouseEvent& event);
 
        boutonPortee *portee;
 
    private :
        DECLARE_EVENT_TABLE()
};
 

A l'exécution le bouton se crée normalement, mais lorsque je clique sur le bouton rien ne se passe.
Si je déplace la déclaration BEGIN_EVENT_TABLE(boutonPortee, wxScrolledWindow)
dans la classe qui fait appel à la classe boutonPortée, l'évènement est bien pris en compte, mais cela plante ... Aurais-tu une idée ?

Merci d'avance
Yann

Dernière modification par yannp (09-06-2010 15:18:05)

09-06-2010 16:34:56  Re: Déplacer un bouton #9
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,
tu peux nous indiquer l'implémentation de :

Code wxWidgets:

 
void onClickUP(wxCommandEvent& event);
void onClickBOTTOM(wxCommandEvent& event);


merci,
Sem
09-06-2010 17:05:01  Re: Déplacer un bouton #10
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,

voici

Code:

 
void boutonPortee::onClickBOTTOM(wxCommandEvent& event)
{
    posY+=10;
    //wxMessageBox  (_T("onClickBOTTOM"), _T("message"), wxOK, this, 200, 200);
    btnBottom->Move(0, posY, wxSIZE_USE_EXISTING);
}
 
void boutonPortee::onClickUP(wxCommandEvent& event)
{
    posY-=10;
    btnBottom->Move(0, posY, wxSIZE_USE_EXISTING);
}
 

J'ai l'impression qu'il n'appelle pas ces fonctions, d'autant plus qu'il n'affiche pas le message.
Si je crée un bouton dans la classe partition et que je mets la déclaration de l'évènement dans BEGIN_EVENT_TABLE(boutonPortee, wxScrolledWindow), cela fonctionne. Le probleme apparait lorsque j'ai délocalisé la création des butons dans la classe boutonPortee. (Je ne sais pas si je suis clair)

merci
Yann

Dernière modification par yannp (09-06-2010 17:24:28)

09-06-2010 17:39:38  Re: Déplacer un bouton #11
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,
je comprend pas bien ce qu'est boutonPortee en fait,
si on résume bien tu as une fenêtre "scrollable" dedans tu as de nouveau une fenêtre scrollable qui elle même contient des boutons:

Code:

 ------------------------------------
|     partition                    |^|
|                                  | |
|    -----------------             | |
|   | boutonportee  |^|            | |
|   |               | |            | |
|   |   <Haut>      | |            |-|
|   |   <Bas>       | |            |-|
|   |               |v|            | |
|    -----------------             | |
|                                  | |
|                                  |v|
------------------------------------



Quelque chose comme ca ?
Sem
09-06-2010 17:51:07  Re: Déplacer un bouton #12
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
L'idée est que boutonPortee ne s'occupe que d'afficher et gérer les boutons. Je l'ai fait héritée de wxWindowScrolled pour gérer les évenements des boutons (a mon avis pas bon) ...
Les boutons ont pour parent wxWindowScrolled de partition ...

Yann
09-06-2010 18:29:30  Re: Déplacer un bouton #13
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,
c'est donc la le problème, il faut que tes boutons héritent de boutonPorter. Tu as une explication ( en anglais par contre ) assez bien faite du système des évènements ici .

Donc dans ton exemple :

Code wxWidgets:

 
BEGIN_EVENT_TABLE(boutonPortee, wxScrolledWindow)
    EVT_BUTTON(BOUTON_PORTEE_UP,  boutonPortee::onClickUP)
    EVT_BUTTON(BOUTON_PORTEE_BOTTOM,  boutonPortee::onClickBOTTOM)
END_EVENT_TABLE()


la table de ces 2 évenements se rapporte à boutonPortee et pour les boutons d'identifiant BOUTON_PORTEE_UP et BOUTON_PORTEE_BOTTOM.
Donc il te faut dans le constructeur de boutonPortee il te faut quelque chose comme :

Code wxWidgets:

boutonPortee::boutonPortee(wxScrolledWindow *parent, wxPoint pos, int zoom):
wxScrolledWindow(parent, wxID_ANY, pos, wxDefaultSize)
{
...
   btnUp     = new wxButton(this, BOUTON_PORTEE_UP, wxS("Haut"), wxPoint(200,200));
   btnBottom = new wxButton(this, BOUTON_PORTEE_BOTTOM, wxS("Bas"), wxPoint(200,200));
...
}


Cela dit, l'utilisation du wxScrolledWindow est peut-être pas nécessaire dans ton cas,

Sem

Dernière modification par Sem (09-06-2010 18:30:14)

10-06-2010 09:14:22  Re: Déplacer un bouton #14
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour,

J'ai essayé ... ça marche.. En fait les 2 boutons s'affichent sur un petit carré blanc qui doit être le wxScrolledWindow. Je peux surement le retailler sinon lorsque tu me dis que l'utilisation du wxScrolledWindow est pas nécessaire, comment faire pour déclarer la table des évènements ?
BEGIN_EVENT_TABLE(boutonPortee, wxScrolledWindow )

Qu'est-ce que je mets à la place de wxScrolledWindow ? (Cette solution parait plus "clean")

Merci d'avance.

Dernière modification par yannp (10-06-2010 09:37:23)

10-06-2010 09:52:59  Re: Déplacer un bouton #15
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,
pour décaller tes boutons y a toujours l'utilisation des sizers. Tu crées à ce moment la tes boutons directements dans partition, tu fais un sizer qui va bien selon tes besoins, et la position sera géré automatiquement: regarde les exemples du lien ( tu peux utiliser le paramètre de border sur un simple wxBoxSizer, ou ajouter un sépérateur avec m_Sizer->Add(100,100) ou utiliser un wxGridSizer, etc... ).
Sem

Dernière modification par Sem (10-06-2010 09:53:35)

10-06-2010 13:51:05  Re: Déplacer un bouton #16
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
ok merci pour tout ...
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Déplacer un bouton