IPAddressGadget mit GadgetToolTip

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

IPAddressGadget mit GadgetToolTip

Beitrag 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
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: IPAddressGadget mit GadgetToolTip

Beitrag von mhs »

Beim IPAddressGadget geht doch GadgetToolTip?

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

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: IPAddressGadget mit GadgetToolTip

Beitrag 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
Antworten