Page 2 sur 3

Publié : jeu. 02/juil./2009 12:57
par Anonyme
@Dobro
je voudrais le plus possible de compatibilite avec les 3 os.
SetWindowCallBack() n'est pas portable... :D

Publié : jeu. 02/juil./2009 13:49
par Backup
Cpl.Bator a écrit :@Dobro
je voudrais le plus possible de compatibilite avec les 3 os.
SetWindowCallBack() n'est pas portable... :D
ha bah oui :)

mais moi je répondais a sa dernière question :)

vivement la version 228.50 de purebasic qui integrera la cross compilation :D

(mais non , je suis pas moqueur :lol: )

Publié : jeu. 02/juil./2009 14:19
par Ollivier
A partir de l'image que tu as posté, peut-être que ceci est correct?

C'est uniquement pour Windows. Pour le multi plate-forme, il existe une solution mais elle demande de gérer chaque bouton comme une fenêtre fille

Code : Tout sélectionner

#DI_Vertical   = 0
#DI_Horizontal = 1

Structure FenetreInfo
   No.I
   X.I
   Y.I
   LI.I ; Largeur Interne
   HI.I ; Hauteur Interne
   Ti.S
   Op.I
   Evt.I ; Evénement fourni avec WindowEvent()
EndStructure



Procedure Rect(X.I, Y.I, L.I, H.I, C.I)
   
   Line(X, Y, L, 0, C)
   Line(X, Y, 0, H, C)
   Line(X, Y + H - 1, L, 0, C)
   Line(X + L - 1, Y, 0, H, C)
   
EndProcedure



Procedure.I DegradeImage(L.I, H.I, Dir.I)
   Protected Img.I
   Img = CreateImage(-1, L, H)
   StartDrawing(ImageOutput(Img))
      Select Dir
         Case #DI_Vertical
            Pas.F = L / 255.0 + 1.0
            For i = 0 To 255
               x.F = (i * L) / 255.0
               Box(x, 0, pas, H, RGB(128 + i / 2, 128 + i / 2, 255) )
            Next
         Case #DI_Horizontal
            Pas = H / 255.0 + 1.0
            For i = 0 To 255
               y.F = (i * H) / 255.0
               Box(0, y, L, pas, RGB(128 + i / 2, 128 + i / 2, 255) )
            Next
      EndSelect
      Rect(0, 0, L, H, #White)
      Rect(1, 1, L - 2, H - 2, RGB(128, 128, 255) )
      Rect(2, 2, L - 4, H - 4, #White)
   StopDrawing()
   ProcedureReturn Img
EndProcedure


Procedure FenetreTest(*Fenetre.FenetreInfo)

   With *Fenetre
      \No = OpenWindow(-1, \X, \Y, \LI, \HI, \Ti, \Op)
         \HI = WindowHeight(\No)
         ImageGauche = DegradeImage(128, \HI, #DI_Vertical) 
         ImageGadget(2, 0, 0, 128, \HI, ImageID(ImageGauche) )
         SetWindowLong_(GadgetID(2), #GWL_STYLE, GetWindowLong_(GadgetID(2), #GWL_STYLE) | #WS_CLIPSIBLINGS)
         ContainerGadget(1, 128, 0, \LI - 128, \HI)
            ImageDroite = DegradeImage(\LI - 128, \HI, #DI_Horizontal) 
            ImageGadget(3, 0, 0, \LI - 128, \HI, ImageID(ImageDroite) )
            SetWindowLong_(GadgetID(3), #GWL_STYLE, GetWindowLong_(GadgetID(2), #GWL_STYLE) | #WS_CLIPSIBLINGS)
            ButtonGadget(4, 16, 16, 128, 48, "Quitter")
            SetWindowPos_(GadgetID(3), GadgetID(4), -1, -1, -1, -1, #SWP_NOSIZE | #SWP_NOMOVE)
         CloseGadgetList()
         Repeat
            Delay(1)
            \Evt = WindowEvent()
            Select \Evt
               Case #PB_Event_Gadget
                  Select EventGadget()
                     Case 4
                        Break
                  EndSelect
            EndSelect
         Until \Evt = #PB_Event_CloseWindow
      CloseWindow(\No)
   EndWith

EndProcedure



   Define Fenetre.FenetreInfo
   With Fenetre
      \X = 0
      \Y = 0
      \LI = 400
      \HI = 300
      \Ti = ""
      \Op = $CF0001
   EndWith
   FenetreTest(Fenetre)
   
End   
.

Publié : jeu. 02/juil./2009 21:10
par kernadec
bonsoir
puisqu'on est dans les degradés,
voila pour le fun un post du forum anglais.
http://www.purebasic.fr/english/viewtop ... d145c44fc6

cordialement

Publié : jeu. 02/juil./2009 21:25
par Anonyme
kernadec a écrit :bonjour Cpl.Bator
je ne comprend pas votre probleme clic?

Code : Tout sélectionner

OpenWindow(0, 0, 0, 550, 550, "Fenetre", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateImage(0, WindowWidth(0), WindowHeight(0))
ContainerGadget(1, 20, 20, 512, 512 ,#PB_Container_Double) 
StartDrawing(ImageOutput(0))
	DrawingMode(1)
	For n = 0 To 255
	  ;Box(0,n*6,512,3,RGB(n,n,n))
	  ;Box(0,n*5,512,5,RGB(255-n,255-n,255))
	  ;Box(0,n*10,512,10,RGB(255-n,255-n,255))
	  Box(0,n*8,512,8,RGB(255-n,255-n,255))
    ;Box(0,n*3,512,3,RGB(n,n,255-n))
    ;Box(0,n*3,512,3,RGB(n,255-n,n))
    ;Box(0,n*3,512,3,RGB(255-n,n,n))
	Next
StopDrawing()
ButtonGadget(2, 40, 40, 80, 20 ,"essai",#PB_Button_Toggle)
ImageGadget(0,0,0,ImageWidth(0), ImageHeight(0), ImageID(0))
Repeat
	Event = WaitWindowEvent()
	Select Event
		 Case #PB_Event_Gadget   
		  Select EventGadget()
		    Case 2
	    Debug "Voila"
	  EndSelect
	Case #PB_Event_CloseWindow
		End
	EndSelect
ForEver
cordialement

Ton code est bon effectivement , un vieux reflexe logique me dit de placer mes gadget dans l'ordre
si tu créer l'image , et qu'ensuite tu créer le bouton , le bouton deviens incliquable.

Tu as du avoir un gros coup de chance :D

Publié : jeu. 02/juil./2009 21:40
par kernadec
bonsoir
simplement de la patience
et ce n'est pas de chance,
car on est obligé d' utiliser le callback windows
cordialement

Publié : jeu. 02/juil./2009 21:44
par Anonyme
kernadec a écrit :bonsoir
simplement de la patience
et ce n'est pas de chance,
car on est obligé d' utiliser le callback windows
cordialement
la preuve que non , puisque ton code marche sans ! :D

Publié : jeu. 02/juil./2009 21:53
par kernadec
ben non le bouton disparait quand on passe la fenetre debug dessus.
si vous arrivez a le garder visible, dite moi comment vous faite sans callback.

Publié : ven. 03/juil./2009 3:25
par Ollivier
@Kernadec

C'est ce qui s'appelle essayer de la faire à l'envers!!!
J'ai pourtant posté un code. D'ailleurs, je l'ai piqué d'un code de Gnozal: honte à moi d'agir ainsi...

Pour le multi-OS, je crois qu'il n'y a pas d'autres choix que de jouer avec plusieurs fenêtres mère et filles. Je n'ai pas testé mais je pense qu'on peut obtenir des résultats similaires avec cette méthodes.

Ollivier

Publié : ven. 03/juil./2009 12:18
par Le Soldat Inconnu
Pardon si ce n'est pas trop ce qui est recherché mais j'aurai fait comme cela, moi

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Pour faire des programmes de test rapidement, il ne reste qu'a rajouter les gadgets et la gestion des évènements.

Enumeration
  #Fond
  #Fond_Decoupe_H
  #Fond_Decoupe_B
  #Fond_Decoupe_D
  #Fond_Decoupe_G
  #Bouton
EndEnumeration

; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
  End
EndIf

; le fond
CreateImage(#Fond, 300, 300)
StartDrawing(ImageOutput(#Fond))
  For n = 0 To 299
    Line(0, n, 300, 0, RGB(170 + 80 * n / 300, 170 + 80 * n / 300, 170 + 80 * n / 300))
  Next
StopDrawing()

; le bouton
CreateImage(#Bouton, 100, 25)
StartDrawing(ImageOutput(#Bouton))
  Box(1, 1, 98, 23, $FFFFFF)
  DrawingMode(#PB_2DDrawing_Transparent)
  Texte.s = "Bonjour"
  DrawText((100 - TextWidth(Texte)) / 2, (25 - TextHeight(Texte)) / 2, Texte, $000000)
StopDrawing()

; Affichage
; On découpe le fond pour faire un trou pour le bouton
GrabImage(#Fond, #Fond_Decoupe_H, 0, 0, 300, 200)
GrabImage(#Fond, #Fond_Decoupe_B, 0, 225, 300, 75)
GrabImage(#Fond, #Fond_Decoupe_G, 0, 200, 100, 25)
GrabImage(#Fond, #Fond_Decoupe_D, 200, 200, 100, 25)

; Fond
ImageGadget(#Fond_Decoupe_H, 0, 0, 300, 200, ImageID(#Fond_Decoupe_H))
ImageGadget(#Fond_Decoupe_B, 0, 225, 300, 75, ImageID(#Fond_Decoupe_B))
ImageGadget(#Fond_Decoupe_G, 0, 200, 100, 25, ImageID(#Fond_Decoupe_G))
ImageGadget(#Fond_Decoupe_D, 200, 200, 100, 25, ImageID(#Fond_Decoupe_D))
; Bouton
ImageGadget(#Bouton, 100, 200, 100, 25, ImageID(#Bouton))

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_Menu
      Select EventMenu() ; Menus
          
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadget() ; Gadgets
        Case #Bouton
          Select EventType()
            Case #PB_EventType_LeftClick
              Debug "Clic gauche sur le bouton"
          EndSelect
        Case #Fond_Decoupe_H, #Fond_Decoupe_B, #Fond_Decoupe_D, #Fond_Decoupe_G
          Select EventType()
            Case #PB_EventType_LeftClick
              Debug "Clic gauche sur le fond"
            Case #PB_EventType_RightClick
              Debug "Clic droit sur le fond"
          EndSelect
      EndSelect
  EndSelect
  
Until Event = #PB_Event_CloseWindow
c'est totalement multiplateforme et ça permet de faire les boutons avec l'apparence de son choix

Publié : ven. 03/juil./2009 14:00
par Ollivier
Futé LSI :wink:

Publié : ven. 03/juil./2009 14:44
par kernadec
bonjour Soldat Inconnu
Avec votre code, En activant les thème XP pour les couleurs,
cela permet de garder l'animation du bouton.

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu 
; Version de PB : 4 
; 
; Explication du programme : 
; Pour faire des programmes de test rapidement, il ne reste qu'a rajouter les gadgets et la gestion des évènements. 
 
Enumeration 
 #Fond 
 #Fond_Decoupe_H 
 #Fond_Decoupe_B 
 #Fond_Decoupe_D 
 #Fond_Decoupe_G 
 #Bouton 
 #Bouton1
EndEnumeration 
 
; Création de la fenêtre et de la GadgetList 
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 
 End 
EndIf 
 
; le fond 
CreateImage(#Fond, 300, 300) 
StartDrawing(ImageOutput(#Fond)) 
 For n = 0 To 299 
  Line(0, n, 300, 0, RGB(170 + 80 * n / 300, 170 + 80 * n / 300, 170 + 80 * n / 300)) 
 Next 
StopDrawing() 

font=LoadFont(0,"system",8) 

; le bouton 
CreateImage(#Bouton, 100, 25) 
StartDrawing(ImageOutput(#Bouton)) 
 SetGadgetFont(#PB_Default, font) 
 ;Box(1, 1, 98, 23, $FFFFFF) 
 Box(1, 1, 98, 23,RGB(243,243,243)) 
 DrawingMode(#PB_2DDrawing_Transparent) 
 Texte.s = "Bonjour" 
 DrawText((100 - TextWidth(Texte)) / 2, (34 - TextHeight(Texte)) / 4, Texte, $000000) 
StopDrawing() 
  
; Affichage 
; On découpe le fond pour faire un trou pour le bouton 
GrabImage(#Fond, #Fond_Decoupe_H, 0, 0, 300, 200) 
GrabImage(#Fond, #Fond_Decoupe_B, 0, 225, 300, 75) 
GrabImage(#Fond, #Fond_Decoupe_G, 0, 200, 100, 25) 
GrabImage(#Fond, #Fond_Decoupe_D, 200, 200, 100, 25) 
 
; Fond 
ImageGadget(#Fond_Decoupe_H, 0, 0, 300, 200, ImageID(#Fond_Decoupe_H)) 
ImageGadget(#Fond_Decoupe_B, 0, 225, 300, 75, ImageID(#Fond_Decoupe_B)) 
ImageGadget(#Fond_Decoupe_G, 0, 200, 100, 25, ImageID(#Fond_Decoupe_G)) 
ImageGadget(#Fond_Decoupe_D, 200, 200, 100, 25, ImageID(#Fond_Decoupe_D)) 
; Bouton 
ButtonGadget(#Bouton1, 100, 200, 100, 25, "Bonjour")
ImageGadget(#Bouton, 100, 200, 100, 25, ImageID(#Bouton)) 
 
Repeat 
 Event = WaitWindowEvent() 
  
 Select Event 
  Case #PB_Event_Menu 
   Select EventMenu() ; Menus 
    EndSelect 
  Case #PB_Event_Gadget 
   Select EventGadget() ; Gadgets 
    Case #Bouton ,#bouton1
     Select EventType() 
      Case #PB_EventType_LeftClick 
       Debug "Clic gauche sur le bouton" 
     EndSelect 
    Case #Fond_Decoupe_H, #Fond_Decoupe_B, #Fond_Decoupe_D, #Fond_Decoupe_G 
     Select EventType() 
      Case #PB_EventType_LeftClick 
       Debug "Clic gauche sur le fond" 
      Case #PB_EventType_RightClick 
       Debug "Clic droit sur le fond" 
     EndSelect 
   EndSelect 
 EndSelect 
  
Until Event = #PB_Event_CloseWindow 
Cordialement

Publié : sam. 04/juil./2009 9:48
par Geo Trouvpatou
Salut.

Pas mal LSI.
Et un rollover sur le bouton c'est possible ?
Du style bouton au repos, survol du curseur sur le bouton et clic sur le bouton et tout ceci portable.

Kernadec, ton problème précédent revient.
Si tu sors ton interface hors de l'écran ou si une autre interface passe par dessus la 1ère, le bouton ne se redessine pas. Dommage.

Bye.

Publié : sam. 04/juil./2009 10:41
par Le Soldat Inconnu
Bien sur, c'est très facile, regarde

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Pour faire des programmes de test rapidement, il ne reste qu'a rajouter les gadgets et la gestion des évènements.

Enumeration
	#Fond
	#Fond_Decoupe_H
	#Fond_Decoupe_B
	#Fond_Decoupe_D
	#Fond_Decoupe_G
	#Bouton
  #Bouton_Survol
EndEnumeration

; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
	End
EndIf

; le fond
CreateImage(#Fond, 300, 300)
StartDrawing(ImageOutput(#Fond))
	For n = 0 To 299
		Line(0, n, 300, 0, RGB(170 + 80 * n / 300, 170 + 80 * n / 300, 170 + 80 * n / 300))
	Next
StopDrawing()

; le bouton
CreateImage(#Bouton, 100, 25)
StartDrawing(ImageOutput(#Bouton))
	Box(1, 1, 98, 23, $FFFFFF)
	DrawingMode(#PB_2DDrawing_Transparent)
	Texte.s = "Bonjour"
	DrawText((100 - TextWidth(Texte)) / 2, (25 - TextHeight(Texte)) / 2, Texte, $000000)
StopDrawing()
CreateImage(#Bouton_Survol, 100, 25)
StartDrawing(ImageOutput(#Bouton_Survol))
	Box(1, 1, 98, 23, $00FF00)
	DrawingMode(#PB_2DDrawing_Transparent)
	Texte.s = "Au revoir"
	DrawText((100 - TextWidth(Texte)) / 2, (25 - TextHeight(Texte)) / 2, Texte, $000000)
StopDrawing()

; Affichage
; On découpe le fond pour faire un trou pour le bouton
GrabImage(#Fond, #Fond_Decoupe_H, 0, 0, 300, 200)
GrabImage(#Fond, #Fond_Decoupe_B, 0, 225, 300, 75)
GrabImage(#Fond, #Fond_Decoupe_G, 0, 200, 100, 25)
GrabImage(#Fond, #Fond_Decoupe_D, 200, 200, 100, 25)

; Fond
ImageGadget(#Fond_Decoupe_H, 0, 0, 300, 200, ImageID(#Fond_Decoupe_H))
ImageGadget(#Fond_Decoupe_B, 0, 225, 300, 75, ImageID(#Fond_Decoupe_B))
ImageGadget(#Fond_Decoupe_G, 0, 200, 100, 25, ImageID(#Fond_Decoupe_G))
ImageGadget(#Fond_Decoupe_D, 200, 200, 100, 25, ImageID(#Fond_Decoupe_D))
; Bouton
ImageGadget(#Bouton, 100, 200, 100, 25, ImageID(#Bouton))

Repeat
	Event = WaitWindowEvent()
	
	Select Event
    Case #WM_MOUSEMOVE
      x = WindowMouseX(0)
      y = WindowMouseY(0)
      If x >= GadgetX(#Bouton) And x < GadgetX(#Bouton) + GadgetWidth(#Bouton) And y >= GadgetY(#Bouton) And y < GadgetY(#Bouton) + GadgetHeight(#Bouton)
        If Bouton_Actif = 0
          Bouton_Actif = 1
          SetGadgetState(#Bouton, ImageID(#Bouton_Survol))
        EndIf
      ElseIf Bouton_Actif
        Bouton_Actif = 0
        SetGadgetState(#Bouton, ImageID(#Bouton))
      EndIf
		Case #PB_Event_Menu
			Select EventMenu() ; Menus
					
			EndSelect
			
		Case #PB_Event_Gadget
			Select EventGadget() ; Gadgets
				Case #Bouton
					Select EventType()
						Case #PB_EventType_LeftClick
							Debug "Clic gauche sur le bouton"
					EndSelect
				Case #Fond_Decoupe_H, #Fond_Decoupe_B, #Fond_Decoupe_D, #Fond_Decoupe_G
					Select EventType()
						Case #PB_EventType_LeftClick
							Debug "Clic gauche sur le fond"
						Case #PB_EventType_RightClick
							Debug "Clic droit sur le fond"
					EndSelect
			EndSelect
	EndSelect
	
Until Event = #PB_Event_CloseWindow
après, il manque juste l'event #wm_mousemove qui n'est pas portable pour le moment.

donc totalement portable, je ferais comme cela

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Pour faire des programmes de test rapidement, il ne reste qu'a rajouter les gadgets et la gestion des évènements.

Enumeration
	#Fond
	#Fond_Decoupe_H
	#Fond_Decoupe_B
	#Fond_Decoupe_D
	#Fond_Decoupe_G
	#Bouton
  #Bouton_Survol
EndEnumeration

; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
	End
EndIf

; le fond
CreateImage(#Fond, 300, 300)
StartDrawing(ImageOutput(#Fond))
	For n = 0 To 299
		Line(0, n, 300, 0, RGB(170 + 80 * n / 300, 170 + 80 * n / 300, 170 + 80 * n / 300))
	Next
StopDrawing()

; le bouton
CreateImage(#Bouton, 100, 25)
StartDrawing(ImageOutput(#Bouton))
	Box(1, 1, 98, 23, $FFFFFF)
	DrawingMode(#PB_2DDrawing_Transparent)
	Texte.s = "Bonjour"
	DrawText((100 - TextWidth(Texte)) / 2, (25 - TextHeight(Texte)) / 2, Texte, $000000)
StopDrawing()
CreateImage(#Bouton_Survol, 100, 25)
StartDrawing(ImageOutput(#Bouton_Survol))
	Box(1, 1, 98, 23, $00FF00)
	DrawingMode(#PB_2DDrawing_Transparent)
	Texte.s = "Au revoir"
	DrawText((100 - TextWidth(Texte)) / 2, (25 - TextHeight(Texte)) / 2, Texte, $000000)
StopDrawing()

; Affichage
; On découpe le fond pour faire un trou pour le bouton
GrabImage(#Fond, #Fond_Decoupe_H, 0, 0, 300, 200)
GrabImage(#Fond, #Fond_Decoupe_B, 0, 225, 300, 75)
GrabImage(#Fond, #Fond_Decoupe_G, 0, 200, 100, 25)
GrabImage(#Fond, #Fond_Decoupe_D, 200, 200, 100, 25)

; Fond
ImageGadget(#Fond_Decoupe_H, 0, 0, 300, 200, ImageID(#Fond_Decoupe_H))
ImageGadget(#Fond_Decoupe_B, 0, 225, 300, 75, ImageID(#Fond_Decoupe_B))
ImageGadget(#Fond_Decoupe_G, 0, 200, 100, 25, ImageID(#Fond_Decoupe_G))
ImageGadget(#Fond_Decoupe_D, 200, 200, 100, 25, ImageID(#Fond_Decoupe_D))
; Bouton
ImageGadget(#Bouton, 100, 200, 100, 25, ImageID(#Bouton))

Repeat
	Event = WaitWindowEvent(50)
	
  If Souris_X <> WindowMouseX(0) Or Souris_Y <> WindowMouseY(0)
    Souris_X = WindowMouseX(0)
    Souris_Y = WindowMouseY(0)
    If Souris_X >= GadgetX(#Bouton) And Souris_X < GadgetX(#Bouton) + GadgetWidth(#Bouton) And Souris_Y >= GadgetY(#Bouton) And Souris_Y < GadgetY(#Bouton) + GadgetHeight(#Bouton)
      If Bouton_Actif = 0
        Bouton_Actif = 1
        SetGadgetState(#Bouton, ImageID(#Bouton_Survol))
      EndIf
    ElseIf Bouton_Actif
      Bouton_Actif = 0
      SetGadgetState(#Bouton, ImageID(#Bouton))
    EndIf
  EndIf
  
	Select Event
		Case #PB_Event_Gadget
			Select EventGadget() ; Gadgets
				Case #Bouton
					Select EventType()
						Case #PB_EventType_LeftClick
							Debug "Clic gauche sur le bouton"
					EndSelect
				Case #Fond_Decoupe_H, #Fond_Decoupe_B, #Fond_Decoupe_D, #Fond_Decoupe_G
					Select EventType()
						Case #PB_EventType_LeftClick
							Debug "Clic gauche sur le fond"
						Case #PB_EventType_RightClick
							Debug "Clic droit sur le fond"
					EndSelect
			EndSelect
	EndSelect
	
Until Event = #PB_Event_CloseWindow
après, il suffit de mettre tous les gadgets dans un container pour pouvoir les afficher ou les masquer d'un coup comme ce qui était demandé au début.

Je passe comme ça car le problème du fond avec un skin, c'est que les textgadget, bouton et autre ne le supporte pas bien.

Publié : sam. 04/juil./2009 12:09
par GallyHC
Bonjour Le Soldat Inconnu,

Merci je vais regarde cela.

Cordialement,
GallyHC