Danke für's Feedback.
Ja, klar. Aber, kann man das Lieschen Müller zumuten?
Ich habe übrigens nun auch eine Lösung für den Rechtsklick :
Code: Alles auswählen
EnableExplicit
Define IPGadgetDummy0, IPGadgetDummy1, IPGadgetDummy2, IPGadgetDummy3, IPGadget, Button, Event
#IPM_SETFOCUS = $468
OpenWindow(0, 0, 0, 160, 110, "test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateImage(0, 25, 20, 32) : StartDrawing(ImageOutput(0)) : DrawingMode(#PB_2DDrawing_AllChannels) : Box(0, 0, 25, 20, $00000000) : StopDrawing()
IPGadgetDummy0 = ImageGadget(#PB_Any, 30, 30, 25, 20, ImageID(0)) : GadgetToolTip(IPGadgetDummy0, "IPGadgetDummy_ToolTip")
IPGadgetDummy1 = ImageGadget(#PB_Any, 55, 30, 25, 20, ImageID(0)) : GadgetToolTip(IPGadgetDummy1, "IPGadgetDummy_ToolTip")
IPGadgetDummy2 = ImageGadget(#PB_Any, 80, 30, 25, 20, ImageID(0)) : GadgetToolTip(IPGadgetDummy2, "IPGadgetDummy_ToolTip")
IPGadgetDummy3 = ImageGadget(#PB_Any, 105, 30, 25, 20, ImageID(0)) : GadgetToolTip(IPGadgetDummy3, "IPGadgetDummy_ToolTip")
IPGadget = IPAddressGadget (#PB_Any, 30, 30, 100, 20) : GadgetToolTip(IPGadget, "IPGadget_ToolTip") : SetGadgetState(IPGadget, MakeIPAddress(127, 0, 0, 1))
Button = ButtonGadget (#PB_Any, 30, 60, 100, 20, "steal the focus")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case IPGadget
DisableGadget(IPGadgetDummy0, 0) : DisableGadget(IPGadgetDummy1, 0) : DisableGadget(IPGadgetDummy2, 0) : DisableGadget(IPGadgetDummy3, 0)
Case IPGadgetDummy0
If EventType() = #PB_EventType_LeftClick : SendMessage_(GadgetID(IPGadget), #IPM_SETFOCUS, 0, 0)
ElseIf EventType() = #PB_EventType_RightClick : DisableGadget(IPGadgetDummy0, 1) : mouse_event_(#MOUSEEVENTF_RIGHTDOWN,0,0,0,0) : mouse_event_(#MOUSEEVENTF_RIGHTUP,0,0,0,0)
EndIf
Case IPGadgetDummy1
If EventType() = #PB_EventType_LeftClick : SendMessage_(GadgetID(IPGadget), #IPM_SETFOCUS, 1, 0)
ElseIf EventType() = #PB_EventType_RightClick : DisableGadget(IPGadgetDummy1, 1) : mouse_event_(#MOUSEEVENTF_RIGHTDOWN,0,0,0,0) : mouse_event_(#MOUSEEVENTF_RIGHTUP,0,0,0,0)
EndIf
Case IPGadgetDummy2
If EventType() = #PB_EventType_LeftClick : SendMessage_(GadgetID(IPGadget), #IPM_SETFOCUS, 2, 0)
ElseIf EventType() = #PB_EventType_RightClick : DisableGadget(IPGadgetDummy2, 1) : mouse_event_(#MOUSEEVENTF_RIGHTDOWN,0,0,0,0) : mouse_event_(#MOUSEEVENTF_RIGHTUP,0,0,0,0)
EndIf
Case IPGadgetDummy3
If EventType() = #PB_EventType_LeftClick : SendMessage_(GadgetID(IPGadget), #IPM_SETFOCUS, 3, 0)
ElseIf EventType() = #PB_EventType_RightClick : DisableGadget(IPGadgetDummy3, 1) : mouse_event_(#MOUSEEVENTF_RIGHTDOWN,0,0,0,0) : mouse_event_(#MOUSEEVENTF_RIGHTUP,0,0,0,0)
EndIf
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow
edit
Und, da ich nicht nur den Tooltipp sondern auch das Copy&Paste so benutzerfreundlicher finde,
nun noch eine programmiererfreundliche Macro-Version :
Code: Alles auswählen
EnableExplicit
Define IPGadget, Button, Event
Macro processIPGadgetDummyNr(Nr)
Case IPGadgetDummy#Nr
If EventType() = #PB_EventType_LeftClick : SendMessage_(GadgetID(IPGadget), #IPM_SETFOCUS, Nr, 0)
ElseIf EventType() = #PB_EventType_RightClick : DisableGadget(IPGadgetDummy#Nr, 1) : mouse_event_(#MOUSEEVENTF_RIGHTDOWN,0,0,0,0) : mouse_event_(#MOUSEEVENTF_RIGHTUP,0,0,0,0)
EndIf
EndMacro
Macro processIPGadgetDummy : processIPGadgetDummyNr(0) : processIPGadgetDummyNr(1) : processIPGadgetDummyNr(2) : processIPGadgetDummyNr(3) : EndMacro
Macro disableIPGadgetDummy : DisableGadget(IPGadgetDummy0, 0) : DisableGadget(IPGadgetDummy1, 0) : DisableGadget(IPGadgetDummy2, 0) : DisableGadget(IPGadgetDummy3, 0) : EndMacro
Macro prepareIPGadgetDummy(x,y,w,h,ToolTip)
Define IPAddressImage, IPGadgetDummy0, IPGadgetDummy1, IPGadgetDummy2, IPGadgetDummy3
#IPM_SETFOCUS = $468
IPAddressImage = CreateImage(#PB_Any, w/4, h, 32) : StartDrawing(ImageOutput(IPAddressImage)) : DrawingMode(#PB_2DDrawing_AllChannels) : Box(0, 0, 25, 20, $00000000) : StopDrawing()
IPGadgetDummy0 = ImageGadget(#PB_Any, x, y, w/4, h, ImageID(IPAddressImage)) : GadgetToolTip(IPGadgetDummy0, ToolTip)
IPGadgetDummy1 = ImageGadget(#PB_Any, x+(w/4), y, w/4, h, ImageID(IPAddressImage)) : GadgetToolTip(IPGadgetDummy1, ToolTip)
IPGadgetDummy2 = ImageGadget(#PB_Any, x+(w/2), y, w/4, h, ImageID(IPAddressImage)) : GadgetToolTip(IPGadgetDummy2, ToolTip)
IPGadgetDummy3 = ImageGadget(#PB_Any, x+3*(w/4), y, w/4, h, ImageID(IPAddressImage)) : GadgetToolTip(IPGadgetDummy3, ToolTip)
EndMacro
;- main
OpenWindow(0, 0, 0, 160, 110, "test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
prepareIPGadgetDummy(30, 30, 100, 20, "IPGadgetDummy_ToolTip")
IPGadget = IPAddressGadget (#PB_Any, 30, 30, 100, 20) : GadgetToolTip(IPGadget, "IPGadget_ToolTip") : SetGadgetState(IPGadget, MakeIPAddress(127, 0, 0, 1))
Button = ButtonGadget (#PB_Any, 30, 60, 100, 20, "steal the focus")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case IPGadget
disableIPGadgetDummy
processIPGadgetDummy
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow