Tooltip zu einer bestimmten Zeit anzeigen
Tooltip zu einer bestimmten Zeit anzeigen
Hallo!
Bitte schlagt mich nicht nieder, wenn es schon mal vorkam, aber ich habe
mit der Suche nichts gefunden. Und zwar geht es um folgendes:
Ich möchte ein Textgadget erstellen, dass bei einem Event oder nach einer
Zeit einen Tooltip ausgibt und ihn auch wieder verschwinden lässt.
Das Gadget muss deswegen nicht aktiv sein, es soll so eine Art Infoecke
werden. Am Besten wäre es, wenn der Tooltip nicht nur der normale,
sondern der BalloonTip wäre.
Lässt sich das irgendwie realisieren?
Bitte schlagt mich nicht nieder, wenn es schon mal vorkam, aber ich habe
mit der Suche nichts gefunden. Und zwar geht es um folgendes:
Ich möchte ein Textgadget erstellen, dass bei einem Event oder nach einer
Zeit einen Tooltip ausgibt und ihn auch wieder verschwinden lässt.
Das Gadget muss deswegen nicht aktiv sein, es soll so eine Art Infoecke
werden. Am Besten wäre es, wenn der Tooltip nicht nur der normale,
sondern der BalloonTip wäre.
Lässt sich das irgendwie realisieren?
Win11 x64 | PB 6.20
-
- Beiträge: 237
- Registriert: 17.10.2008 18:24
- Kontaktdaten:
Das Problem ist, dass PB von Haus aus keine Moeglichkeit bietet, einen ToolTip fuer einen TextGadget zu zeigen (warum auch immer), heisst im Klartext: GadgetToolTip() geht bei TextGadgets nicht.
Eine einfache Loesung waere es ein Image zu erstellen und einen Text "einzumalen"... Folgender Vorschlag:
Anmerkung: Wenn du die Window-Hintergrundfarbe durch SetWindowColor() geaendert hast, dann ersetze bitte die API-Funktion GetSysColor_() durch GetWindowColor().
Jetzt kannste die Funktion zum erstellen von TextGadgets verwenden, anstelle von TextGadget() und mit GadgetToolTip() einen ToolTip erstellen.
Hier ein Beispiel:
Sobald man mit der Maus drueberfaehrt wird der Tooltip angezeigt...
Allerdings laesst sich die Darstellung des Tooltips nicht bestimmen und wird eben nur angezeigt, wenn man mit der Maus auf das Gadget faehrt.
Vielleicht hat ja jemand eine API-Loesung!
Ansonsten koennte man so einen ToolTip auch selbst basteln...
Eine einfache Loesung waere es ein Image zu erstellen und einen Text "einzumalen"... Folgender Vorschlag:
Code: Alles auswählen
Procedure CreateTextGadget(WinID, GadgetText$, x, y, FrontColor)
StartDrawing(WindowOutput(WinID))
textwidth = TextWidth(GadgetText$)
textheight = TextHeight(GadgetText$)
image = CreateImage(#PB_Any, textwidth, textheight)
StopDrawing()
StartDrawing(ImageOutput(image))
DrawText(0, 0, GadgetText$, FrontColor, GetSysColor_(#COLOR_BTNFACE))
StopDrawing()
newgadget = ImageGadget(#PB_Any, x, y, textwidth, textheight, ImageID(image))
ProcedureReturn newgadget
EndProcedure
Jetzt kannste die Funktion zum erstellen von TextGadgets verwenden, anstelle von TextGadget() und mit GadgetToolTip() einen ToolTip erstellen.
Hier ein Beispiel:
Code: Alles auswählen
OpenWindow(0, 0, 0, 200, 200, "Tool-Tip", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
CreateGadgetList(WindowID(WinID))
textgadget = CreateTextGadget(0, "Hi!", 20, 20, RGB(0, 0, 0))
GadgetToolTip(textgadget, "Text")
Repeat
Until WaitWindowEvent(1) = #PB_Event_CloseWindow
Allerdings laesst sich die Darstellung des Tooltips nicht bestimmen und wird eben nur angezeigt, wenn man mit der Maus auf das Gadget faehrt.
Vielleicht hat ja jemand eine API-Loesung!
Ansonsten koennte man so einen ToolTip auch selbst basteln...
Das geht schon nur ist das TextGadget ein StaticControl. Damit diesesDare Devil hat geschrieben:Das Problem ist, dass PB von Haus aus keine Moeglichkeit bietet, einen ToolTip fuer einen TextGadget zu zeigen (warum auch immer), heisst im Klartext: GadgetToolTip() geht bei TextGadgets nicht.
Control auch sein Tooltip erhaelt, erstellt man es mit dem Flag #ss_notify,
zumindest unter Windows.
Beispiel:
Code: Alles auswählen
EnableExplicit
Enumeration ; Window
#WINDOW_MAIN
EndEnumeration
Enumeration ; Gadget
#GADGET_TEST
EndEnumeration
#WINDOW_MAIN_CX = 400
#WINDOW_MAIN_CY = 300
#WINDOW_MAIN_TITLE = "Test"
#WINDOW_MAIN_STYLE = #PB_Window_SystemMenu
Procedure main()
Protected hwnd
Protected event
Protected header
Protected font
hwnd = OpenWindow(#WINDOW_MAIN,#PB_Ignore,#PB_Ignore,#WINDOW_MAIN_CX,#WINDOW_MAIN_CY,#WINDOW_MAIN_TITLE,#WINDOW_MAIN_STYLE)
CompilerIf #PB_Compiler_Version < 430
CreateGadgetList(hwnd)
CompilerEndIf
TextGadget(#GADGET_TEST,5,5,100,23,"BLa",#SS_NOTIFY)
GadgetToolTip(#GADGET_TEST,"Lalallaallalaaa")
Repeat
event = WaitWindowEvent()
If event = #PB_Event_CloseWindow
End
EndIf
ForEver
EndProcedure:main()
-
- Beiträge: 237
- Registriert: 17.10.2008 18:24
- Kontaktdaten:
@Dare Devil & edel: Danke, wusste nicht, dass Textgadgets keine Tooltips
haben können... das hätte die Umsetzung noch erschwert.
Aber wie kann man nun, z.B. wenn man auf einen Button klickt, machen,
dass der Tooltip angezeigt wird. Vorher soll auch beim Überfahren mit der
Maus kein Tooltip erscheinen. Eben nur dann, wenn man diesen Button
drückt.
Freue mich auf Antworten!
haben können... das hätte die Umsetzung noch erschwert.

Aber wie kann man nun, z.B. wenn man auf einen Button klickt, machen,
dass der Tooltip angezeigt wird. Vorher soll auch beim Überfahren mit der
Maus kein Tooltip erscheinen. Eben nur dann, wenn man diesen Button
drückt.
Freue mich auf Antworten!
Win11 x64 | PB 6.20
Zum löschen/verschwinden lassen des Tooltips machst du einfach einen
leeren Text als Tooltip und andernfalls (beim klicken) machst du erneuert
einen Tooltip auf dein Gadget mit dem anzuzeigenden Text.
leeren Text als Tooltip und andernfalls (beim klicken) machst du erneuert
einen Tooltip auf dein Gadget mit dem anzuzeigenden Text.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Klappt leider nicht so wie ich es mir vorgestellt hatte...
Das mit dem leeren Tooltip funktioniert, aber wenn ich den Tooltip
anzeigen lassen will wird nur der Text im Tooltip ("Informacion" ->
"Informacion 2") geändert, aber der Tooltip wird dann nicht auf dem
Button angezeigt.
Oder gehst du jetzt von den TextGadgets aus?
Code: Alles auswählen
If OpenWindow(0,5,5,300,300,"Andesdaf's Tooltip Spielchen")
ButtonGadget(1,5,5,200,50,"Hier kommt der ToolTip") And GadgetToolTip(1,"Informacion")
ButtonGadget(2,5,70,200,50,"Tooltip: Erscheine")
ButtonGadget(3,5,140,200,50,"Tooltip: Verschwinde")
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 2
GadgetToolTip(1,"Informacion 2")
Case 3
GadgetToolTip(1,"")
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
CloseWindow(0)
anzeigen lassen will wird nur der Text im Tooltip ("Informacion" ->
"Informacion 2") geändert, aber der Tooltip wird dann nicht auf dem
Button angezeigt.
Oder gehst du jetzt von den TextGadgets aus?
Win11 x64 | PB 6.20
...zumindest die And-Verknüpfung von Button und Tooltip kannst du dir
schonmal sparen.
Aber dein Vorhaben verstehe ich nicht: Der Tooltip soll also dauerhaft
angezeigt werden oder was? Denn der Tooltip wird ja wie ein normaler PB-
Tooltip angezeigt auf dem Button.
schonmal sparen.
Aber dein Vorhaben verstehe ich nicht: Der Tooltip soll also dauerhaft
angezeigt werden oder was? Denn der Tooltip wird ja wie ein normaler PB-
Tooltip angezeigt auf dem Button.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Nein, er soll nur angezeigt werden, wenn ich auf den Button (ID: 2) klicke,
und wenn ich auf den Button (ID: 3) klicke, soll er wieder verschwinden.
(verschwinden muss er nicht unbedingt, es reicht auch, wenn er nach der
normalen Zeit abhaut...)
Window wird geöffnet - kein Tooltip
Klick auf Button 2 - Tooltip anzeigen
Klick auf Button 3 - Tooltip verschwinden lassen (muss nicht sein)
Der Tooltip soll erst angezeigt werden, wenn ich auf den 2. Button klicke.
Vorher soll er nicht angezeigt werden.
auch wenn ich die Maus auf den 1. Button bewege, soll kein Tooltip ange-
zeigt werden, eben nur wenn ich auf den 2. Button klicke. Danach soll der
Tooltip wieder verschwinden und nicht mehr existieren.
Ich hoffe du verstehst mich
und wenn ich auf den Button (ID: 3) klicke, soll er wieder verschwinden.
(verschwinden muss er nicht unbedingt, es reicht auch, wenn er nach der
normalen Zeit abhaut...)
Window wird geöffnet - kein Tooltip
Klick auf Button 2 - Tooltip anzeigen
Klick auf Button 3 - Tooltip verschwinden lassen (muss nicht sein)
Der Tooltip soll erst angezeigt werden, wenn ich auf den 2. Button klicke.
Vorher soll er nicht angezeigt werden.
auch wenn ich die Maus auf den 1. Button bewege, soll kein Tooltip ange-
zeigt werden, eben nur wenn ich auf den 2. Button klicke. Danach soll der
Tooltip wieder verschwinden und nicht mehr existieren.
Ich hoffe du verstehst mich

Win11 x64 | PB 6.20
Wie wäre es dann, wenn du einfach am Anfang
> "And GadgetToolTip(1,"Informacion")"
weglässt?
Window wird geöffnet - kein Tooltip ✓
Klick auf Button 2 - Tooltip anzeigen ✓, Maus über Button 1 zeigt Tooltip
Klick auf Button 3 - Tooltip verschwinden lassen ✓, da ja dann kein Tooltip
mehr vorhanden ist und demnach auch keiner angezeigt wird.
> "And GadgetToolTip(1,"Informacion")"
weglässt?
Window wird geöffnet - kein Tooltip ✓
Klick auf Button 2 - Tooltip anzeigen ✓, Maus über Button 1 zeigt Tooltip
Klick auf Button 3 - Tooltip verschwinden lassen ✓, da ja dann kein Tooltip
mehr vorhanden ist und demnach auch keiner angezeigt wird.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld