comment annuler un InputRequester() ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

comment annuler un InputRequester() ?

Message par comtois »

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é ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

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
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)]
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Je viens de trouver ça, sur le forum anglais:

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$)
Chris :)
Fred
Site Admin
Messages : 2652
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

En effet, je vais rajouter un bouton cancel..
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

merci de vos réponses :)
Répondre