- Offizieller Beitrag
Wenn ich z.B. aus einer Anwendung in die Zwischenablage kopiere, gebe ich i.A. per ToolTip aus: '...wurde in die Zwischenablage kopiert'. Dahinter ein Sleep, damit der User auch Zeit zum Lesen hat.
Da jeder unterschiedlich schnell liest, suchte ich nach einer möglichst einfachen Variante um den ToolTip vor Ablauf der Zeit zu killen.
Daraus ist diese Funktion entstanden.
Wird während der Tooltip-Anzeige die Maus um mehr als 10 Pixel horizontal oder vertikal bewegt, wird der Tooltip beendet.
Die Parameter sind identisch, wie bei ToolTip. Hinzugekommen ist $TIME mit Voreinstellung von 3 s.
Edit:
Irgendwas findet man immer noch zum Ändern.
Hab jetzt als Standard (wenn $x oder $y =-1), dass der Tipp an der Mausposition gezeigt wird.
_ToolTipMouseExit($TEXT, $TIME=-1, $x=-1, $y=-1, $TITLE='', $ICON=0, $OPT='')
Spoiler anzeigen
;----------------------------------------------------------------------------------------------------------------------
; Function _ToolTipMouseExit("text", [time [, x=-1 [, y=-1 [, "title" [, icon [, options]]]]]] )
;
; Description usual ToolTip, will be terminate with mouse move, latest after time
;
; Parameter same ase used by ToolTip
; if x Or y =-1 then ToolTip will be placed at mouse position
; optional $TIME default is 3000 ms
;
; Author BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
Func _ToolTipMouseExit($TEXT, $TIME=-1, $x=-1, $y=-1, $TITLE='', $ICON=0, $OPT='')
If $TIME = -1 Then $TIME = 3000
Local $start = TimerInit(), $pos0 = MouseGetPos()
If ($x = -1) Or ($y = -1) Then
ToolTip($TEXT, $pos0[0], $pos0[1], $TITLE, $ICON, $OPT)
Else
ToolTip($TEXT, $x, $y, $TITLE, $ICON, $OPT)
EndIf
Do
Sleep(50)
$pos = MouseGetPos()
Until (TimerDiff($start) > $TIME) Or _
(Abs($pos[0] - $pos0[0]) > 10 Or _
Abs($pos[1] - $pos0[1]) > 10)
ToolTip('')
EndFunc ;_ToolTipMouseExit