Picwin, approfondissement.
ici .
Ici nous allons apprendre a creer un bouton dynamique, un check, un text défilant et un edit.
drawrect @te 14 1 10 10 31 11drawrect @te 1 1 10 10 30 10 ; si on est minutieux, on dessine des points blanc sur l'ombre afin de faire pile poil l'ombre (facultatif)
drawdot @te 0 1 40 10
drawdot @te 0 1 10 20
}
menu @te {mouse: { ; si on bouge la souris dans le rectangle .......if $inrect($mouse.x,$mouse.y,10,10,30,10) { ; on efface toute la win grace a un drawrect -f de couleur 0 (a changer suivant le fond de votre win)
drawrect -f @te 0 1 0 0 70 70 ===
; on dessine le meme bouton mais avec un effet renfoncé cette fois,
; donc un autre rectangle au dessus du premier
===
drawrect @te 14 1 9 9 31 11drawrect @te 1 1 10 10 30 10 ; pareil, on peut ajuster le renfoncement
drawdot @te 0 1 39 9
drawdot @te 0 1 9 19} ; si la souris n'es pas dans le rectangle indiqué si dessus :else { ; on efface tout et on refais le bouton normal :)
drawrect -f @te 0 1 0 0 70 70
drawrect @te 14 1 10 10 31 11
drawrect @te 1 1 10 10 30 10
drawdot @te 0 1 40 10
drawdot @te 0 1 10 20
}
}
}
alias check { ;on ouvre une @window (c'est toujours pareil :x)window -Ckdp +LetB @check 1 1 80 60 ; on dessine un carré pour faire le checkdrawrect @check 1 1 10 10 15 15 ; on dessine des cercles pour faire les radio
drawrect -e @check 1 1 30 10 15 15
drawrect -e @check 1 1 50 10 15 15
}
menu @check {sclick { ; si on clique dans le rectangle bla bla bla bla :
if $inrect($mouse.x,$mouse.y,10,10,15,15) { ===
; et si la variable est sur on, on efface le contenu du check, donc on déselectionne le check
; on change aussi la variable de position if %check on { drawrect -f @check 0 1 11 11 13 13 | set %check off } ===
; sinon : on dessine un point dans le check et on change aussi la variable de position
; personellement j'ai mis un point mais on peut mettre un "X" ou des lignes peut importe. else { drawdot @check 4 4 19 19 | set %check on } }
; pour les radios
; Si on clique dans le premier cercle (noter que j'ai quand meme mis un $inrect malgré le cercle on va pas s'embeter avec ca)
; on efface le point de l'autre radio correspondant et on met un point sur celui selectionné if $inrect($mouse.x,$mouse.y,30,10,15,15) { drawdot @check 4 4 39 19 | drawdot @check 0 4 59 19 }
; et inversement ;) if $inrect($mouse.x,$mouse.y,50,10,15,15) { drawdot @check 0 4 39 19 | drawdot @check 4 4 59 19 }
===
alias text {
; on fais une variable %text qui donne la position du text en largeur
set %text 1
; on ouvre une window
window -Ckp +Let @text 1 1 500 50
; on dessine déja le text une fois
drawtext @text 5 %text 8 Ceci est un texte
; on lance un timer qui va effectuer l'alias text2 tout les 50 millisecondes (cf aide mirc /timer)
; vous pouvez changer le 50 pour modifier la vitesse du texte
.timertext -ho 0 50 text2
}
alias text2 {
; si la variable est inferieur ou égale a 500 (soit le bors de la win) on arrète (ca sert a rien de continuer alors que l'on voit plus le texte
if (%text <= 500) {
; on efface toute la fenetre sinon il va nous rester tout les drawtext précédents
drawrect -f @text 0 1 0 0 500 50
; on incrémente la variable pour faire "avancer" le texte
inc %text
; on redessine le text, et comme par miracle, il a avancé d'un pixel :)
drawtext @text 5 %text 8 Ceci est un texte
}
}
; on rajoute un event pour que lorsque l'on ferme la win et que le timer n'es pas terminé, on ai pas de messages d'erreur
on *:close:@text: .timertext off
alias edit {
; met un petit truc dans la variable pour ne pas qu'elle soit nulle
set %edit $+
; on ouvre la fenetre
window -pCk +Letd @ed 1 1 120 40
; on dessine l'edit
; ici je me suis pas embété, j'ai juste fais un simple rectange
drawrect @ed 1 1 10 10 100 20
}
; réaction a l'evenement keydown
on *:keydown:@ed:*:{
; si on ne presse pas la touche retour arrière :
if ($keyval != 8) {
; si on presse la touche espace :
if ($keyval == 32) {
; on ouvre une nouvelle variable avec la première comprise plus le caractère espace
set %edit2 %edit $+ $chr(160)
; on met la première variable égale a la première
; pas super comme technique mais c'est pratique
set %edit %edit2
; on dessine le texte
drawtext @ed 4 12 14 %edit
}
; si c'est un autre caractère que le 32 :
else {
; on ouvre une nouvelle variable avec la première comprise plus le caractère spécifié
set %edit2 %edit $+ $keychar
; toujours pareil :s
set %edit %edit2
; et on redessine le texte
drawtext @ed 4 12 14 %edit
}
}
; si le keyval est 8 (soit la touche retour arrière)
else {
; on prend toutes les lettres de %edit sauf la dernière
set %edit2 $left(%edit,$calc($len(%edit) - 1))
set %edit %edit2
; on efface le dessin et on refais le rectangle
drawrect -f @ed 0 1 0 0 120 40
drawrect @ed 1 1 10 10 100 20
; si %edit n'est pas nul (pour eviter les message d'erreur)
if (%edit) {
; on dessine la phrase sans la dernière caractère
drawtext @ed 4 12 14 %edit
}
}
}
<hr>
Kinder_Maxi
tidjo45@hotmail.com
version du mardi 22 février 2005