@TeronG:
Delphi-Quellcode:
Uses CommCtrl;
Procedure SetBalloonTip(Control: TWinControl; Const Title, Text: String; Icon: Integer = TTI_INFO);
Var H: THandle;
TI: TToolInfo;
Begin
H := CreateWindow(TOOLTIPS_CLASS, nil, WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
0, 0, 0, 0, Control.Handle, 0, HInstance, nil);
If H <> 0 Then Begin
SetWindowPos(H, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
TI.cbSize := SizeOf(TI);
TI.uFlags := TTF_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS;
TI.hwnd := Control.Handle;
TI.lpszText := PChar(Text);
GetClientRect(Control.Handle, TI.Rect);
SendMessage(H, TTM_ADDTOOL, 1, Integer(@TI));
SendMessage(H, TTM_SETTITLE, Icon, Integer(Title));
End;
End;
hab jetzt deine Variante verbaut, auch wenn ich erst versucht hatte den ToolTip direkt per Aufruf anzuzeigen und mich wunderte waru nix angezeigt wird
hab jetzt alles auf das Nötige gekürzt
- in der
Unit CommCtrl war ja schon alles enthalten und muß nicht nochmal definiert werden
- und die beiden Farben flogen auch raus ... brauch ja nur das aktuelle Windowsdesign
- OK und String gefiehl mir auch besser als dieses PChar-PWideChar-Gemischmasch
- Prozedurname geändert
Set statt
Show, denn der wird ja nur gesetzt und nicht direkt angezeigt.
Ja und es wird jetzt endlich alles schön angezeigt, ohne daß ich groß was ändern mußt