Seite 1 von 1

IPAddressGadget mit GadgetToolTip

Verfasst: 10.07.2015 11:57
von uweb
Vor ein paar Tagen habe ich getönt, dass man hier im Forum gute Chancen hat ggf. ein Workaround zu finden.
Zum Thema "IPAddressGadget mit GadgetToolTip" habe ich nichts gefunden und mich deswegen selbst daran versucht.
Da auch diese Lösung sehr einfach ist und ich mich damit nicht in Tips&Tricks traue formuliere ich es wieder einmal als Frage :
Hat jemand Verbesserungsvorschläge ?

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 IPGadgetDummy0 : If EventType() = #PB_EventType_LeftClick : SendMessage_(GadgetID(IPGadget), #IPM_SETFOCUS, 0, 0) : EndIf
          Case IPGadgetDummy1 : If EventType() = #PB_EventType_LeftClick : SendMessage_(GadgetID(IPGadget), #IPM_SETFOCUS, 1, 0) : EndIf
          Case IPGadgetDummy2 : If EventType() = #PB_EventType_LeftClick : SendMessage_(GadgetID(IPGadget), #IPM_SETFOCUS, 2, 0) : EndIf
          Case IPGadgetDummy3 : If EventType() = #PB_EventType_LeftClick : SendMessage_(GadgetID(IPGadget), #IPM_SETFOCUS, 3, 0) : EndIf
      EndSelect
  EndSelect             
Until event = #PB_Event_CloseWindow

Re: IPAddressGadget mit GadgetToolTip

Verfasst: 10.07.2015 13:02
von mhs
Beim IPAddressGadget geht doch GadgetToolTip?

Es kommt nur darauf an, wo du die Maus positionierst... :roll:

Re: IPAddressGadget mit GadgetToolTip

Verfasst: 10.07.2015 13:45
von uweb
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