Zitat:
Wenn du hoch gehst, dann schiebst du die Maus über den Balloon.
Da reagiert natürlich das MouseOver des BalloonTipps und nicht das deiner TrackBar.
Eigentlich unmöglich!
Weil ich die Trackbar einfange.. mit SetCapture die Maus kann sich also niemals über den Balloon Tip schieben.
Habe es jetzt so gelöst.
Delphi-Quellcode:
procedure SetToolTipText(hObj: HWND; skText: PWideChar; Show: Integer; Update: Bool = False); overload;
var
hTooltip: HWND;
ti: TToolInfo;
Bol: Boolean;
begin
hTooltip := ToolTipData(0, 0);
ZeroMemory(@ti, SizeOf(TToolInfo));
Fillchar(ti, sizeof(TToolInfo), #0);
if hTooltip <> 0 then
begin
ti.cbSize := sizeof(TToolInfo);
ti.hinst := SkinEngine.skInstance;
ti.uFlags := TTF_IDISHWND or TTF_SUBCLASS;
ti.hWnd := GetParent(hObj);
ti.uId := hObj;
Bol := Length(ti.lpszText) <> 0;
ti.lpszText := PWideChar(skText);
if Bol or Update then
SendMessageW(hTooltip, TTM_ADDTOOLW, 0, LParam(@ti))
else
SendMessageW(hTooltip, TTM_UPDATETIPTEXT, 0, LParam(@ti));
SendMessageW(hTooltip, TTM_TRACKACTIVATE, Show, LParam(@ti));
SkinEngine.SetZorder(hTooltip, HWND_TOPMOST);
end;
end;
Delphi-Quellcode:
if not (TrackOrientation(WinHandle) = TRACK_HORZ) then
SetToolTipText(WinHandle, PWideChar(IntToStr(tVal)), Ord(True))
else
SetToolTipText(WinHandle, PWideChar(IntToStr(tVal)));
und in WM_LBUTTONUP
SetToolTipText(WinHandle, PWideChar(sOldTip), Ord(False))
Ob es das wahre ist mag dahingestellt sein.
Es funktioniert erst mal und der Tip wird wie vorher über der Trackbar angezeigt beim hoch und runterfahren.
TTM_TRACKPOSITION konnte ich mir sparen.
Gewonnen hat! TTM_TRACKACTIVATE.
gruss