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

wxWidgets Discussion :

Récupérer une valeur à partir de la souris dans un ListCtrl


Sujet :

wxWidgets

  1. #21
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    C'est de nouveau moi

    Voilà, je sèche sur un problème de test de démarrage.
    Je souhaiterais appeler une fenêtre de dialog directement dans mon wxApp, pour que l'utilisateur se connecte et s'il échoue, la fenêtre principale ne s'affichera pas. A priori je ne peux pas appeler ma boite de dialogue pour le login a partir de mon wxApp dans ma fonction OnInit, donc je ne vois pas trop comment lui faire passer le test.

  2. #22
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Salut.

    Citation Envoyé par MarcusDom Voir le message
    A priori je ne peux pas appeler ma boite de dialogue pour le login a partir de mon wxApp dans ma fonction OnInit
    Pourquoi ? Je viens de faire le test avec wx2.8 et wx2.9, et ça marche sans problème.
    • Tu crées une classe dérivée de wxDialog
    • Dans le OnInit, tu en crées une instance et tu l'affiche avec ShowModal
    • Suivant le résultat de ShowModal, tu continues ou non (return false depuis le OnInit)


    @+
    Xav'

  3. #23
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Lorsque je créé une instance il m'affiche :

    erreur : no matching function for call to 'login::login(LysisTimerApp* const).

    Voilà mon appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    login *boiteLogin = new login(this);
    J'ai bien inclu mon fichier .h de la classe login dans le cpp du App et comme argument il prend la fenêtre parent, ca doit être là qu'est le problème, mais je ne comprend pas.

    Fichier login.cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    login::login(wxWindow *ParentWindow)
      :wxDialog(ParentWindow, wxID_ANY, _("Fenêtre de connexion"))
    {
      createControls();
    }

  4. #24
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    C'est normal : comme tu n'as pas encore créé de fenêtre, ta boite de dialogue ne peut pas avoir de parent.

    De plus, tu utilises new/delete alors que c'est inutile ici.
    Je ferais plutôt quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // Variable "normale", et non pointeur
    // Ainsi, pas besoin de se soucier de sa destruction...
    login boiteLogin(NULL);
    ......
    if (boiteLogin.ShowModal()==wxID_CANCEL) return false;
    ......
    Si tu tiens vraiment à utiliser new/delete, il faut que tu remplaces "this" par "NULL".

    @+
    Xav'

  5. #25
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Merci Xav, j'avais pas saisi cette information, c'est bon

    Au fait si c'est toi "Xaviou" qui à fait les tutos sur les wxwidgets, je te tire mon chapeau, ca m'a bien aidé

    Une question subsidiaire :

    Lors du redimensionnement de ma Frame, j'ai un sizer qui a un comportement "normal" lors du redimensionnement vertical, mais lorsque je le fait horizontalement, mes objets ( static text, textctrl et barre d'icones, restent à la même taille et "sortent" de leur staticboxsizer.
    Ca pourrait être dû à quoi ?
    Merci encore

  6. #26
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Citation Envoyé par MarcusDom Voir le message
    Au fait si c'est toi "Xaviou" qui à fait les tutos sur les wxwidgets, je te tire mon chapeau, ca m'a bien aidé
    Oui, c'est bien moi. Merci pour le compliment...

    Citation Envoyé par MarcusDom Voir le message
    Lors du redimensionnement de ma Frame, j'ai un sizer qui a un comportement "normal" lors du redimensionnement vertical, mais lorsque je le fait horizontalement, mes objets ( static text, textctrl et barre d'icones, restent à la même taille et "sortent" de leur staticboxsizer.
    Ca pourrait être dû à quoi ?
    Cela est dû à plusieurs choses.
    Tout d'abord, il y a les paramètres "proportion" et "flag" utilisés lors de l'ajout du contrôle au sizer.
    Certaines valeurs (ou combinaisons de valeurs) de ces paramètres indiquent clairement au sizer de ne ma redimensionner le contrôle.
    Mais même dans le cas où ces paramètres sont corrects, il y a encore à prendre en compte la taille minimale de chaque contrôle.
    Par exemple, si tu crées un wxPanel en lui donnant une taille fixe, et qu'ensuite tu l'ajoutes à un sizer avec des paramètres permettant son redimensionnement, la taille que tu lui a donné lors de sa construction devient sa taille minimale, et il ne descendra pas en dessous, même si le contrôle parent est plus petit.
    Il y a un truc intéressant à utiliser, c'est wxSizer::SetSizeHints, qui permet de calculer la taille minimale que peut prendre le sizer et de ce fait, interdire que la fenêtre devienne trop petite.

    Je ne sais pas si j'ai été assez clair dans mes explications : si ce n'est pas le cas, n'hésite pas à demander.

    @+
    Xav'

  7. #27
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Ca va je m'y retrouve

    Evidemment j'ai défini une taille minimale, mais trop basse, je vais revoir ca à la hausse.

    J'ai encore d'autre soucis (oui, j'en ai plein...), j'ai fait un test pour vérifier si le nom et le mot de passe correspondaient à une certaine lettre, car pour la comparaison avec un caractère ca marchait, mais pas avec un wxString. Par la suite je vais devoir comparer des valeurs dans une base de données avec SQlite, donc il faudrait bien que je change mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    boiteLogin->m_champLogin->GetValue().IsSameAs('t') && boiteLogin->m_champMDP->GetValue().IsSameAs('t'))
    Je n'ai pas trouvé la méthode pour comparer des wxString, IsSameAs marche avec un caractère...

    EDIT : si, c'est bon, je devais pas encore être réveillé...

  8. #28
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'ai dans mon programme, pas mal de variables dont j'aimerai changer les valeurs dans différentes classes. En fait, est ce que je peux déclarer ces variables comme étant global dans mes classes, ou dois-je créer une classe spécifique ( où j'inclu toutes mes variables globales ). Je souhaiterai aussi que ces valeurs ne soit pas perdu après chaque redémarrage, je pense que je devrai passer par une base de données, mais s'il est possible de faire sans, je suis preneur

  9. #29
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Aurais-tu en stock un bon exemple d'utilisation de la base de données sqlite3 avec les widgets ? Après consultation de la doc, je ne suis pas beaucoup plus avancé, et je n'ai pas réussi à mettre la main sur des tutos qui m'aiderai à avancer dans mon projet...

  10. #30
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Salut.

    En ce qui concerne sqlite3, il y a un port spécifique wxWidgets : wxSQLite3

    J'en ai vaguement parlé dans un ancien tutoriel sur l'installation manuelle des DevPaks pour Code::Blocks : il y a un petit exemple.

    Sinon, suivant le nombre de variables que tu as à stocker, tu peux peut-être créer ton propre truc.
    Pour ma part, dans ce cas, je crée une classe singleton "DatasManager" ou "SettingsManager" qui gère les données ou les réglages en mémoire.
    Et cette classe se charge également d'écrire ou de lire les données dans un fichier xml au démarrage et à l'arrêt de l'application.

    Si tu as peur que le fichier xml soit trop gros, tu peux le faire passer à travers un stream zip, et tu obtiens un truc binaire compressé.

    Si tu veux plus d'infos là dessus, n'hésites pas.

    @+
    Xav'

  11. #31
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Du neuf,
    Alors après discussion avec le chef de projet, je doit utiliser sqlite3.c et non pas wxSqlite3, mais j'arrive à peu prêt maintenant à m'en sortir.
    Concernant le fichier de variables, on a utilisé la déclaration des variables dans un fichier déjà existant, pas "besoin" de fichier xml, apparement la solution du fichier existant est suffisante.

    En revanche, on m'a dit que l'on pouvait avoir un combobox qui inclu un panel de couleur. En ce moment, j'ai un combobox avec un tableau de wxString permettant le choix d'une couleur, mais on me demande d'y inclure à la place un choix avec des cases de couleurs, un peu comme dans les logiciels de graphisme.

    Merci pour les pistes tout de même, je pourrai y penser si je fais un autre projet dans l'avenir

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/12/2013, 11h46
  2. Récupérer une valeur à partir d'un datatable
    Par asmaSassou dans le forum JSF
    Réponses: 14
    Dernier message: 04/05/2012, 14h05
  3. [MySQL] Récupérer une valeur à partir d'une liste select
    Par xymagic dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 15/11/2011, 11h22
  4. Réponses: 1
    Dernier message: 28/10/2011, 10h32
  5. Réponses: 2
    Dernier message: 17/06/2005, 13h38

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