DCX problème de listview

Signaler
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011
-
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
-
Bonsoir,
Je me suis mis au DCX il n'y as pas longtemps et je rencontre un problème avec une listview.
En effet lorsque j'ouvre le dialog (code source ci dessous) la listview n'apparais pas (son emplacement est vide comme si je ne l'avais pas créer), de plus les titres de colonne (titre de chanson, durée, etc etc) n'apparaissent uniquement lorsque je passe la souris au dessus, la list en dessous (les cellules ou sont normallement affiché les informations) n'apparais uniquement lorsque je redimensionne les titres ou le dialog ( allez savoir pourquoi...).
J'en appel à des scripteur confirmé et connaissant le DCX pour m'aider a résoudre ce problème et aussi pour me dire si jusque là mon code est bon. Je vous poste le code source si dessous. Merci d'avance.

dialog mp3players {
  title "Lecteur Mp3"
  size -1 -1 572 244
}

on *:dialog:mp3players:*:*:{
  if $devent == init {
    dcx Mark $dname call_backmp3s
    xdialog -b $dname +mntyz
    creadialmp3s
  }
}
alias creadialmp3s {
  xdialog -c $dname 1 listview 22 62 538 132 fullrow nolabelwrap tooltip tabstop report showsel grid
  xdid -t $dname 1 +c 0 238 Titre de la chanson $chr(9) +l 0 100  Durée $chr(9) +2 0 100 Bitrate $chr(9) +3 0 100 Taille (en Mo)
  xdialog -c $dname 2 box 14 44 554 154
  xdid -t $dname 2 Liste de lecture
  xdialog -c $dname 3 list 26 18 358 20
  xdialog -c $dname 5 button 14 200 74 40 multi
  xdid -t $dname 5 Ouvrir un $crlf dossier
  xdialog -c $dname 6 button 94 200 74 24
  xdid -t $dname 6 9
  xdid -f $dname 6 +a symbol 10 webdings
  xdialog -c $dname 7 button 174 200 74 24
  xdid -t $dname 7 4
  xdid -f $dname 7 +a symbol 10 webdings
  xdialog -c $dname 8 button 254 200 74 24
  xdid -t $dname 8 ;
  xdid -f $dname 8 +a symbol 10 webdings
  xdialog -c $dname 9 button 334 200 74 24
  xdid -t $dname 9 <
  xdid -f $dname 9 +a symbol 10 webdings
  xdialog -c $dname 10 button 414 200 74 24
  xdid -t $dname 10 :
  xdid -f $dname 10 +a symbol 10 webdings
  xdialog -c $dname 11 button 494 200 74 24
  xdid -t $dname 11 Fermer
  xdialog -c $dname 12 button 404 6 162 38 multi
  xdid -t $dname 12 Option supp.
}

alias mp3s dialog -m mp3players mp3players
alias call_backmp3s {
  if $2 == sclick {
    if $3 == 11 {
      xdialog -x $1
    }
    if $3 == 5 {
      set %musique.lecteur $sfile(C:\,Choisie ta musique) | set %zik.ok on
    }
    if $3 == 6 {
      if (%zik.ok == on) {
        set %lecteur on
        .splay -p %musique.lecteur
        echo -a �2;D�2;ébut de la lecture de $nopath(%musique.lecteur)
      }
      else echo -a �2;�3;4ERREUR�2; Tu n'as pas mis de musique dans la liste , ou la musique est déjà en lecture
    }
  }
}

P.S. : Le code n'est pas terminé, je me suis arrété lorsque j'ai vu ce problème.

19 réponses

Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
La seul solution que j'ai trouvé c'est de redessiné le control des que tu resize, donc des qu'il y a nimporte quel action sur ta listview, redessine le control (xdialog -j $dname id_listview) il s'agit surement d'un bug, parce qu'il n'est spécifié nul part que l'on doit faire cela (parfois il est dis clairement qu'il faut le faire).
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011

Donc dans l'alias calback il faudrais que je mette avant le "if $2 == sclick": "if $3 == 1 ' xdialog -j $dname 1" ?
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
Ben par exemple ouais, tu as essayé ?
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011

Je viens d'essayer et ça me renvoie une erreur.
J'ai mis ça dans l'alias callback :

  if $3 == 1 {
    xdialog -j 1 $dname
  }

ça me renvois l'erreur suivante.

D_ERROR /xdialog (Unknown dialog "1": see Mark command)

J'ai donc inverser $dname et 1 (l'id de la listview) et celà m'as renvoyé la même erreur.
Je l'est ensuite mis dans l'alias creadialmp3s mais la boite de dialog est resté vide...
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
$dname est utilise dans les event on dialog, ça viens de mirc et non de dcx, je l'est mis ds mon bout de code en tant que référence, ce que j'ai donné est juste, il suffit juste de remplacé avec le nom du dialog et l'id
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011

Ok je comprends je viens de modifier et la listview s'affiche entierement mais uniquement si je passe la souris au dessus. plus besoin de redimensionnement (c'est déjà ça lol). N'y as-t-il pas moyen d'executer la commande dans l'init?
J'ai essayé de le mettre dans le on init sa ne m'affiche rien, idem si je met if $2 == init dans l'alias callback
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
lorsque tu crée ton control (donc pour toi dans l'alias creadialmp3), rajoute cette ligne (mot pour mot) a la fin :

.timer -h 1 100 xdialog -j $dname 1

Si tu ne vois pas le changement, augmente la valeur 100 pour 200 voir 400, tu peux même la réduire dans le cas contraire :)
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
Salut,
ca fait 1h30 que je cherche une solution, je viens donc de voir vos derniers messages seulement maintenant.
En effet j'ai aussi trouvé le moyen d'afficher le contrôle en passant la souris dessus, ainsi qu'en redimentionnant la fenêtre (je sais pas si tu as essayé, mais lors d'un resize, cette fichue listview redisparait).
J'ai utilisé ceci :if ((($2 mouseenter) && ($3 1)) || ($2 == denter) || ($1 == endmove)) xdialog -j $1 1
J'ai vraiment cherché de fond en comble, je ne vois pas de solution...
Si tu crées une dialogbox uniquement avec la listview, ça ne pose apparament aucun problème, si tu créés la listview en dernier, elle s'affiche correctement mais impossible d'agir dessus.
J'ai aussi, comme wims, utilisé les timers, mais sans succès. j'ai modifié les propriétés de la listview, j'ai même essayé de rajouter des propriétés en C (ahah, quand on est désespéré...)
Enfin bon, il y a sans doute en moyen en bidouillant, mais personnellement, j'ai abandonné là.
La fonction callback n'apprécie pas un "xdialog -j $1 1" répétitif (sans condition), tu peux donc toujours essayer de regrouper au maximum d'événement (mouseenter, focus, sizing, etc etc) et d'y rattacher cette commande pour que la listview s'affiche le plus possible.
Il est moche, ce beug.

Cordialement, uaip.
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
Même si tu met une autre appli en active et que tu reviens sur mirc elle disparait, je vais reporter le bug, il se peut même qu'il soit déja corrigé.
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011

Bon je viens d'essayer le timer et sa marche bien, sa m'affiche la listview et tout. Le temps de latence ce voit a peine. Merci beaucoup Wims.
@uaip non je n'ai pas été jusque là lol. Par contre j'ai le même problème dès que je redimensionne le dialog la listview disparrais (la méchante!).

Par contre n'y as t-il aucun moyen d'empécher le redimmensionnement du dialog et des cellules de la listview pour justement éviter la redisparition de la listview?
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011

Et pourquoi pas ne pas "relancer" le dialog lors de la mise de mirc en active? (là par contre je suis pas sur que sa existe lol)
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
Ben le redimensionnement c'est toi qui l'a choisi hein. (option +z de mémoire)

Cordialement, uaip.
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
Tu peux en effet essayer de cacher/afficher le dialog pour réactualiser les contrôles. Ca marche de base (avec win32), alors pourquoi pas via mIRC.

Cordialement, uaip.
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011

même si on ouvre le dialog en dehors de mirc (dialog -md $dname $dname) et que l'on réduit celui ci dans la barre des tâche la listview disparrais ( je propose de renommer listview en casper :x)
/me sort
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
1
Nan mais il y a tout simplement un gros beug. Je pense que ça va te prendre pas mal la tête. Sinon utilise plutôt mdx pour ça =P ou alors ne fais pas de listview pour le moment. Ou alors apprend le VB, c'est facile le VB.
Ou alors cours t'acheter une dinde pour demain. (ok, je sors avec toi...)
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011

@uaip oui c'étais bien l'option z qui permettais le redimmensionnement du dialog (j'avais oublié que je l'avais mis xD j'ai testé tellement de truc lol) par contre les cellule de la listview sont toujours redimmensionnable (bon ça ne la fait pas disparaitre chez moi dans ce cas ci mais c'est juste pour savoir ^^ )
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011

oui on m'as déjà dit d'utiliser le mdx et je l'ai utiliser (en tout cas j'ai tenter) mais rien ne s'affichais dans la listview d'ou la proposition qu'on m'as faites d'utiliser dcx lol
J'arrive déjà pas à me mettre à fond dans le mirc alors le VB... ouille ouille ouille ^^
Messages postés
44
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
17 avril 2009

Salut,
j'ai pas lu dans le détail vos échanges, mais j'ai vu que tu parlais d'active doob666, et si jamais tu n'étais pas au courant, je voulais juste dire qu'il y a on *:active:*:{ } qui existe :]

a+
djul
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
C'est justement en lisant en détail qu'on évite d'écrire ce genre de connerie =)