Page 1 sur 1

Placeholder dans stringgadget (texte grisé par defaut)

Publié : mar. 24/mai/2022 17:44
par Ar-S
Salut,

Comme je m'amuse avec sqlite en ce moment, j'ai un petit formulaire.
J'ai voulu faire comme en html, à savoir avoir inscrire un texte grisé dans un champ jusqu'à ce que l'utilisateur clique dedans, un placeholder :mrgreen: .

C'est assez simple mais je trouve que cela embelli les formulaires. Si ça peu vous servir.
(Activez le DPI et décochez 'activer le support des themes pour XP' ça fait plus jolie)

Code : Tout sélectionner

Enumeration 
    #win
    #PRENOM
    #NOM
    #EMAIL
    #BT_AJOUTER
EndEnumeration

Procedure Placeholder(Gadget,mot$)
    ;Ar-S
    If EventType() = #PB_EventType_Focus And GetGadgetText(Gadget) = mot$
        SetGadgetText(Gadget,"")
        SetGadgetColor(Gadget,#PB_Gadget_FrontColor,$0)
    ElseIf EventType() = #PB_EventType_LostFocus And  GetGadgetText(Gadget) = ""
        SetGadgetColor(Gadget,#PB_Gadget_FrontColor,$AAAAAA)
        SetGadgetText(Gadget, mot$)
    EndIf    
EndProcedure


If OpenWindow(#WIN, 0, 0, 470, 180, "PlaceHolder Demo", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    
    StringGadget(#PRENOM, 55, 65, 90,20,"Prénom")
    SetGadgetColor(#Prenom,#PB_Gadget_FrontColor,$AAAAAA)
    
    StringGadget(#NOM, 193, 65, 90,20,"Nom")
    SetGadgetColor(#NOM,#PB_Gadget_FrontColor,$AAAAAA)
    
    StringGadget(#EMAIL, 333, 65, 130,20,"E-mail")
    SetGadgetColor(#EMAIL,#PB_Gadget_FrontColor,$AAAAAA)
    
    ButtonGadget(#BT_AJOUTER,2,100,WindowWidth(#win)-4,28,"Cliquer ici pour ajouter un contact")
    
    Repeat
        
        Select WaitWindowEvent()
                
            Case #PB_Event_Gadget
                Select EventGadget()
                        
                    Case #PRENOM
                        Placeholder(#PRENOM,"Prénom")
                    Case #NOM
                        Placeholder(#NOM,"Nom")
                    Case #EMAIL
                        Placeholder(#EMAIL,"E-mail")
                        
                    Case #BT_AJOUTER
                        PRENOM$ = GetGadgetText(#PRENOM)
                        NOM$ = GetGadgetText(#NOM)
                        EMAIL$ = GetGadgetText(#EMAIL)
                        ; Test pour savoir si un champ est vide ou pas. Il faut prendre en compte nos mots clés des PlaceHolder.
                        If PRENOM$ = "" Or PRENOM$ = "prenom" Or NOM$ = "" Or NOM$ = "Nom" Or EMAIL$ = "" Or EMAIL$ ="E-mail"
                            Debug "on est pas bon !"
                        Else
                            Debug "on est bon !"
                        EndIf
                EndSelect
                
            Case #PB_Event_CloseWindow
               End 
                
        EndSelect
        
    ForEver
EndIf
EnJoYeZ

Re: Placeholder dans stringgadget (texte grisé par defaut)

Publié : mar. 24/mai/2022 20:25
par Marc56
Moderne, plus visuel qu'un GadgetToolTip(), compatible tous OS, simple, intéressant, je garde de côté :D
Merci Ar-S

Re: Placeholder dans stringgadget (texte grisé par defaut)

Publié : mer. 25/mai/2022 13:06
par Shadow
Sympa, merci du partage c'est cool.

Re: Placeholder dans stringgadget (texte grisé par defaut)

Publié : jeu. 26/mai/2022 19:46
par Kwai chang caine
Super idée 8O 8)
Fallait y penser :wink:
Hop dans la hotte...ça pourra me servir, merci pour le partage 8)