comment annuler un InputRequester() ?
comment annuler un InputRequester() ?
Lorsque j'affiche un InputRequester() , il y a un bien un bouton OK qui apparait , mais comment faire pour afficher à la fois le bouton OK et un bouton ANNULER ? et comment tester lequel est validé ?
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
si tu laisse la personne valider, c'est pas grave, il suffit de tester la réponse, soit tu avait mis une valeur par défaut et celle-ci n'a pas changer donc faire annuler ou valider n'a pas d'importance, soit la case est resté vide, et la il suffit de faire le test suivant :
if Reponse <> ""
mais c'est vrai que ce serait mieux d'avoir un bouton annuler
une autre solution serai de programmer un inputrequester toi même
if Reponse <> ""
mais c'est vrai que ce serait mieux d'avoir un bouton annuler
une autre solution serai de programmer un inputrequester toi même
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Je viens de trouver ça, sur le forum anglais:
Chris
Code : Tout sélectionner
Procedure.s InputBox(title$,prompt$,def$)
;
; Remember which window (if any) called this InputBox.
;
CallerID=WindowID() : If CallerID<>0 : CallerNum=EventWindowID() : EndIf
;
box=OpenWindow(999,0,0,357,120,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,title$)
If box=0 Or CreateGadgetList(box)=0 : ProcedureReturn "" : EndIf
;
TextGadget(996,10,8,265,73,prompt$)
ButtonGadget(997,288,8,60,23,"OK",#PB_Button_Default)
ButtonGadget(998,288,36,60,23,"Cancel")
StringGadget(999,9,92,339,20,def$,#PB_String_MultiLine|#ES_AUTOVSCROLL) ; Flags stop "ding" sounds.
SendMessage_(GadgetID(999),#EM_SETSEL,0,Len(def$)) ; Select all of def$ (if declared).
;
If CallerID<>0
EnableWindow_(CallerID,#False) ; Disable caller until our InputBox closes ("modal" effect).
EndIf
SetWindowPos_(WindowID(),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE) ; InputBox always on top.
;
GetAsyncKeyState_(#VK_RETURN) : GetAsyncKeyState_(#VK_ESCAPE) ; Clear key buffers before loop.
SetForegroundWindow_(WindowID()) : ActivateGadget(999) ; Activate InputBox and its StringGadget.
MessageBeep_(#MB_ICONQUESTION) ; Play a sound prompt for the user (not supported on Win XP!).
;
Repeat
Sleep_(1) : ev=WindowEvent() : id=EventGadgetID() : where=GetForegroundWindow_()
ret=GetAsyncKeyState_(#VK_RETURN) : esc=GetAsyncKeyState_(#VK_ESCAPE)
Until where=box And ((ev=#PB_EventGadget And (id=997 Or id=998)) Or ret=-32767 Or esc=-32767 Or ev=#PB_EventCloseWindow)
;
If id=997 Or ret=-32767 : text$=GetGadgetText(999) : EndIf ; OK clicked or Return key pressed.
;
CloseWindow(999) ; Close InputBox.
;
If CallerID<>0
EnableWindow_(CallerID,#True) ; Re-enable caller again.
SetForegroundWindow_(CallerID) ; Give focus back to caller.
UseWindow(CallerNum) ; And give event control back to caller.
While WindowEvent() : Wend ; Clear events from caller (necessary!).
EndIf
;
ProcedureReturn text$
;
EndProcedure
; Rajouté par moi : Faut pas pousser, quand même :o))
Titre$ = "Mon titre"
Message$ = "Mon Message"
TextParDefaut$ = "Mon Texte Par Defaut"
InputBox(Titre$,Message$,TextParDefaut$)