GadgetToolTip
GadgetToolTip
Hallo,
ich hab ein Programm erstellt, welches keine Maus benötigt.
Nun möchte ich ein GadgetToolTip mit einem StringGadget verknüpfen.
Dabei soll der Tooltip-Text solange erscheinen, bis etwas in dem StringGadget geschrieben ist.
Wie kann ich dies ermöglichen?
ich hab ein Programm erstellt, welches keine Maus benötigt.
Nun möchte ich ein GadgetToolTip mit einem StringGadget verknüpfen.
Dabei soll der Tooltip-Text solange erscheinen, bis etwas in dem StringGadget geschrieben ist.
Wie kann ich dies ermöglichen?
Re: GadgetToolTip
mal auf die Schnelle zusammengelötet:
Geht mit Sicherheit noch eleganter, aber für die erste Gedankenanregung sollte es reichen.
Grüße ... Kiffi
Code: Alles auswählen
EnableExplicit
Define ToolTip.s, WWE
ToolTip = "Geben Sie hier etwas ein"
Enumeration
#myWindow
#myStringGadget1
#myStringGadget2
#myStringGadget3
EndEnumeration
If OpenWindow(#myWindow, #PB_Ignore, #PB_Ignore, 322, 205, "StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(#myStringGadget1, 8, 10, 306, 20, ToolTip)
StringGadget(#myStringGadget2, 8, 30, 306, 20, ToolTip)
StringGadget(#myStringGadget3, 8, 50, 306, 20, ToolTip)
SetGadgetColor(#myStringGadget1, #PB_Gadget_FrontColor, #Gray)
SetGadgetColor(#myStringGadget2, #PB_Gadget_FrontColor, #Gray)
SetGadgetColor(#myStringGadget3, #PB_Gadget_FrontColor, #Gray)
Repeat
WWE = WaitWindowEvent()
Select WWE
Case #PB_Event_Gadget
Select EventGadget()
Case #myStringGadget1, #myStringGadget2, #myStringGadget3
Select EventType()
Case #PB_EventType_Focus
If GetGadgetText(EventGadget()) = ToolTip
SetGadgetText(EventGadget(), "")
EndIf
SetGadgetColor(EventGadget(), #PB_Gadget_FrontColor, #Black)
Case #PB_EventType_LostFocus
If GetGadgetText(EventGadget()) = ""
SetGadgetText(EventGadget(), ToolTip)
EndIf
If GetGadgetText(EventGadget()) = ToolTip
SetGadgetColor(EventGadget(), #PB_Gadget_FrontColor, #Gray)
EndIf
EndSelect
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
Grüße ... Kiffi
a²+b²=mc²
Re: GadgetToolTip
Danke für die rasche Antwort.
Bei mir ist es so, dass das StringGadget ständig aktiv ist (Cursor blinkt).
Wäre hier ein ToolTip evl eleganter?
Bei mir ist es so, dass das StringGadget ständig aktiv ist (Cursor blinkt).
Wäre hier ein ToolTip evl eleganter?
Re: GadgetToolTip
wie wäre es hiermit?Mr.Vain hat geschrieben:Wäre hier ein ToolTip evl eleganter?
Code: Alles auswählen
EnableExplicit
Enumeration
#myWindow
#myStringGadget
#myToolTip
EndEnumeration
If OpenWindow(#myWindow, #PB_Ignore, #PB_Ignore, 322, 205, "StringGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(#myStringGadget, 8, 10, 306, 20, "")
TextGadget(#myToolTip, 8, 30, 306, 20, "Eingabe erforderlich")
SetGadgetColor(#myToolTip, #PB_Gadget_FrontColor, #Red)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #myStringGadget
Select EventType()
Case #PB_EventType_Change
If GetGadgetText(#myStringGadget) = ""
HideGadget(#myToolTip, #False)
Else
HideGadget(#myToolTip, #True)
EndIf
EndSelect
EndSelect
Case #PB_Event_CloseWindow : Break
EndSelect
ForEver
EndIf
Kannst Du vielleicht eine kleine Skizze oder einen Screenshot erstellen, damit
Dein Vorhaben ein wenig klarer für uns wird?
Grüße ... Kiffi
a²+b²=mc²
Re: GadgetToolTip
Es ist ein Programm mit einer Suchmaske.
D.H. das StringGadget ist immer aktiv. Hier muss ein Name eingetragen werden.
Unten wird dann eine Liste mit den Ergebnissen angezeigt.
Das Problem ist, dass immer der Nachname der Person eingetragen werden soll. Dies möchte ich verdeutlichen (evl. durch Sprechblase). Eine ist hier nicht angeschlossen.
D.H. das StringGadget ist immer aktiv. Hier muss ein Name eingetragen werden.
Unten wird dann eine Liste mit den Ergebnissen angezeigt.
Das Problem ist, dass immer der Nachname der Person eingetragen werden soll. Dies möchte ich verdeutlichen (evl. durch Sprechblase). Eine ist hier nicht angeschlossen.
Re: GadgetToolTip
Wie wäre es hiermit?
Code: Alles auswählen
Procedure StringGadgetCue(GadgetNr, Text.s)
CompilerIf #PB_Compiler_Unicode = #True ; Funktioniert nur mit Unicode (und XP-Style)
SendMessage_(GadgetID(GadgetNr), #EM_SETCUEBANNER, #False, @Text)
CompilerEndIf
EndProcedure
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 40, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(1, 10, 10, 180, 20, "")
StringGadgetCue(1, "Nachname eingeben...")
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
"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
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: GadgetToolTip
Was habt Ihr alle für Probleme mit Unicode, man kann doch in PB alles wandeln:
Jetzt ist es egal ob uni oder ansi.
Code: Alles auswählen
Procedure StringGadgetCue(GadgetNr, Text.s)
Protected *mem = AllocateMemory(StringByteLength(Text, #PB_Unicode) + 2)
PokeS(*mem, Text, -1, #PB_Unicode)
SendMessage_(GadgetID(GadgetNr), #EM_SETCUEBANNER, #False, *mem)
FreeMemory(*mem)
EndProcedure
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 40, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(1, 10, 10, 180, 20, "")
StringGadgetCue(1, "Nachname eingeben...")
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: GadgetToolTip
danke, werds gleich mal probieren. Hab allerdings noch PB 4.50 drauf... muss ma eben updatenc4s hat geschrieben:Wie wäre es hiermit?Code: Alles auswählen
Procedure StringGadgetCue(GadgetNr, Text.s) CompilerIf #PB_Compiler_Unicode = #True ; Funktioniert nur mit Unicode (und XP-Style) SendMessage_(GadgetID(GadgetNr), #EM_SETCUEBANNER, #False, @Text) CompilerEndIf EndProcedure If OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 40, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) StringGadget(1, 10, 10, 180, 20, "") StringGadgetCue(1, "Nachname eingeben...") Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf

Re: GadgetToolTip
Hab's jetzt getestet - sieht auch gut aus.
Jedoch hab ich auch hier das Problem, dass der Text weg ist, sobald ich das Gadget aktiviere.
In meinem Programm ist das Gadget stets aktiviert (blinkender Cursor) - ich denke, dass ich hier dann wohl einfach nen TextGadget nehmen muss...
Jedoch hab ich auch hier das Problem, dass der Text weg ist, sobald ich das Gadget aktiviere.
In meinem Programm ist das Gadget stets aktiviert (blinkender Cursor) - ich denke, dass ich hier dann wohl einfach nen TextGadget nehmen muss...
Re: GadgetToolTip
#EM_SETCUEBANNER: Das imitiert mein erster Code. Und das sogar plattformunabhängig 
Grüße ... Kiffi

Grüße ... Kiffi
a²+b²=mc²