InputRequester Multilignes

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7405
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

InputRequester Multilignes

Message 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$
Configuration : Windows 11 Famille 64-bit - PB 6.23 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Kwai chang caine
Messages : 7067
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: InputRequester Multilignes

Message 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)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel
Répondre