I used the InputRequester() for a search function in an EditorGadget().
I used the last search string as default value.
But when someone simply start to enter a new search text, it was appended to the old text.
To avoid this I needed that the default text is 'selected'. Then the behaviour is more 'normal'.
Code: Select all
CompilerIf Not Defined(PB_InputRequester_SelectText, #PB_Constant)
#PB_InputRequester_SelectText = 2
CompilerEndIf
; if you need crossplatform selection look here:
; https://www.purebasic.fr/english/viewtopic.php?f=13&t=51950&start=3
Procedure.s OwnInputRequester(Titel$, Message$, DefaultString$, Flags.i=0)
Protected Win.i, StringG.i, StringGFlags.i, ButtonG.i, Text$, Exit.i, Event.i, ActiveWindow.i
ActiveWindow = GetActiveWindow()
If IsWindow(ActiveWindow)
Win = OpenWindow(#PB_Any, 0, 0, 300, 110, Titel$, #PB_Window_SystemMenu|#PB_Window_WindowCentered, WindowID(ActiveWindow))
Else
Win = OpenWindow(#PB_Any, 0, 0, 300, 110, Titel$, #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
EndIf
If Win
If Flags & #PB_InputRequester_Password
StringGFlags = #PB_String_Password
EndIf
TextGadget(#PB_Any, 10, 10, 280, 20, Message$)
StringG = StringGadget(#PB_Any, 10, 35, 280, 20, DefaultString$)
If Flags & #PB_InputRequester_SelectText
SendMessage_(GadgetID(StringG), #EM_SETSEL, 0, -1)
EndIf
ButtonG = ButtonGadget(#PB_Any, 110, 70, 80, 25, "Ok")
SetActiveGadget(StringG)
AddKeyboardShortcut(Win, #PB_Shortcut_Return, 1)
AddKeyboardShortcut(Win, #PB_Shortcut_Escape, 2)
Repeat
Event = WaitWindowEvent()
If EventWindow() = Win
Select Event
Case #PB_Event_Menu
Select EventMenu()
Case 1 : PostEvent(#PB_Event_Gadget, Win, ButtonG)
Case 2 : Exit = #True
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case ButtonG
Text$ = GetGadgetText(StringG)
Exit = #True
EndSelect
Case #PB_Event_CloseWindow
Exit = #True
EndSelect
EndIf
Until Exit
CloseWindow(Win)
EndIf
ProcedureReturn Text$
EndProcedure
Search$ = OwnInputRequester("Search", "Enter your search string:", Search$, #PB_InputRequester_SelectText)
MessageRequester("Info", "Now the second search")
Search$ = OwnInputRequester("Search", "Enter your search string:", Search$, #PB_InputRequester_SelectText)