Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Balloon ToolTip positions problem

  Alt 5. Mär 2017, 17:05
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

Geändert von EWeiss ( 5. Mär 2017 um 17:24 Uhr)
  Mit Zitat antworten Zitat