Page 1 sur 1

InputRequester Multilignes

Publié : ven. 13/mars/2026 14:57
par falsam
Une petite procédure InputRequester(Title$, Message$, DefaultText$, Flags=0, ParentID=0) pour saisir des données sur plusieurs lignes ou un mot de passe sur une seule ligne.

Comment ça fonctionne ?
- Une procédure InputRequesterEx(Title$, Message$, DefaultText$, Flags=0, ParentID=0)
- Une suite de macro (KCC il ne s'agit pas de maquereaux 🤪) pour overrider la fonction InputRequesterEx()

➡️ Exemple :

Code : Tout sélectionner

Define text$
text$ = InputRequester("ImputRequester multilignes", "Entrez votre texte sur plusieurs lignes :", "")
Debug text$
➡️ Le code complet avec la zone de test.

Code : Tout sélectionner

; InputRequester Multi-lignes
; 
; -Création de la fonction InputRequesterEx(Title$, Message$, DefaultText$, Flags=0, ParentID=0)
; -Override de la fonction InputRequesterEx() -> InputRequester()

; Macro pour override InputRequesterEx
Macro InputRequester(Title, Message, Default)
InputRequesterEx(Title, Message, Default, 0, 0)
EndMacro

Macro InputRequester2(Title, Message, Default, Flags)
InputRequesterEx(Title, Message, Default, Flags, 0)
EndMacro

Macro InputRequester3(Title, Message, Default, Flags, ParentID)
InputRequesterEx(Title, Message, Default, Flags, ParentID)
EndMacro

; InputRequester extend
Procedure.s InputRequesterEx(Title$, Message$, DefaultText$, Flags=0, ParentID=0)
  Protected win, gadget, ok, cancel, result$
  Protected width = 420
  Protected height
  
  If Flags & #PB_InputRequester_Password
    height = 130
  Else
    height = 260
  EndIf
  
  If ParentID
    DisableWindow(ParentID, 1)
  EndIf
  
  win = OpenWindow(#PB_Any, 0, 0, width, height, Title$,
                   #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  TextGadget(#PB_Any, 10, 10, width-20, 20, Message$)
  
  If Flags & #PB_InputRequester_Password
    
    gadget = StringGadget(#PB_Any, 10, 35, width-20, 25, DefaultText$, #PB_String_Password)
    
  Else
    
    gadget = EditorGadget(#PB_Any, 10, 35, width-20, 170)
    SetGadgetText(gadget, DefaultText$)
    
  EndIf
  
  ok     = ButtonGadget(#PB_Any, width-190, height-40, 80, 25, "OK")
  cancel = ButtonGadget(#PB_Any, width-100, height-40, 80, 25, "Annuler")
  
  SetActiveGadget(gadget)
  
  Repeat
    
    Select WaitWindowEvent()
        
      Case #PB_Event_Gadget
        
        Select EventGadget()
            
          Case ok
            result$ = GetGadgetText(gadget)
            Break
            
          Case cancel
            result$ = ""
            Break
            
        EndSelect
        
      Case #PB_Event_CloseWindow
        Break
        
    EndSelect
    
  ForEver
  
  CloseWindow(win)
  
  If ParentID
    DisableWindow(ParentID, 0)
  EndIf
  
  ProcedureReturn result$
EndProcedure

;-
;- ZONE DE TEST
Define text$
text$ = InputRequester("ImputRequester multilignes", "Entrez votre texte sur plusieurs lignes :", "")
Debug text$

Re: InputRequester Multilignes

Publié : sam. 14/mars/2026 8:48
par Kwai chang caine
Une suite de macro (KCC il ne s'agit pas de maquereaux 🤪)
:lol: :lol:
Merde... J'avais déjà sorti mes couverts :?

Sympa l'idée.. C'est trop cool ces macros... C'est un comportement étonnant comparé aux procédures auxquelles on était habitué avant leur arrivée 8O
J'hésite toujours à les utiliser... J'ai pas les "caouettes" :oops:
Rien que le fait "deux verres truquer" une vraie fonction 8O qui a acheté l'emplacement et qui est chez elle... Allez RAUS... Je squatte :mrgreen:

Fred l'avait dit c'est extrêmement puissant quand on sait les utiliser. Mais comme tout le reste pour moi :? .. C'est là qu'est l'os :mrgreen:

En fait, c'est encore un moyen de plus, à l'instar des Libs et "Outils personnels" trops géniaux pour tapisser son IDE et le rendre, rien qu'à soit 8) , d'intervenir dans les profondeurs de PureBasic sans toucher le source, merci et bravo Fred... Et Falsam bien sûr :wink:
Merci donc pour ce whatmillieme partage utile et généreux, comme beaucoup de tes créations 8)