Normal siehst Du bei Buttons eine kleine gestrichelte Linie drum herum,Pure_Beginner hat geschrieben:nicht der text des buttons soll selektiert werden sondern der button selbst,
wenn man z.b. von einem button zu anderen mittels der tabtaste springt damit man erkennt wo man gerade ist![]()
hab schon einiges ausprobiert um vom meinen nun selekirten Stringgadgets auf die buttons zu springen und zu selektieren, funkioniert aber leider nicht
wenn sie aktiviert sind. Funktioniert bei mir mit XP Style angeschalten
allerdings nicht immer (ohne XP Style dagegen immer).
Probier es mal mit #BS_DEFPUSHBUTTON wie in Dialogen:
Code: Alles auswählen
Procedure myButtonProc(hWnd,msg,wParam,lParam)
gadget = GetWindowLong_(hWnd,#GWL_ID)
Select msg
Case #WM_KILLFOCUS
style = GetWindowLong_(hWnd,#GWL_STYLE)
SetWindowLong_(hWnd,#GWL_STYLE,~#BS_DEFPUSHBUTTON & style)
InvalidateRect_(hWnd,0,1)
ProcedureReturn 0
Case #WM_SETFOCUS
style = GetWindowLong_(hWnd,#GWL_STYLE)
SetWindowLong_(hWnd,#GWL_STYLE,style|#BS_DEFPUSHBUTTON)
InvalidateRect_(hWnd,0,1)
ProcedureReturn 0
EndSelect
ProcedureReturn CallWindowProc_(GetGadgetData(gadget),hWnd,msg,wParam,lParam)
EndProcedure
Procedure myButtonGadget(nr,x,y,w,h,text$,flags=0)
gadget = ButtonGadget(nr,x,y,w,h,text$,flags)
If nr<>#PB_Any
gadget=nr
EndIf
old = SetWindowLongPtr_(GadgetID(gadget),#GWLP_WNDPROC,@myButtonProc())
SetGadgetData(gadget,old)
ProcedureReturn gadget
EndProcedure
If OpenWindow(0, 0, 0, 550, 200, "ButtonGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(0, 8, 10, 306, 20, "Normal StringGadget...")
StringGadget(1, 8, 35, 306, 20, "1234567", #PB_String_Numeric)
StringGadget(2, 8, 60, 306, 20, "Readonly StringGadget", #PB_String_ReadOnly)
StringGadget(3, 8, 85, 306, 20, "lowercase...", #PB_String_LowerCase)
StringGadget(4, 8, 110, 306, 20, "uppercase...", #PB_String_UpperCase)
StringGadget(5, 8, 140, 306, 20, "Borderless StringGadget", #PB_String_BorderLess)
StringGadget(6, 8, 170, 306, 20, "Password", #PB_String_Password)
myButtonGadget(7, 330, 10, 200, 20, "Standard Button")
myButtonGadget(8, 330, 40, 200, 20, "Left Button", #PB_Button_Left)
myButtonGadget(9, 330, 70, 200, 20, "Right Button", #PB_Button_Right)
myButtonGadget(10,330,100, 200, 60, "Multiline Button (longer text gets automatically wrapped)", #PB_Button_MultiLine)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventType() = #PB_EventType_Focus
If GadgetType(EventGadget())=#PB_GadgetType_String
SendMessage_(GadgetID(EventGadget()),#EM_SETSEL,0,-1)
EndIf
EndIf
EndSelect
ForEver
EndIf