![]() |
AW: HintPause in FireMonkey?
Zitat:
Und, wie gesagt, das ist nur für Windows ... Android, iOS, OSX usw. nutzen ein anderes Backend. :stupid: |
AW: HintPause in FireMonkey?
Liste der Anhänge anzeigen (Anzahl: 1)
Hmmmm, gibt es überhaupt einen Timeout?
[edit] Ups, falschrum ... HintPause, nicht HidePause. Außerdem hab ich vergessen Max hochzusetzen :oops: Und Vcl.Forms.Application.HintPause und .HintHidePause haben eh keine Wirkung. :cry: [/edit] Bei mir werden die Hints ewig angezeigt, und bei ControlType=Platform werden garkeine Hints angezeigt. |
AW: HintPause in FireMonkey?
Unter Windows wird direkt die WinAPI benutzt.
Hab gesehn, dass der Hint ein tooltips_class32 ist, also im Code danach gesucht und gefunden. :angle2:
Delphi-Quellcode:
Die Wrapper-Klasse dazu hat auch nicht viele oder komplizierte Funkionen.
unit FMX.Controls.Win;
const TOOLTIPS_CLASS = 'tooltips_class32'; constructor TWindowsHint.Create(const AHandle: TWindowHandle); var LToolInfo: TOOLINFO; begin inherited; FWindowHandle := AHandle; FNativeControlHandle := WindowHandleToPlatform(AHandle).Wnd; if FNativeControlHandle <> 0 then begin FToolTipHandle := CreateWindowEx(0, TOOLTIPS_CLASS, nil, WS_POPUP or TTS_ALWAYSTIP, 0, 0, 300, 300, FNativeControlHandle, 0, hInstance, nil); SetWindowPos(FToolTipHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE); FillChar(LToolInfo, SizeOf(TOOLINFO), 0); LToolInfo.cbSize := SizeOf(TOOLINFO); LToolInfo.uFlags := TTF_SUBCLASS or TTF_IDISHWND or TTF_PARSELINKS; LToolInfo.hinst := hInstance; LToolInfo.hwnd := FNativeControlHandle; LToolInfo.uId := FNativeControlHandle; LToolInfo.lpszText := nil; SendMessage(FToolTipHandle, TTM_ADDTOOL, 0, LPARAM(@LToolInfo)); SendMessage(FToolTipHandle, TTM_ACTIVATE, NativeInt(False), LPARAM(@LToolInfo)); end; end; Also weiter siehe Hilfe: ![]() Es läuft ein WM_TIMER, welcher für's Anzeigen und Ausblenden zuständig ist. (den könnte man vielleicht manipulieren) Tja, TTM_SETDELAYTIME :stupid: ![]() Jetzt mußt du nur noch rausbekommen, wie du an dessen Handle kommst. Oder an den Systemeinstellungen rumpfuschen ... siehe Remarks :lol: |
AW: HintPause in FireMonkey?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Delphi-Quellcode:
Die Function "CountLinebreaks" sieht so aus (da gibt es wohl gar nichts fertiges in Delphi?):
if pos (slinebreak, lab.Text) <> 0 then begin
ACallhint.Height := ACallHint.Height + (CountLineBreaks (lab.Text) * lab.canvas.textheight ('T')); end;
Delphi-Quellcode:
function CountLinebreaks (S: string): Integer;
var start: Integer; begin Result := 0; start := 1; while pos (sLineBreak, s, start) <> 0 do begin Inc (Result); start := pos (sLineBreak, s, start) + 2; end; end; Wenn Dein Button hint, also so erstellt wurde:
Delphi-Quellcode:
sieht das Ergebnis dann wie im anliegenden Screenshot gezeigt aus.
button1.Hint := 'Zeile 1 ' + sLineBreak + 'Zeile 2 ' + slinebreak + 'Zeile 3';
Um diesen Fall der evtl. Gestaltung der Hints zu berücksichtigen baue ich das auch noch in meine Unit ein und lade die aktualisierte Fassung noch mal hoch. Ich glaube ich habe noch nicht erwähnt, dass die Unit sowohl unter Windows, als auch unter Linux und MacOS funktioniert. |
AW: HintPause in FireMonkey?
Das findet anscheinend zentral in FMX.Forms.TApplication statt.
Delphi-Quellcode:
Man könnte schlimmstenfalls OnHint abfangen und da seinen eigenen Timer laufen lassen,
/// <summary>Cancels the display of a hint for a control.</summary>
procedure CancelHint; /// <summary>Hides the current hint.</summary> procedure HideHint; /// <summary>Occurs when the mouse pointer moves over a control or menu item that can display a Help Hint.</summary> property OnHint: TNotifyEvent read FOnHint write FOnHint; der den Hint dann mit CancelHint oder HideHint brutal abbricht. |
AW: HintPause in FireMonkey?
hmmmm. finde ich irgendwie alles nicht prickelnd - und die unit von harry, ok, aber zb bei einem groesseren memo - da geht der hint auf, wo die maus gerade ist... ich moechte eigtl. auch ungern "fremde" units in meinen progs und was aufzublaehen, was im kern da ist - nee, will ich auch nicht. ausserdem bauen viele externe kompos auf der "normalen" hint-logik auf - und da will ich nix veraendern.
ich dachte halt, es gibt da etwas, analog zur vcl - und das unter allen bs laeuft. naja, muessen die leute halt schneller lesen :( tks in die runde... ...de Schorsch |
AW: HintPause in FireMonkey?
Zitat:
oder die HintHidePause (Dauer der Anzeige) :?: Wie schon gesagt, bleibt bei mir (im Windows) der Hint scheinbar unbegrenzt lange sichtbar. |
AW: HintPause in FireMonkey?
HintHidePause (Dauer der Anzeige)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 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