Mettre le focus du clavier ou l'on veut dans un gadget
-
- Messages : 117
- Inscription : dim. 21/déc./2008 18:39
Mettre le focus du clavier ou l'on veut dans un gadget
Voilà, pour un de mes programmes je change le gadget actif pour un autre, mais j'aimerais que le focus du clavier se retrouve après le dernier caractère contenus dans le gadget, alors que la fonction SetActiveGadget place le focus de la souris avant le premier caractère contenus dans le gadget. Serait donc il possible de changer la position du focus clavier dans un gadget ?
http://www.purebasicstreet.com/ - Site dédié à purebasic.
Re: Mettre le focus du clavier ou l'on veut dans un gadget
Voilà une procédure qu'avait proposé LSI pour insérer du texte après le curseur.
Tu devrais pouvoir l'adapter à tes besoins.
Tu devrais pouvoir l'adapter à tes besoins.
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Modifier un texte dans un StringGadget ou un EditorGadget en partant de la position du curseur
Procedure EditeText(Gadget, Type, Text_Start.s, Text_End.s = "")
; type = 0 : Insertion de texte sur le curseur
; type = 1 : insertion de texte autour de la sélection
Protected Debut_Position, Fin_position, Texte.s, Index.l
Select GadgetType(Gadget)
Case #PB_GadgetType_String
SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position)
Texte = GetGadgetText(Gadget)
If Type = 0
Texte = Left(Texte, Debut_Position) + Text_Start + Text_End + Right(Texte, Len(Texte) - Fin_position)
Debut_Position + Len(Text_Start + Text_End)
Fin_position = Debut_Position
Else
Texte = Left(Texte, Debut_Position) + Text_Start + Mid(Texte, Debut_Position + 1, Fin_position - Debut_Position) + Text_End + Right(Texte, Len(Texte) - Fin_position)
Debut_Position + Len(Text_Start)
Fin_position + Len(Text_Start)
EndIf
SetGadgetText(Gadget, Texte)
SendMessage_(GadgetID(Gadget), #EM_SETSEL, Debut_Position, Fin_position)
SetActiveGadget(Gadget)
Case #PB_GadgetType_Editor
SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position)
For Index = 0 To CountGadgetItems(Gadget) - 1
If Texte <> ""
Texte + Chr(10)
EndIf
Texte + GetGadgetItemText(Gadget, Index)
Next
If Type = 0
Texte = Left(Texte, Debut_Position) + Text_Start + Text_End + Right(Texte, Len(Texte) - Fin_position)
Debut_Position + Len(Text_Start + Text_End)
Fin_position = Debut_Position
Else
Texte = Left(Texte, Debut_Position) + Text_Start + Mid(Texte, Debut_Position + 1, Fin_position - Debut_Position) + Text_End + Right(Texte, Len(Texte) - Fin_position)
Debut_Position + Len(Text_Start)
Fin_position + Len(Text_Start)
EndIf
SetGadgetText(Gadget, Texte)
SendMessage_(GadgetID(Gadget), #EM_SETSEL, Debut_Position, Fin_position)
SetActiveGadget(Gadget)
EndSelect
EndProcedure
; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Texte", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0
End
EndIf
StringGadget(0, 0, 0, 300, 25, "")
EditorGadget(1, 0, 30, 300, 100)
ButtonGadget(2, 0, 150, 300, 25, "Insérer le texte 'Blabla' au l'endroit du curseur")
ButtonGadget(3, 0, 175, 300, 25, "Entourer le texte sélectionné par '<b>' et '</b>'")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu
Select EventMenu() ; Menus
EndSelect
Case #PB_Event_Gadget
Select EventGadget() ; Gadgets
Case 0 ; String
Gadget_LostFocus = 0
Debug "String"
Case 1 ; Editor
Gadget_LostFocus = 1
Debug "Editor"
Case 2
Debug "Insertion"
EditeText(Gadget_LostFocus, 0, "Blabla")
Case 3
EditeText(Gadget_LostFocus, 1, "<b>", "</b>")
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
End
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 117
- Inscription : dim. 21/déc./2008 18:39
Re: Mettre le focus du clavier ou l'on veut dans un gadget
Merci, sa marche ! 

http://www.purebasicstreet.com/ - Site dédié à purebasic.
Re: Mettre le focus du clavier ou l'on veut dans un gadget
salut a tous
Pour faire simple
Pour faire simple
Code : Tout sélectionner
Procedure GestionCaret(Gadget) ; Gestion du caret dans stringGadget
SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position)
y = Debut_Position
Texte.s = GetGadgetText(Gadget)
x = Len(Texte)
Texte2.s = Left(Texte,y ) + Right(Texte,x-y)
SetGadgetText(Gadget,Texte2)
SendMessage_(GadgetID(Gadget), #EM_SETSEL, x, x)
EndProcedure