"EventHoverGadget" für PanelGadget
"EventHoverGadget" für PanelGadget
Ich habe im englischen Forum die Funktion EventHoverGadget() entdeckt, mit der man die Gadget-ID bestimmen kann, indem man mit der Maus über ein Gadget geht. Wie kann man das erreichen, wenn es sich um Gadgets in einem PanelGadget handelt?
PB 5.50; Win 7
Re: "EventHoverGadget" für PanelGadget
Hallo Berliner Angelo
Code: Alles auswählen
OpenWindow(0, 0, 0, 600, 400, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget (0, 10, 10, 100, 16, "ListIcon Standard", #PB_Text_Center)
ListIconGadget(1, 10, 35, 300, 70, "Column 1", 100)
TextGadget (2, 10, 125, 120, 16, "ListIcon with Checkbox", #PB_Text_Center)
ListIconGadget(3, 10, 150, 300, 70, "Column 1", 100, #PB_ListIcon_CheckBoxes)
ButtonGadget (4, 10, 230, 100, 20, "Add Gadget")
ButtonGadget(5, 0, 0, 0, 0, "Button 5")
ButtonGadget(6, 0, 0, 0, 0, "Button 6")
SplitterGadget(7, 400,35, 160, 125, 5, 6, #PB_Splitter_Separator)
ContainerGadget(8,400,160,160,160)
ButtonGadget(9, 0, 10, 80, 25, "Button 9")
ButtonGadget(10,0, 45, 80, 25, "Button 10")
CloseGadgetList()
If PanelGadget(11, 10, 260, 580, 100)
AddGadgetItem(11, -1, "Allgemein")
ButtonGadget(12, 10, 10, 100, 20, "Button 12", 0)
ButtonGadget(13, 120, 10, 100, 20, "Button 13", 0)
ButtonGadget(14, 230, 10, 100, 20, "Button 14", 0)
CloseGadgetList()
EndIf
Repeat
ev=WaitWindowEvent()
Select ev
Case #WM_MOUSEMOVE
GetCursorPos_ (@p.POINT)
ScreenToClient_ (WindowID(0), @p)
hGad = ChildWindowFromPoint_ (WindowID(0), p\y<< 32+p\x)
If hGad = WindowID(0)
Debug "No Gadget"
Else
gadget = GetDlgCtrlID_(hGad)
If GadgetType(gadget) = #PB_GadgetType_Splitter Or GadgetType(gadget) = #PB_GadgetType_Container
GetCursorPos_ (@p.POINT)
ScreenToClient_ (GadgetID(gadget), @p)
hGad = ChildWindowFromPoint_ (GadgetID(gadget), p\y<< 32+p\x)
ElseIf GadgetType(gadget) = #PB_GadgetType_Panel
GetCursorPos_ (@p.POINT)
hGad = GetWindow_(GadgetID(gadget), #GW_CHILD)
ScreenToClient_ (hGad, @p)
hGad = ChildWindowFromPoint_ (hGad, p\y<< 32+p\x)
If GetWindow_(GadgetID(gadget), #GW_CHILD) = hGad
hGad = GadgetID(gadget)
EndIf
EndIf
gadget = GetDlgCtrlID_(hGad)
Debug "Gadget : " + Str(gadget)
EndIf
Case #PB_Event_CloseWindow
Q = 1
EndSelect
Until Q = 1
Re: "EventHoverGadget" für PanelGadget
Da gibt es ein Modul für alle OS. Funktioniert fast perfekt.
Link: http://www.purebasic.fr/german/viewtopi ... =8&t=29047
Link: http://www.purebasic.fr/german/viewtopi ... =8&t=29047
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: "EventHoverGadget" für PanelGadget
Super! Herzlichen Dank, RSBasic - das klappt ja wunderbar.
Allerdings wenn ich das Panel-Gadget um einen zweiten Tab erweitere:
und dann auf den zweiten Tab gehe, werden die Gadget-IDs nicht richtig angezeigt (es werden die IDs der Gadgets vom ersten Tab genommen). Hast Du für diesen Fall eine Idee?
Allerdings wenn ich das Panel-Gadget um einen zweiten Tab erweitere:
Code: Alles auswählen
If PanelGadget(11, 10, 260, 580, 100)
AddGadgetItem(11, -1, "Allgemein")
ButtonGadget(12, 10, 10, 100, 20, "Button 12", 0)
ButtonGadget(13, 120, 10, 100, 20, "Button 13", 0)
ButtonGadget(14, 230, 10, 100, 20, "Button 14", 0)
AddGadgetItem(11, -1, "zweites Tab")
ButtonGadget(15, 10, 10, 100, 20, "Button 15", 0)
ButtonGadget(16, 120, 10, 100, 20, "Button 16", 0)
ButtonGadget(17, 230, 10, 100, 20, "Button 17", 0)
CloseGadgetList()
EndIf
PB 5.50; Win 7
Re: "EventHoverGadget" für PanelGadget
Code: Alles auswählen
OpenWindow(0, 0, 0, 600, 400, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget (0, 10, 10, 100, 16, "ListIcon Standard", #PB_Text_Center)
ListIconGadget(1, 10, 35, 300, 70, "Column 1", 100)
TextGadget (2, 10, 125, 120, 16, "ListIcon with Checkbox", #PB_Text_Center)
ListIconGadget(3, 10, 150, 300, 70, "Column 1", 100, #PB_ListIcon_CheckBoxes)
ButtonGadget (4, 10, 230, 100, 20, "Add Gadget")
ButtonGadget(5, 0, 0, 0, 0, "Button 5")
ButtonGadget(6, 0, 0, 0, 0, "Button 6")
SplitterGadget(7, 400,35, 160, 125, 5, 6, #PB_Splitter_Separator)
ContainerGadget(8,400,160,160,160)
ButtonGadget(9, 0, 10, 80, 25, "Button 9")
ButtonGadget(10,0, 45, 80, 25, "Button 10")
CloseGadgetList()
If PanelGadget(11, 10, 260, 580, 100)
AddGadgetItem(11, -1, "Allgemein")
ButtonGadget(12, 10, 10, 100, 20, "Button 12", 0)
ButtonGadget(13, 120, 10, 100, 20, "Button 13", 0)
ButtonGadget(14, 230, 10, 100, 20, "Button 14", 0)
AddGadgetItem(11, -1, "Erweitert")
ButtonGadget(15, 10, 10, 100, 20, "Button 15", 0)
ButtonGadget(16, 120, 10, 100, 20, "Button 16", 0)
ButtonGadget(17, 230, 10, 100, 20, "Button 17", 0)
CloseGadgetList()
EndIf
Repeat
ev=WaitWindowEvent()
Select ev
Case #WM_MOUSEMOVE
GetCursorPos_ (@p.POINT)
ScreenToClient_ (WindowID(0), @p)
hGad = ChildWindowFromPoint_ (WindowID(0), p\y<< 32+p\x)
If hGad = WindowID(0)
Debug "No Gadget"
Else
gadget = GetDlgCtrlID_(hGad)
If GadgetType(gadget) = #PB_GadgetType_Splitter Or GadgetType(gadget) = #PB_GadgetType_Container
GetCursorPos_ (@p.POINT)
ScreenToClient_ (GadgetID(gadget), @p)
hGad = ChildWindowFromPoint_ (GadgetID(gadget), p\y<< 32+p\x)
ElseIf GadgetType(gadget) = #PB_GadgetType_Panel
GetCursorPos_ (@p.POINT)
hGad = GetWindow_(GadgetID(gadget), #GW_CHILD)
For a=1 To GetGadgetState(gadget)
hGad = GetWindow_(hGad, #GW_HWNDNEXT)
Next
ScreenToClient_ (hGad, @p)
hGad = ChildWindowFromPoint_ (hGad, p\y<< 32+p\x)
If GetWindow_(GadgetID(gadget), #GW_CHILD) = ChildWindowFromPoint_ (GadgetID(gadget), p\y<< 32+p\x)
hGad = GadgetID(gadget)
EndIf
EndIf
gadget = GetDlgCtrlID_(hGad)
Debug "Gadget : " + Str(gadget)
EndIf
Case #PB_Event_CloseWindow
Q = 1
EndSelect
Until Q = 1
Re: "EventHoverGadget" für PanelGadget
Vielen Dank, RSBasic. In dieser Konfiguration funktioniert es. Aber ich habe mal die y-Koordinate der Buttons auf dem "Erweitert"-Tab verändert (auf den Wert 40):
Wenn ich das mache, wird nichts angezeigt!?
Code: Alles auswählen
ButtonGadget(15, 10, 40, 100, 20, "Button 15", 0)
ButtonGadget(16, 120, 40, 100, 20, "Button 16", 0)
ButtonGadget(17, 230, 40, 100, 20, "Button 17", 0)
PB 5.50; Win 7
Re: "EventHoverGadget" für PanelGadget
Ist die Höhe deines PanelGadgets kleiner als 40? Kannst du einen Beispielcode schreiben?
Wenn ich deinen Code in den von mir erweiterten Code einfüge und ersetze, dann werden die Buttons angezeigt, nur etwas tiefer.
Hast du in deinem Code noch irgendwas geändert?
Wenn ich deinen Code in den von mir erweiterten Code einfüge und ersetze, dann werden die Buttons angezeigt, nur etwas tiefer.
Hast du in deinem Code noch irgendwas geändert?
Re: "EventHoverGadget" für PanelGadget
Ich habe direkt Deinen Code genommen und die y-Koordinate der Buttons in "Erweitert" von 10 auf 40 erhöht. Man sieht jetzt die Buttons tiefer liegen - so wie es sein soll. Aber gehe ich mit der Maus drüber, wird keine Gadget-ID angezeigt....
PB 5.50; Win 7
Re: "EventHoverGadget" für PanelGadget
Sorry, die letzte Abfrage war nicht korrekt. Das sollte jetzt besser funktionieren:
Code: Alles auswählen
OpenWindow(0, 0, 0, 600, 400, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget (0, 10, 10, 100, 16, "ListIcon Standard", #PB_Text_Center)
ListIconGadget(1, 10, 35, 300, 70, "Column 1", 100)
TextGadget (2, 10, 125, 120, 16, "ListIcon with Checkbox", #PB_Text_Center)
ListIconGadget(3, 10, 150, 300, 70, "Column 1", 100, #PB_ListIcon_CheckBoxes)
ButtonGadget (4, 10, 230, 100, 20, "Add Gadget")
ButtonGadget(5, 0, 0, 0, 0, "Button 5")
ButtonGadget(6, 0, 0, 0, 0, "Button 6")
SplitterGadget(7, 400,35, 160, 125, 5, 6, #PB_Splitter_Separator)
ContainerGadget(8,400,160,160,160)
ButtonGadget(9, 0, 10, 80, 25, "Button 9")
ButtonGadget(10,0, 45, 80, 25, "Button 10")
CloseGadgetList()
If PanelGadget(11, 10, 260, 580, 100)
AddGadgetItem(11, -1, "Allgemein")
ButtonGadget(12, 10, 10, 100, 20, "Button 12", 0)
ButtonGadget(13, 120, 10, 100, 20, "Button 13", 0)
ButtonGadget(14, 230, 10, 100, 20, "Button 14", 0)
AddGadgetItem(11, -1, "Erweitert")
ButtonGadget(15, 10, 40, 100, 20, "Button 15", 0)
ButtonGadget(16, 120, 40, 100, 20, "Button 16", 0)
ButtonGadget(17, 230, 40, 100, 20, "Button 17", 0)
CloseGadgetList()
EndIf
Repeat
ev=WaitWindowEvent()
Select ev
Case #WM_MOUSEMOVE
GetCursorPos_ (@p.POINT)
ScreenToClient_ (WindowID(0), @p)
hGad = ChildWindowFromPoint_ (WindowID(0), p\y<< 32+p\x)
If hGad = WindowID(0)
Debug "No Gadget"
Else
gadget = GetDlgCtrlID_(hGad)
If GadgetType(gadget) = #PB_GadgetType_Splitter Or GadgetType(gadget) = #PB_GadgetType_Container
GetCursorPos_ (@p.POINT)
ScreenToClient_ (GadgetID(gadget), @p)
hGad = ChildWindowFromPoint_ (GadgetID(gadget), p\y<< 32+p\x)
ElseIf GadgetType(gadget) = #PB_GadgetType_Panel
GetCursorPos_ (@p.POINT)
hGad = GetWindow_(GadgetID(gadget), #GW_CHILD)
For a=1 To GetGadgetState(gadget)
hGad = GetWindow_(hGad, #GW_HWNDNEXT)
Next
hGad2 = hGad
ScreenToClient_ (hGad, @p)
hGad = ChildWindowFromPoint_ (hGad, p\y<< 32+p\x)
If hGad = hGad2
hGad = GadgetID(gadget)
EndIf
EndIf
gadget = GetDlgCtrlID_(hGad)
Debug "Gadget : " + Str(gadget)
EndIf
Case #PB_Event_CloseWindow
Q = 1
EndSelect
Until Q = 1
Re: "EventHoverGadget" für PanelGadget
Super, das klappt wunderbar.
Darf ich Dich noch eine allerletzte Sache fragen?? Ich würde mich riesig freuen, wenn ich das auch noch wüsste.... (dann sind wirklich alle Fragen beantwortet)
Ich habe noch einen drittes Tab mit einer ScrollArea erstellt, die wiederum drei Buttons enthält. Wie kann man deren ID herausbekommen?
Darf ich Dich noch eine allerletzte Sache fragen?? Ich würde mich riesig freuen, wenn ich das auch noch wüsste.... (dann sind wirklich alle Fragen beantwortet)
Ich habe noch einen drittes Tab mit einer ScrollArea erstellt, die wiederum drei Buttons enthält. Wie kann man deren ID herausbekommen?
Code: Alles auswählen
If PanelGadget(11, 10, 260, 580, 100)
AddGadgetItem(11, -1, "Allgemein")
ButtonGadget(12, 10, 10, 100, 20, "Button 12", 0)
ButtonGadget(13, 120, 10, 100, 20, "Button 13", 0)
ButtonGadget(14, 230, 10, 100, 20, "Button 14", 0)
AddGadgetItem(11, -1, "Erweitert")
ButtonGadget(15, 10, 40, 100, 20, "Button 15", 0)
ButtonGadget(16, 120, 40, 100, 20, "Button 16", 0)
ButtonGadget(17, 230, 40, 100, 20, "Button 17", 0)
AddGadgetItem(11, -1, "mit Scrollarea")
ScrollAreaGadget(18, 5, 5, 590, 90, 580, 85)
ButtonGadget(19, 10, 25, 100, 20, "Button 19", 0)
ButtonGadget(20, 120, 25, 100, 20, "Button 20", 0)
ButtonGadget(21, 230, 25, 100, 20, "Button 21", 0)
CloseGadgetList()
CloseGadgetList()
EndIf
PB 5.50; Win 7