Voilà ton bout de code, avec la dernère version de la procédure, et la correction d'un bug.
Code : Tout sélectionner
;*******************************************************************************
;- J'ai mis la dernière version de la procédure qui intègre le centrage du texte
;- dans la boite, et la correction d'un bug au niveau du retour de la procédure.
;*******************************************************************************
;
Enumeration
#window_0
#WinInput
EndEnumeration
Enumeration
#Btn_Cancel
#Btn_Valid
#StrInput
#TextInput
#image_0
EndEnumeration
;- Types de caractères dans le champ de saisie
#PB_InputEx_Numeric = 1 ; Saisie de chiffres uniquement
#PB_InputEx_Password = 2 ; Etoiles à la place des caractères
#PB_InputEx_LowerCase = 4 ; Tout en minuscules
#PB_InputEx_UpperCase = 8 ; Tout en majuscules
;- Types de boutons possibles.
;- Types de boutons
#PB_Button_Valid = 320 ; Bouton Valider
#PB_Button_Cancel = 1280 ; Bouton Annuler
Global Retour.s
;- Procedure
Procedure.s InputRequester_Ex(Titre.s, MsgClient.s, MsgDefaut.s, Type.l, TextAlignment.l)
Resultat = CountString(MsgClient, Chr(10))
hText = 15 * (Resultat+1)
hWinForeGround = GetForegroundWindow_()
If Type & #PB_String_Numeric : Type1 = #PB_String_Numeric : EndIf
If Type & #PB_String_Password : Type2 = #PB_String_Password : EndIf
If Type & #PB_String_UpperCase And Type & #PB_String_LowerCase
MessageRequester("Erreur","Le texte ne peut être à la fois majuscule et minuscule")
Type3 = #Null
ElseIf Type & #PB_String_LowerCase : Type3 = #PB_String_LowerCase
ElseIf Type & #PB_String_UpperCase : Type3 = #PB_String_UpperCase
EndIf
TypeString = Type1|Type2|Type3
If Type & #PB_Button_Valid : BtnOk = 1 : Else : BtnOk = 0 : EndIf
If Type & #PB_Button_Cancel : BtnNo = 1 : Else : BtnNo = 0 : EndIf
If BtnOk = 0 And BtnNo = 1
MessageRequester("Erreur","Vous ne pouvez pas avoir un bouton "+Chr(34)+"Annuler"+Chr(34)+" si vous n'avez pas le bouton "+Chr(34)+"Ok"+Chr(34))
BtnOk = 1
ElseIf BtnOk = 0 And BtnNo = 0
MessageRequester("Erreur","Vous devez avoir au moins le bouton "+Chr(34)+"Valider"+Chr(34))
BtnOk = 1
EndIf
If TextAlignment& #PB_Text_Center And TextAlignment & #PB_Text_Right
TextAlignment = #Null
EndIf
If OpenWindow(#WinInput, 0,0,300,90+(hText-20),#PB_Window_TitleBar|#PB_Window_ScreenCentered,Titre)
If CreateGadgetList(WindowID(#WinInput))
TextGadget(#TextInput, 10, 10, 280, hText, MsgClient, TextAlignment)
StringGadget(#StrInput, 10,10 +hText,280,25, MsgDefaut, TypeString)
If BtnOk And BtnNo
ButtonGadget(#Btn_Valid, (WindowWidth()/2)-105, 10 + hText+30,100,25,"Valider")
ButtonGadget(#Btn_Cancel, (WindowWidth()/2)+5, 10 + hText+30,100,25,"Annuler")
Else
ButtonGadget(#Btn_Valid, (WindowWidth()/2)-50, 10 + hText+55,100,25,"Valider")
EndIf
EndIf
EnableWindow_(hWinForeGround, #False)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadgetID()
Case #StrInput
If GetGadgetText(#StrInput)<> "" And EventType() = #PB_EventType_Focus
SendMessage_(GadgetID(#StrInput),#EM_SETSEL,0,-1)
EndIf
Case #Btn_Valid
Retour = GetGadgetText(#StrInput)
EnableWindow_(hWinForeGround, #True)
CloseWindow(#WinInput)
ProcedureReturn Retour
Case #Btn_Cancel
EnableWindow_(hWinForeGround, #True)
CloseWindow(#WinInput)
ProcedureReturn ""
EndSelect
EndSelect
ForEver
EndIf
EndProcedure
Procedure creation_Boule(ni,cr,cv,cb)
CreateImage(ni,32,32)
StartDrawing(ImageOutput())
DrawingMode(0)
If cb=255
While n<256
Circle(16-posx.f, 16-posy.f, 16-lr.f,RGB(cr+n,cv+n,cb))
posx.f=posx+0.2
posy.f=posy+0.2
lr.f=lr+0.5
n=n+8
Wend
EndIf
If cv=255
While n<256
Circle(16-posx.f, 16-posy.f, 16-lr.f,RGB(cr+n,cv,cb+n))
posx.f=posx+0.2
posy.f=posy+0.2
lr.f=lr+0.5
n=n+8
Wend
EndIf
If cr=255
While n<256
Circle(16-posx.f, 16-posy.f, 16-lr.f,RGB(cr,cv+n,cb+n))
posx.f=posx+0.2
posy.f=posy+0.2
lr.f=lr+0.5
n=n+8
Wend
EndIf
StopDrawing()
EndProcedure
Procedure dessin()
CreateImage(4,96,32)
StartDrawing(ImageOutput())
DrawImage(UseImage(1),0,0)
DrawImage(UseImage(2),32,0)
DrawImage(UseImage(3),64,0)
StopDrawing()
EndProcedure
; Création de la fenêtre et de la GadgetList
If OpenWindow(#window_0, 0, 0, 480, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Test") = 0 Or CreateGadgetList(WindowID()) = 0
End
EndIf
; On dessine les boules
creation_Boule(1,0,0,255)
creation_Boule(2,255,0,0)
creation_Boule(3,0,255,0)
; On affiche l'image
dessin()
ImageGadget(#image_0,0,0,96,32,UseImage(4))
;Delay(5000) ; J'ai retiré ça parce que j'ai pas la patience d'attendre
;Test
Ret$ = InputRequester_Ex("GoodCascade V1.0", "La partie est terminé."+Chr(10)+"La grille est vide. Bonus de 500 points."+Chr(10)+"Votre score 4050 - Classé!"+Chr(10)+" ", "", #PB_Button_Valid,#PB_Text_Center)
SetWindowTitle(#window_0,"Test - "+Ret$) ; J'ai ajouté ça, juste pour voir le résultat
;-**************************************************
;- Plus besoin de fermer la fenêtre de l'extérieur
; On ferme la fenetre d'InputRequester_Ex
;CloseWindow(#WinInput)
;- Inutile de recréer les images
;On redessine les boules
; dessin()
; ImageGadget(#image_0,0,0,96,32,UseImage(4))
; Nota : Si je ne ferme pas la fenetre d'InputRequester_Ex l'image s'affiche mais dans la fenetre d'InputRequester_Ex
;-
;-**************************************************
Repeat
Event = WaitWindowEvent()
Until Event = #PB_EventCloseWindow