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

Caml Discussion :

[lablgtk2] comment ajouter des widget dynamiquement?


Sujet :

Caml

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Points : 23
    Points
    23
    Par défaut [lablgtk2] comment ajouter des widget dynamiquement?
    Bonjour,
    c'est moi de nouveau, je pose trop de questions ces derniers temps

    comment est-il possible d'ajouter des widgets dans mon window d'une manière dynamique c'est à dire suite à un clique de bouton j'affiche d'autre widget soient d'autres boutons, d'autres zones de textes...

  2. #2
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Salut !

    Citation Envoyé par amiroushka
    comment est-il possible d'ajouter des widgets dans mon window d'une manière dynamique c'est à dire suite à un clique de bouton j'affiche d'autre widget soient d'autres boutons, d'autres zones de textes...
    Ben tout dépend de l'origine des nouveaux widgets à insérer. S'ils sont créés juste pour l'insertion, il suffit de faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    let button =
      let button = GButton.button () in
      button#connect#clicked (fun  ->
        ignore (GButton.button ~packing:vbox1#add ());
        ignore (GEdit.entry ~packing:vbox2#add ());
      );
    En revanche si les widgets ont déjà été insérés ailleurs, l'insertion est en fait un changement de widget parent. Et dans de cas, on utilise widget#misc#reparent.

    Cordialement,
    Cacophrène

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Points : 23
    Points
    23
    Par défaut
    j'ai pensé à une solution qui m'a semblé plus facile.
    Donc , j'ai packé mes widgets dans des box que j'ai mis leur valeur show à false et parès il suffit d'appeler box#misc#show

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Points : 23
    Points
    23
    Par défaut
    Re ;
    j'ai voulu utilisé widget#misc#reparent.
    je l'ai utilisé de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mon_bouton#misc#reparent vbox
    mais j'ai eu l'erreur suivante au niveau de vbox:T
    his expression has type GPack.box but is here used with type GObj.widget
    Only the first object type has a method add

    SVP est ce que vous pourriez me dire comment corriger cette erreur?

  5. #5
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonjour !

    Citation Envoyé par amiroushka
    j'ai eu l'erreur suivante au niveau de vbox:T
    his expression has type GPack.box but is here used with type GObj.widget
    Only the first object type has a method add
    Il faut prendre l'habitude de consulter les signatures des fonctions, des méthodes, etc. (conseil valable pour toute utilisation d'OCaml, et pas seulement de LablGTK). On a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    method reparent : GObj.widget -> unit
    Si on veut que le bouton btn1 devienne l'enfant de la boîte vbox1, on doit donc écrire btn#misc#reparent vbox1#coerce. D'ailleurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    method coerce : GObj.widget
    Pour info la doc est ici : http://wwwfun.kurims.kyoto-u.ac.jp/s.../lablgtk/html/

    Cordialement,
    Cacophrène

Discussions similaires

  1. [2.x] Comment ajouter des widgets à un object Form
    Par DanaKil dans le forum Symfony
    Réponses: 0
    Dernier message: 23/05/2012, 16h07
  2. Réponses: 3
    Dernier message: 23/04/2007, 13h14
  3. Réponses: 1
    Dernier message: 19/08/2006, 19h40
  4. [EXPORT] Comment ajouter des packages au .jar ?
    Par djskyz dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/08/2004, 23h23
  5. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30

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