Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как закрыть ToolTip? (http://forum.oszone.net/showthread.php?t=184672)

Smokie_id11243755 05-09-2010 13:03 1488883

Как закрыть ToolTip?
 
А то висит и висит пока скрипт не завершится)

madmasles 05-09-2010 13:17 1488896

Smokie_id11243755,
ToolTip('')
Код:

$timeout = TimerInit()
ToolTip('Test tooltip', 0, 0)
While 1
    If TimerDiff($timeout) >= 3000 Then
        ToolTip('')
        ExitLoop
    EndIf
    Sleep(10)
WEnd
Sleep(1000)
MsgBox(0, '', 'Нет tooltip`a')


Smokie_id11243755 05-09-2010 13:25 1488901

блин, мог бы и догадаться) спасибо

оффтоп... извиняюсь, а можно какнить сделать чтобы tooltip отображался несколько секунд и исчезал но скрипт при этом не останавливался

Creat0R 05-09-2010 15:47 1488951

Цитата:

Цитата Smokie_id11243755
а можно какнить сделать чтобы tooltip отображался несколько секунд и исчезал но скрипт при этом не останавливался »

А почему скрипт должен останавливаться?

Smokie_id11243755 05-09-2010 16:43 1488977

Код:

$timeout = TimerInit()
While 1
    If TimerDiff($timeout) >= 3000 Then
    ExitLoop


Скрипт же на 3 секунды приостанавливается при этом и продолжает действия только после закрытия тултипа, а мне бы хотелось видеть тултип секунд 30, но чтобы при этом скрипт продолжал свои действия.

И вообще показалось это можно было тупо так записать

Код:

ToolTip('Test tooltip', 0, 0)
Sleep(3000)
ToolTip('')
MsgBox(0, '', 'Нет tooltip`a')

разве есть разница?

madmasles 05-09-2010 17:37 1489021

Smokie_id11243755,
Я ведь специально не через Sleep(), а через TimerInit() - TimerDiff() сделал. Я думал, что Вы догадаетесь вставить
Код:

If TimerDiff($timeout) >= 30000 Then ToolTip('')
в нужное место Вашего кода. Я же не знаю, что Вы за программу пишете и что она делает.

Smokie_id11243755 05-09-2010 17:56 1489039

сорри
но для реализации таким способом как я понял обязательно нужен цикл... а как быть, если программа, в которую я хочу это вставить - не цикл?

Iska 05-09-2010 19:02 1489085

Вызываете ToolTip, затем сразу AdlibRegister с заданным временем показа всплывающей подсказки. В функции, указанной первым параметром в AdlibRegister(), убираете подсказку и отменяете новые вызовы функции посредством AdlibUnRegister.

Creat0R 05-09-2010 22:24 1489240

Код:

_ToolTipEx("My Tooltip", Default, Default, "Tooltip", 1, 5, 3000)

Sleep(5000)

Func _ToolTipEx($sText, $iX = Default, $iY = Default, $sTitle = Default, $iIcon = Default, $iOptions = Default, $iTimeOut = 0)
    Local $sFuncName = "_ToolTipEx"

    If @NumParams = 0 Then
        ToolTip("")
        AdlibUnRegister($sFuncName)
        Return
    EndIf

    ToolTip($sText, $iX, $iY, $sTitle, $iIcon, $iOptions)
    AdlibRegister($sFuncName, $iTimeOut)
EndFunc


madmasles 06-09-2010 07:39 1489383

Creat0R,
SciTE ругается: ERROR: _ToolTipEx() called with wrong number of args. и т.д., тем не менее функция работает и из SciTE, и скомпилированная.

Creat0R 06-09-2010 15:15 1489632

Цитата:

Цитата madmasles
SciTE ругается »

Поправил.

Yashied 06-09-2010 15:56 1489661

Если я ничего не напутал, то в AutoIt используется всего один Timer для всех AdlibRegister(). Следовательно, если в программе используется еще функции AdlibRegister(), то отсчет времени может быть неправильным. Лучше в функции AdlibRegister() проверять TimerDiff().

madmasles 06-09-2010 16:13 1489682

Smokie_id11243755,
Еще здесь посмотрите: ToolTip_UDF

Creat0R 06-09-2010 18:39 1489765

Цитата:

Цитата Yashied
если в программе используется еще функции AdlibRegister(), то отсчет времени может быть неправильным. Лучше в функции AdlibRegister() проверять TimerDiff(). »

Функция будет запущена через то время, которое указано во втором параметре «AdlibRegister», поэтому Timer тут не поможет. Если уже на то пошло, то лучше использовать _Timer_* (через callback):

Код:

#include <Timers.au3>

_ToolTipEx("My Tooltip", Default, Default, "Tooltip", 1, 5, 3000)

Sleep(5000)

Func _ToolTipEx($sText, $iX = Default, $iY = Default, $sTitle = Default, $iIcon = Default, $iOptions = Default, $iTimeOut = 0)
    ToolTip($sText, $iX, $iY, $sTitle, $iIcon, $iOptions)

    If $iTimeOut Then
        _Timer_SetTimer(0, $iTimeOut, "_ToolTipEx_Callback")
    EndIf
EndFunc

Func _ToolTipEx_Callback($hWnd, $Msg, $iIDTimer, $dwTime)
    _Timer_KillTimer($hWnd, $iIDTimer)
    ToolTip("")
EndFunc



Время: 21:05.

Время: 21:05.
© OSzone.net 2001-