Je suis ouvert à toute modification ou amélioration (attention Puriste, c'est du programmé-cochonnoux)...

Code : Tout sélectionner
;- programmé par Nfred
; Libre de droit !!!
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0=0
#Button_1=1
#Button_2=2
#Button_3=3
#list_icon
EndEnumeration
Structure type
state.l
nbutton.l
donnee.s[50]
EndStructure
Dim boutton.type(50)
quit = 0 ; pour quitter le programme
x = 10
y = 10
XList = 50
hauteur = 40
largeur = 200
XListDecal = 30
HauteurListe = 100
NombreBoutton = 3
;{ chargement de données quelconques
Dim datalist.s(4)
datalist(1)="system"
datalist(2)="donnée"
datalist(3)="binary"
datalist(4)="ASCII ==> "
For i=0 To 3
For j = 1 To 5
boutton(i)\donnee[j]=datalist(i+1)+Str(j)
Next
Next
;}
Procedure Open_Window_0(x,y,hauteur,largeur,XList,XListDecal,HauteurListe,NombreBoutton)
If OpenWindow(#Window_0, 500, 100, 245, 348, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
If CreateGadgetList(WindowID())
;ButtonImageGadget(#Button_0,10,y+(0*haut),130,haut,LoadIcon_(0, #IDI_APPLICATION))
ButtonGadget(#Button_0, x, y+(0*hauteur), largeur, hauteur, "0")
ButtonGadget(#Button_1, x, y+(1*hauteur), largeur, hauteur, "1")
ButtonGadget(#Button_2, x, y+(2*hauteur), largeur, hauteur, "2")
ButtonGadget(#Button_3, x, y+(3*hauteur), largeur, hauteur, "3")
ListViewGadget(#list_icon,x+XListDecal,XList, (x+largeur)-(x+XListDecal),HauteurListe)
HideGadget(#list_icon,#True)
EndIf
EndIf
EndProcedure
Procedure load(i)
ClearGadgetItemList(#list_icon)
For l = 1 To 50
If boutton(i)\donnee[l] = ""
l=50
Else
AddGadgetItem(#list_icon,-1,boutton(i)\donnee[l])
EndIf
Next
EndProcedure
Open_Window_0(x,y,hauteur,largeur,XList,XListDecal,HauteurListe,NombreBoutton)
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
GadgetID = EventGadgetID()
For i = 0 To 3 ; On parcours tous les bouttons...
If GadgetID = i
Debug i
If boutton(i)\state = 0 ;{- déploiement d'une liste
For k = 0 To 3 ; remise à Zéro de tous les états
boutton(k)\state = 0
Next
boutton(i)\state = 1 ; boutton N° i a été pressé
j=HauteurListe ; les bouttons vont bouger de HauteurListe
If i = 0 ; clic sur le boutton 0
; -> y+ ( la hauteur d'un boutton* par la position)
; |
; |
ResizeGadget(#Button_1,x, y+(1*hauteur)+j, largeur, hauteur)
ResizeGadget(#Button_2,x, y+(2*hauteur)+j, largeur, hauteur)
ResizeGadget(#Button_3,x, y+(3*hauteur)+j, largeur, hauteur)
HideGadget(#list_icon,#False)
ResizeGadget(#list_icon,x+XListDecal,XList+((i)*hauteur),(x+largeur)-(x+XListDecal),HauteurListe)
load(i)
ElseIf i=1 ; clic sur le boutton 1
ResizeGadget(#Button_1,x, y+(1*hauteur), largeur, hauteur)
ResizeGadget(#Button_2,x, y+(2*hauteur)+j, largeur, hauteur)
ResizeGadget(#Button_3,x, y+(3*hauteur)+j, largeur, hauteur)
HideGadget(#list_icon,#False)
ResizeGadget(#list_icon,x+XListDecal,XList+((i)*hauteur),(x+largeur)-(x+XListDecal),HauteurListe)
load(i)
ElseIf i=2 ; clic sur le boutton 2
ResizeGadget(#Button_1,x, y+(1*hauteur), largeur, hauteur)
ResizeGadget(#Button_2,x, y+(2*hauteur), largeur, hauteur)
ResizeGadget(#Button_3,x, y+(3*hauteur)+j, largeur, hauteur)
HideGadget(#list_icon,#False)
ResizeGadget(#list_icon,x+XListDecal,XList+((i)*hauteur),(x+largeur)-(x+XListDecal),HauteurListe)
load(i)
ElseIf i=3 ; clic sur le boutton 3
ResizeGadget(#Button_1,x, y+(1*hauteur), largeur, hauteur)
ResizeGadget(#Button_2,x, y+(2*hauteur), largeur, hauteur)
ResizeGadget(#Button_3,x, y+(3*hauteur), largeur, hauteur)
HideGadget(#list_icon,#False)
ResizeGadget(#list_icon,x+XListDecal,XList+((i)*hauteur),(x+largeur)-(x+XListDecal),HauteurListe)
load(i)
EndIf
;}
Else ;{- on replie la liste
boutton(i)\state = 0
j=0
If i = 0
ResizeGadget(#Button_1,x, y+(1*hauteur)+j, largeur, hauteur)
ResizeGadget(#Button_2,x, y+(2*hauteur)+j, largeur, hauteur)
ResizeGadget(#Button_3,x, y+(3*hauteur)+j, largeur, hauteur)
ResizeGadget(#list_icon,x,XList+((i)*hauteur),(x+largeur)-(x+XListDecal),HauteurListe)
HideGadget(#list_icon,#True)
ElseIf i=1
ResizeGadget(#Button_1,x, y+(1*hauteur), largeur, hauteur)
ResizeGadget(#Button_2,x, y+(2*hauteur)+j, largeur, hauteur)
ResizeGadget(#Button_3,x, y+(3*hauteur)+j, largeur, hauteur)
ResizeGadget(#list_icon,x,XList+((i)*hauteur),(x+largeur)-(x+XListDecal),HauteurListe)
HideGadget(#list_icon,#True)
ElseIf i=2
ResizeGadget(#Button_1,x, y+(1*hauteur), largeur, hauteur)
ResizeGadget(#Button_2,x, y+(2*hauteur), largeur, hauteur)
ResizeGadget(#Button_3,x, y+(3*hauteur)+j, largeur, hauteur)
ResizeGadget(#list_icon,x,XList+((i)*hauteur),(x+largeur)-(x+XListDecal),HauteurListe)
HideGadget(#list_icon,#True)
ElseIf i=3
ResizeGadget(#Button_1,x, y+(1*hauteur), largeur, hauteur)
ResizeGadget(#Button_2,x, y+(2*hauteur), largeur, hauteur)
ResizeGadget(#Button_3,x, y+(3*hauteur), largeur, hauteur)
ResizeGadget(#list_icon,x,XList+((i)*hauteur),(x+largeur)-(x+XListDecal),HauteurListe)
HideGadget(#list_icon,#True)
EndIf
EndIf
;}
EndIf
Next
EndIf
Until quit = 1

y aurait-il une façon de faire plus propre ?