WxGenericDirCtrl----->J' arrive pas arecupérer un clik droit

[Résolu]
Signaler
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
-
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
-
bonjour,

Voila, dans mon appli j' ai un wxGenericDirCtrl qui affiche l' arborescence de l' ordinateur;

j' arrive bien a récuperer l' événement EVT_TREE_ITEM_EXPANDING qui ouvre l' arbo.

Par contre, dés que je lance EVT_TREE_ITEM_ACTIVATED rien ne se passe,
EVT_TREE_ITEM_RIGHT_CLICK pareil, aucune réaction;
Erf, j' ai tenté d' utiliser le débuggueur GDB de wxDevCpp 6.8 mais la, franchement, je ne comprends pas grand chose aux logs;

A votre avis d' ou ce probleme peut-il venir????J' ai essayé ,par curiosité, de dériver une classe de wxGenericDirCtrl mais rien n' y fait, ces events ne marchent pas non plus dans une classe dérivée.

vraiment, la, je me demande....et deviens...... car je dois absolument appeller un double clik et un clik droit sur cette arborescence !!!!!!!!!!
Boon, je met quand meme le constructeur, bien que je pense que le pb n' a rien a voir avec lui :

m_dirctrl = new wxGenericDirCtrl(localSplitter, ID_DIRCTRL, wxEmptyString,
wxDefaultPosition, wxDefaultSize,
wxDIRCTRL_3D_INTERNAL|wxDIRCTRL_EDIT_LABELS|wxSUNKEN_BORDER,
_("All files (*.*)|*.*"), 0);

Vraiment je blok.......


event.Merci();
@+;
ROOT_DIEU Alias satellite34

8 réponses

Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
Bonjour,

J'ai pas trop le temps de t'expliquer, ni de regarder plus, mais regarde ma source "XPM Convert" ici ou sur mon site http://cfred.free.fr (je l'ai d'ailleurs un peu relooké) il y a une utilisation de wxGenericDirCtrl.

Logiquement si tu utilise ceci EVT_TREE_ITEM_RIGHT_CLICK(wxID_TREECTRL, maFrame::MaFonctionPourLeClickdroit) ça devrais marcher.

Cordialement

FredCL
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
Bonjour,

explication vite fait (j'aipas le temps, beaucoup de travail)
wxGenericDirCtrl est un composé de plusieurs controle dont un wxTreeCtrl dont l'ID est wxID_TREECTRL. Je t'avais conseillé de prendre les sources de wxWidgets et de regarder un peu tu aurais pu trouver en regardant un peu.

Cordialement

FredCL
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
re,

Alors la c'est vraiment mystique :

Je créé une classe Arbo dérivée de wxGenericDirCtrl, je vous la met :

class Arbo : public wxGenericDirCtrl
{
public :
Arbo(wxWindow* parent,
const wxWindowID id = -1,
const wxString& dir = wxDirDialogDefaultFolderStr,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxDIRCTRL_3D_INTERNAL|wxSUNKEN_BORDER,
const wxString& filter = wxEmptyString,
int defaultFilter = 0);
~Arbo();
private :
DECLARE_EVENT_TABLE()
protected :
void OnRightClick(wxMouseEvent &event);
};
/*
Donc comme vous le voyez j' appelle un clik droit sur cette classe :

EVT_RIGHT_DOWN(Arbo::OnRightClick)

Implémentation simplissime :

void Arbo::OnRightClick(wxMouseEvent &event)
{
wxMessageBox("yééééééééééé ca marche enfin!", "", wxOK|wxCENTRE, this);
}

erf, PKOI ca ne MARCHE PAAAAAAAAAAAAAAAAS !!!!!!!!!!!!!!!!?????????????????

Je craque, logiquement cette fonction devrait afficher une MB sur mon DirCtrl au centre !!!!!!!
Non??


event.Merci();
@+;
ROOT_DIEU Alias satellite34
Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1
Et en mettant l'event sur le parent du wxGenericDirCtrl ? Il "suffirait" de calculer à partir de la position du click ensuite
Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1
Euh sinon essais comme ca :

void Arbo::OnRightClick(wxTreeEvent &event)

{

wxMessageBox("yééééééééééé ca marche enfin!", "", wxOK|wxCENTRE, this);

}



Bon et sinon je me doutes que

EVT_RIGHT_DOWN(Arbo::OnRightClick)

est bien déclaré où il faut ..
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
yo,

Bah, tu te doutes bien qu' avant de poster sur cppFrance j' ai déja essayé tt ca! En fait , je n' arrive a recuperer aucun evenement de wxTreeCtrl dans mon wxGenericDirCtrl à part item expanded

AU SECOURS !!!!!!!!!


event.Merci();
@+;
ROOT_DIEU Alias satellite34
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
Bonjour,

tout d' abord bien pour le site, l'est plus simpa comme ca je trouve;
Je suis allé dans ta source et j' ai guétté xpmFrame.cpp et .h, et xmapp;

J' ai vu que tu appellait
EVT_TREE_SEL_CHANGED(wxID_TREECTRL, XpmFrame::OnTreeSelChanged)

T l' appelle sur l' id wxID_TREECTRL, et non sur ID_DIRECTORY;

erf, je n' ai pas trouvé l' objet lié a wxID_TREECTRL ;
Pourquoi pas ID_DIRECTORY ?????

Sinon, j' ai peut etre pas vu mais je ne capte pas de fonction Activate Item sur un wxGenericDirCtrl dans xpmConvert, si ca y est bien, merci de m' indiquer le fichier auquel faire réference.(sisi, j' ai cherché !)

Et aussi, ya un truc que je ne comprends pas : j'm'explique :

J' arrive a recup. un event sur le genericDirctrl, a savoir un clik ;
EVT_TREE_ITEM_EXPANDING ------> OK
Le truk c'est que, com'ca, pour voir , j' ai mis une MB a la fin de ma fonction et cette MB ne s' affiche pas!!!!!!regardez :
void FTPclientFrm::OnSelectItem(wxTreeEvent &event)
{
wxString path = m_dirctrl->GetPath();
m_dirctrl->ExpandPath(path);
wxMessageBox("lala", "", wxOK|wxCENTRE, m_dirctrl); //marche popo
}

par contre, ca marche; en effet, le dirctrl réagit bien et effectue un expand path MAIS PAS DE MB !!!!!!

Vraiment faut qu' on m' explique.


event.Merci();
@+;
ROOT_DIEU Alias satellite34
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
Yo,

Bien le merci fredCl, maintenant, je regarde les classes avant de les utiliser, c'est bien plus instructif que la documentation;
Erf, désolé mais je débute : tout à apprendre !!!
Mais c' est bien, enfin j' avance !


event.Merci();
@+;
ROOT_DIEU Alias satellite34