Mc_AbBeR
Messages postés301Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention19 février 2007
-
15 nov. 2005 à 20:05
Mc_AbBeR
Messages postés301Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention19 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
fjxokt
Messages postés840Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 février 20091 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 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é
:)
fjxokt
Messages postés840Date d'inscriptionvendredi 28 janvier 2005StatutMembreDernière intervention25 février 20091 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
;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é
:)
Mc_AbBeR
Messages postés301Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention19 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??