Seite 1 von 2

Kurzer BalloonTip

Verfasst: 01.09.2007 23:30
von gerdra
Hallo,
habe für mein PureLOG Logbuchprogramm für jeden Button und jedes Eingabefeld einen Balloon Tip programmiert, damit, wenn ein User mit der Maus auf z.B. einen Button oder ein Feld kommt, ein Balloon mit einer kurzen Erklärung angezeigt wird.
Das funktioniert auch. Was mich aber stört ist, dass dieser Balloon Tip nur kurze zeit angezeigt wird, wenn man mit dem Mauszeiger darauf bleibt und dann nie wieder. Erst wenn man das Programm beendet und wieder startet, funktioniert der Balloon Tip wieder. Wie kann man es erreichen, dass so ein BalloonTip IMMER angezeigt wird, egal wielange man darauf verweilt?

Hier meine Balloon Tip Procedure, wie ich sie mal irgendwoher rauskopiert habe. Ich habe für dieses Programm noch die Version 3.82 verwendet.

Code: Alles auswählen

Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
  
  ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID(WindowID),0,GetModuleHandle_(0),0)
  SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),1)
  SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
  SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,300)
  Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd=GadgetID(Gadget)
  Balloon\uId=GadgetID(Gadget)
  Balloon\lpszText=@Text$
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
  If Title$ > ""
    SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
  EndIf
  
EndProcedure
code-tags ergänzt - nächstmal bitte selbst dran denken - Kaeru fecit

Verfasst: 02.09.2007 00:26
von RSBasic
@gerdra
Bitte Code-Tags benutzen.

Verfasst: 02.09.2007 00:53
von Fluid Byte
Er wird immer angezeigt. Ich habs getestet und solange die Maus auf einem Gadget ist und ich die Maus nicht bewege bleibt der BallonTip sichtbar. Diese Funktionsweise ist absolut nachvollziehbar. Alles andere wäre nervend.

Verfasst: 02.09.2007 01:37
von Sicro
Fluid Byte hat geschrieben:Er wird immer angezeigt. Ich habs getestet und solange die Maus auf einem Gadget ist und ich die Maus nicht bewege bleibt der BallonTip sichtbar.
Lass mal die Maus solange auf dem Gadget bis der BalloonTip verschwindet. Versuche danach das BalloonTip nochmal anzeigen zu lassen. Du wirst sehen, es erscheint nicht mehr.

Mfg Sicro

Verfasst: 02.09.2007 02:21
von edel
noe , passt schon , mal davon abgesehen das man ein Tool-Fenster fuer alle Ballons pro Fenster nutzt.

Code: Alles auswählen


	Procedure BalloonTip2(WindowID, Gadget, Text$ , Title$, Icon)
		Static init
		Static tooltip
		Protected  style = #WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON
		
		If init = 0
			init = 1
			ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",style,0,0,0,0,WindowID(WindowID),0,0,0)				
		EndIf 
[...]

Verfasst: 02.09.2007 20:16
von gerdra
edel hat geschrieben:noe , passt schon , mal davon abgesehen das man ein Tool-Fenster fuer alle Ballons pro Fenster nutzt.

Code: Alles auswählen


	Procedure BalloonTip2(WindowID, Gadget, Text$ , Title$, Icon)
		Static init
		Static tooltip
		Protected  style = #WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON
		
		If init = 0
			init = 1
			ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",style,0,0,0,0,WindowID(WindowID),0,0,0)				
		EndIf 
[...]


Ja, das ist es ja. Es verschwindet nach einer Weile und wenn man dann erneut aufs Gadget geht, erscheint der Balloon Tip nicht wieder. Ist das so gewollt ???

Verfasst: 02.09.2007 20:38
von gerdra
Fluid Byte hat geschrieben:Er wird immer angezeigt. Ich habs getestet und solange die Maus auf einem Gadget ist und ich die Maus nicht bewege bleibt der BallonTip sichtbar. Diese Funktionsweise ist absolut nachvollziehbar. Alles andere wäre nervend.
Komisch, bei meinem Programm ist das nicht der Fall

Verfasst: 02.09.2007 20:39
von gerdra
RSBasic hat geschrieben:@gerdra
Bitte Code-Tags benutzen.
Hallo was meinst Du mit Code Tags ?
Ich habe dieses Programm noch vor einigen Jahren in der Version 3.82 programmiert

Verfasst: 02.09.2007 20:40
von Sicro
Hallo gerdra,

für dieses Verhalten sind scheinbar die XP-Themes verantwortlich.
srod hat geschrieben:It's an xp themes thing. Try turning off the themes in the compiler options and you shouldn't get this behaviour.
In folgendem Thread des englischen Forums - woher auch das Zitat stammt - wird eine Lösung gezeigt, die auch mit aktivierten XP-Themes korrekt funktioniert:
http://www.purebasic.fr/english/viewtop ... ttsballoon

Selbst die PB-Funktion GadgetToolTip() und einige Windows-Komponenten (z.B. TrayClock, Start-Button) haben die "Macke".

Mfg Sicro

Verfasst: 02.09.2007 20:40
von Kaeru Gaman
> Hallo, was meinst Du mit Code Tags ?

diese dinger: [code] [/code]

habs oben ergänzt.
es erhöht ganz einfach die lesbarkeit. code im fließtext tut in den augen weh...