Application type: les gestionnaires de mots de passe.
Solution simple: Comme le d&d du texte d'un champs peut ne pas être complet ou préempté par des fonctions du système, je créé une image à côté de chaque champs. C'est cette image qu'on va utiliser pour le d&d.
Au « lâché » au dessus du champs de destination, on récupère la donnée texte source et non pas l'image.
Code : Tout sélectionner
; Exemple d'utilisation du drag'n'drop
; d'une application PB vers une application externe (exemple: page web)
; (c)Marc56 02/09/16
EnableExplicit
Enumeration
#Win
#Editor_Login
#Editor_Password
#Img_Login
#Login
#Img_Password
#Password
EndEnumeration
OpenWindow(#Win, 0, 0, 600, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(#PB_Any, 10, 80, 580, 30,
"Tirez et lâchez le carré de couleur au dessus des champs de Login et Password de la page web")
; Quelques données
EditorGadget(#Editor_Login, 10, 10, 100, 25) : SetGadgetText(#Editor_Login, "My Login")
EditorGadget(#Editor_Password, 10, 40, 100, 25) : SetGadgetText(#Editor_Password, "My Password")
; Une image sert d'objet pour le drag'n'drop
CreateImage(#Img_Login, 25, 25, 32, #Blue) : ImageGadget(#Login, 120, 10, 25, 25, ImageID(#Img_Login))
CreateImage(#Img_Password, 25, 25, 32, #Yellow) : ImageGadget(#Password, 120, 40, 25, 25, ImageID(#Img_Password))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventType() = #PB_EventType_DragStart
Select EventGadget()
Case #Login
DragText(GetGadgetText(#Editor_Login), #PB_Drag_Copy)
Case #Password
DragText(GetGadgetText(#Editor_Password), #PB_Drag_Copy)
EndSelect
EndIf
EndSelect
ForEver
End
- Peu de transformations à faire sur un programme existant.
- On peut faire un Trim pour éviter les espaces et tab parfois parasites.
- On peut faire un drag d'un champs masqué.
- Fonction non toxique qui peut cohabiter avec le reste du programme.
- Le mot de passe ne passe pas par le presse-papier. (pas besoin de penser à le vider)
Assez curieusement, on peut aussi tester vers n'importe quelle application texte, mais pas vers NotePad ?