AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Balloon ToolTip positions problem

Ein Thema von EWeiss · begonnen am 5. Mär 2017 · letzter Beitrag vom 5. Mär 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Balloon ToolTip positions problem

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

Geändert von EWeiss (11. Jul 2019 um 16:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

AW: Balloon ToolTip positions problem

  Alt 5. Mär 2017, 16:49
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)
* ...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 5. Mär 2017 um 16:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#3

AW: Balloon ToolTip positions problem

  Alt 5. Mär 2017, 17:04
Kannst du denn Balloon nicht einfach links/rechts neben den vertikalen Trackbar platzieren. Rein topologisch entspricht das doch dem horizontalen Fall.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Balloon ToolTip positions problem

  Alt 5. Mär 2017, 17:10
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)
* ...
Nun ja das ist mir bekannt löst aber nicht mein Problem.

Ich bin jetzt auf diese Message gestoßen
Tut sich aber auch nichts.
Eigentlich sollte mit dem Flag TTM_TRACKPOSITION der Balloon Tip unter der Trackbar gezeichnet werden tut's aber nicht.

SetToolTipText(WinHandle, PWideChar(IntToStr(tVal)), x, -y);

Hmmmm.. vielleicht muss ich dafür den Rect vorher berechnen und diesen übergeben.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Balloon ToolTip positions problem

  Alt 5. Mär 2017, 18: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 18:24 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz