PicWin: List et Réduction

Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007 - 15 nov. 2005 à 20:05
Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007 - 15 nov. 2005 à 22:53
Bon, je suis en train de faire une petite source en picwin mais j'ai besoin d'une list (comme en dialog). J'ai fait un rectangle mais euh après??
Puis je voudrais faire à coter du X je voudrais faire un "_" pour réduire la fentre

6 réponses

Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007
15 nov. 2005 à 20:22
Puis un tab, comme un dialog:P
0
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
15 nov. 2005 à 21:32
Si tu as envie de te faire une source avec un dialog en picwin, c'est bien pour toi

mais sache que qui dit "dialog picwin" dit "tout faire" c'est a dire
que tu dois a la fois coder l'interface graphique (ce que tout le monde
est capable de faire, vive les drawrect..) mais SURTOUT coder tout ce
qui est dynamique/editable/cochable/"scrollable" etc

De plus, les lits sont dans une source en picwin un des items les plus compliqué a faire (ne parlons pas des tabs non plus...)

en conclusion, si tu veu nous faire une petite source dont la seule
originalité sera d'être en picwin, tu ferais bien de la faire en dialog
et de te créer un GUI (c'est à la mode en plus) , car c'est bien beau
d'avoir des chouettes idées, mais les réaliser peut parfois être très
compliqué



bon je vais quand même (essayer de) te repondre



pour ce qui est du "_" rien de compliqué:

Tu dessine ton symbole par ex aux coordonnees 150 150 avec un rectangle de dimension 10x10

en gros drawrect blabla.... 150 150 10 10

ensuite tu drawtext ton symbole

Puis lors de l'event sclick de la @win, tu verifies si la souris se
situe dans ton carré: $inrect($mouse.y,$mouse.y,150,150,10,10))

-> si c'est $true, alors tu fais un /window -n



Pour la liste, beaucoup plus compliqué, plein de methodes

Si il n'y a pas d'ascenseurs à gérer c'est déja plus facile

tu drawrect ta list ex /drawrect blabla... 50 50 100 150

ensuite tu met les données de la list dans une @win cachée (pas une picwin)

tu calcul le nombre de lignes de la @win cachée: $lines(@win,0)

ensuite tu va faire une boucle de 1 a 150 (la hauteur de la liste) et
tu la remplis en lisant chaque ligne de la @win, puis tu incremente ta
var qui indique la hauteur d'ecriture de $height(text,font,taille)



Tiens voila un petit code qui recapitule les 2 choses que je viens de te dire



alias plist {

window -pod @plist -1 -1 350 350

;on crée une liste aux position xy = 50 50, de largeur 200 et de hauteur 250, a savoir pour la suite du code

drawrect @plist 1 2 50 50 200 250

;on crée le petit bouton "_"

drawrect @plist 1 2 250 15 15 15 | drawtext @plist 4 arial 11 255 14 _

;on crée le bouton pour remplir la list

drawrect @plist 1 2 20 20 100 20 | drawtext @plist 4 arial 12 28 23 Remplir la liste

}



alias plist_r {

;on crée la win qui contien ttes les données de la list (ou on ajoute des données dedans)

window @list | loadbuf @list mirc.ini



;on fait une boucle de 1 a la hauteur de la list

var %i 1, %max 250, %p 1

while (%i <= %max) {

;on met la ligne %p de la @win dans une var, et on
crée une var %h qui contient la hauteur en pixel du text avec la font
arial 11

var %text = $line(@list,%p) , %h $height(%text,arial,11)

;on ecrit avec cette meme font a x = 55 (pour ne pas
ecrire juste au debut de la list) 50 + %i qui represente la hauteur (y)
, 185 car sinon le text pourra depasser la list et %h car c'est obligé
:)

if (%text != $chr(32)) drawtext -c @plist 1 arial 11 55 $calc(50 + %i) 185 %h %text

;on incremente la ligne de la @win

inc %p

;on incremente la position y qui sert au drawtext de %h (la hauteur de la font arial 11 je le repete)

inc %i %h

}

}



menu @plist {

sclick {

;si le curseur est dans le rectangle du petit bouton "_" alors on reduit la @plist

if ($inrect($mouse.x,$mouse.y,250,15,15,15)) window -n @plist

;si le curseur est dans le bouton on lance l'alias plist_r qui va remplir la list

elseif ($inrect($mouse.x,$mouse.y,20,20,100,20)) plist_r

}

}



Lis bien et essaye de comprendre le code, pas de le recopier betement ;-)
0
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
15 nov. 2005 à 21:33
ps: /plist pour l'utiliser
0
Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007
15 nov. 2005 à 21:55
C po mal du tout ta liste... mais il manque un truc: les scrool pour monter et descendre...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
15 nov. 2005 à 22:19
désolé mais la je t'ai donné les principes, maintenant c'est a toi de jouer (sois astucieux)

sachant que la var %p represente la ligne a écrire, et qu'elle est
ensuite incrementé, si par ex ta win contien 10 lignes, mais que tu ne
vois que les 5 premieres dans ta liste tu peux faire la chose suivante:

Lors d'un click sur l'ascenseur du bas de la list (que tu aura
crée/dessiné) au lieu de commencer a recopier les lignes de la @win de
1 à 10, tu va commencer a 2

Si tu reclick sur l'ascenseur, tu va commencer de la 3 etc..

De meme (ou plutot l'inverse) pour l'ascenseur du haut



allez, comme je suis dans un bon jour je te file un exemple



alias plist {

window -pod @plist -1 -1 350 350

;on crée une liste aux position xy = 50 50, de largeur 200 et de hauteur 250, a savoir pour la suite du code

drawrect @plist 1 2 50 50 200 250

;on crée le petit bouton "_"

drawrect @plist 1 2 250 15 15 15 | drawtext @plist 4 arial 11 255 14 _

;on crée le bouton pour remplir la list

drawrect @plist 1 2 20 20 100 20 | drawtext @plist 4 arial 12 28 23 Remplir la liste

;ascenseur vers le bas

drawrect @plist 1 2 250 280 20 20 | drawtext @plist 4 webdings 14 253 280 6

;ascenseur vers le haut

drawrect @plist 1 2 250 50 20 20 | drawtext @plist 4 webdings 14 253 50 5

}



alias plist_r {

;on crée la win qui contien ttes les données de la list (ou on ajoute des données dedans)

if (!$window(@list)) { window @list | loadbuf @list mirc.ini }



;on efface le contenue de la list

drawrect -f @plist 0 1 52 52 196 246

;si elle n'existe pas ou si elle a une valeur negative , on set
la variable globale qui indique a partir d'ou commencer a copier les
lignes

if ((!%pl) || (%pl <= 0)) set %pl 1

;on fait une boucle de 1 a la hauteur de la list

var %i 1, %max 250, %p %pl

while (%i <= %max) {

;on met la ligne %p de la @win dans une var, et on
crée une var %h qui contient la hauteur en pixel du text avec la font
arial 11

var %text = $line(@list,%p) , %h $height(%text,arial,11)

;on ecrit avec cette meme font a x = 55 (pour ne pas
ecrire juste au debut de la list) 50 + %i qui represente la hauteur (y)
, 185 car sinon le text pourra depasser la list et %h car c'est obligé
:)

if (%text != $chr(32)) drawtext -c @plist 1 arial 11 55 $calc(50 + %i) 185 %h %text

;on incremente la ligne de la @win

inc %p

;on incremente la position y qui sert au drawtext de %h (la hauteur de la font arial 11 je le repete)

inc %i %h

}

}



menu @plist {

sclick {

;si le curseur est dans le rectangle du petit bouton "_" alors on reduit la @plist

if ($inrect($mouse.x,$mouse.y,250,15,15,15)) window -n @plist

;si le curseur est dans le bouton on lance l'alias plist_r qui va remplir la list

elseif ($inrect($mouse.x,$mouse.y,20,20,100,20)) plist_r

;si on click sur l'ascenseur du bas on incremente la var %pl et on reaffiche la list

elseif ($inrect($mouse.x,$mouse.y,250,280,20,20)) { inc %pl | plist_r }

;si on click sur l'ascenseur du haut on decremente la var %pl et on reaffiche la list

elseif ($inrect($mouse.x,$mouse.y,250,50,20,20)) { dec %pl | plist_r }

}

}



;quand on ferme la @plist on unset la variable

on *:close:@plist:unset %pl



Allez au boulot maintenant !
0
Mc_AbBeR Messages postés 301 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 19 février 2007
15 nov. 2005 à 22:53
Cool! Mais une question dememe, si je reste appuyer sur la flèche du bas longtemp sa déscend d'une seul ligne. Kel truc je pourrais mettre pour pouvoir en faire le contraire??
0
Rejoignez-nous