![]() |
TBallonHint gezielt anzeigen / ausblenden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich bin dabei eine Komponente zu erstellen (Delphi 10 Seattle, Windows 10). Meine Komponente ist von TCustomControl abgeleitet. Hier mal ein Ausschnitt der Zeichenfläche: Anhang 44900 Ich möchte nun beim Überfahren bestimmter Bereiche (im Beispiel die Felder mit den unterstrichenen Zahlen) einen Hinweis anzeigen. Der Hinweis soll erscheinen, sobald sich die Maus innerhalb des Felds befindet und auch solange angezeigt werden, bis die Maus das Feld wieder verlässt. Es soll also ein Hint gezielt ein- und ausgeblendet werden. Im ersten Schritt habe ich das mal mit "Hint := HintText" und beim Verlassen mit "Application.CancelHint" versucht. Das hat grundsätzlich funktioniert. Leider war die Formatierung nicht wie gewünscht und Hinweis wurde natürlich nach einer bestimmten Zeit wieder ausgeblendet. Die globale Einstellung hierzu möchte ich aber nicht verändern. Nun habe ich einen "TBalloonHint" erstellt und diesem dem "CustomHint" der Komponente zugewiesen. Dieser wird aber beim ersten Mal gar nicht angezeigt. Die Anzeige erfolgt erst, nachdem ich die Komponente mit der Maus komplett verlassen habe und diese dann wieder auf die Fläche der Komponente bewege. Angezeigt wird der Hint dann aber immer nur am Rand der Komponente bzw. an dem Punkt, an dem die Maus beim Eintritt in die Komponentenfläche zum ersten mal erfasst wurde. Die Anzeige des Hints erfolgt in "MouseMove" und wird etwa wie folgt durchgeführt:
Delphi-Quellcode:
Das Ganze wurde auf das Wesentliche eingekürzt und sollte eigentlich selbsterklärend sein. Im Bereich ab "//show hint" habe ich schon alles Mögliche getestet. Leider hat bisher nichts zum Erfolg geführt. Ich möchte lediglich, dass der BalloonHint bei dem Feld angezeigt wird, sobald der Mauszeiger dieses berührt. Beim Verlassen des Bereichs soll der Hint dann wieder verschwinden.
procedure Txxx.MouseMove(Shift: TShiftState; X, Y: Integer);
var I: Integer; HintText: string; begin HintText := ''; if AreaAt(X, Y) = rgaDay then begin I := GetHolidayIndex(DateAt(X)); if I >= 0 then HintText := DateToStr(GetDateAt(X)) + '|' + FHolidays[I].Description; end; // show hint if HintText <> '' then begin Hint := HintText; if Assigned(CustomHint) then CustomHint.ShowHint(Mouse.CursorPos); end else if Assigned(CustomHint) then CustomHint.HideHint else Application.CancelHint; end; Hat jemand vielleicht ein "Rezept" für das gezielte ein- und ausblenden von Hints? Im Internet (und auch hier im Forum) habe ich da nichts wirklich hilfreiches gefunden. Danke schon mal für Eure Antworten. Alex |
AW: TBallonHint gezielt anzeigen / ausblenden
Ich habe sowas in der Art hier laufen. Der BalloonHint heißt bei mir
Delphi-Quellcode:
und ich speichere mir die letzte Position noch in einer Variablen
DispHint
Delphi-Quellcode:
ab. Darauf aufbauend kann ich den Hint mit zwei Methoden ein- und ausschalten.
DispHintPos: TPoint
Delphi-Quellcode:
procedure TFrEditor3DGraphic.ShowDispHint(const HintTitle, HintDescription: string; const HintPos: TPoint);
begin if (HintTitle <> DispHint.Title) or (HintDescription <> DispHint.Description) or (HintPos.X <> DispHintPos.X) or (HintPos.Y <> DispHintPos.Y) then begin DispHint.HideHint; DispHint.Title := HintTitle; DispHint.Description := HintDescription; DispHintPos := HintPos; if (Length(HintTitle) > 0) then DispHint.ShowHint(PaintBox.ClientToScreen(HintPos)); end; end; procedure TFrEditor3DGraphic.ClearHint; begin DispHint.HideHint; DispHint.Title := ''; DispHint.Description := ''; end; |
AW: TBallonHint gezielt anzeigen / ausblenden
Hallo Uwe,
funktioniert. Keine Ahnung warum das bei mir nicht ging. Hatte da schon eine ähnliche Lösung. VIELEN DANK! Alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 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