![]() |
Balloon ToolTip positions problem
Ich erstelle einen Balloon Tooltip.
Wenn ich meine Trackbar verschiebe Horizontal wird der Tip korrekt angezeigt. Verschiebe ich aber die Vertikale habe ich Probleme wenn ich die Trackbar noch oben bewege. Nach unten funktioniert alles. Kann man bestimmen wo der Balloon Tip angezeigt werden soll? Über oder unter der Maus Position? Solange wie sich die Position des Ballon Tip über der Maus (bzw. der Trackbar) befindet funktioniert alles. EDIT: Hab mal ein paar Pics addiert Vertikal nach oben (wird kein Tip mehr angezeigt) Ich denke es liegt daran weil sich der Tip nicht unter die Trackbar beim verschieben setzen kann. gruss |
AW: Balloon ToolTip positions problem
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. * der BalloonTip darf garnicht auf Mausereignisse reagieren (quasi Durchklickbar) * der BalloonTip reicht die Ereignisse eine Ebene nach unten weiter * der BalloonTip muß halt bissl entfernt platziert werden (hilft nichts, wenn die Maus schneller verschoben wird, als er reagiert) * ... |
AW: Balloon ToolTip positions problem
Kannst du denn Balloon nicht einfach links/rechts neben den vertikalen Trackbar platzieren. Rein topologisch entspricht das doch dem horizontalen Fall.
|
AW: Balloon ToolTip positions problem
Zitat:
Ich bin jetzt auf ![]() Tut sich aber auch nichts. Eigentlich sollte mit dem Flag TTM_TRACKPOSITION der Balloon Tip unter der Trackbar gezeichnet werden tut's aber nicht.
Delphi-Quellcode:
SetToolTipText(WinHandle, PWideChar(IntToStr(tVal)), x, -y);
Hmmmm.. vielleicht muss ich dafür den Rect vorher berechnen und diesen übergeben. gruss |
AW: Balloon ToolTip positions problem
Zitat:
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:
und in WM_LBUTTONUP
if not (TrackOrientation(WinHandle) = TRACK_HORZ) then
SetToolTipText(WinHandle, PWideChar(IntToStr(tVal)), Ord(True)) else SetToolTipText(WinHandle, PWideChar(IntToStr(tVal)));
Delphi-Quellcode:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz