GuiCtrlSetTip in einer While-Schleife...

  • ...funktioniert nicht. Aber warum?

    Wenn Ihr folgendes Beispielscript unverändert startet, wird VOR der while-schleife ein ctrl-tip angelegt, der funktioniert auch. wenn ihr nun das kommentar-semikolon aus der while-schleife nehmt, wo der ctrl-tip zu "in-while" geändert wird, erscheint nun garkein text mehr. wo ist der fehler? kann es nicht nachvollziehen.

    [autoit]

    #include <GUIConstantsEx.au3>
    Opt('MustDeclareVars', 1)
    Example()
    Func Example()
    Local $Button_1, $Button_2, $msg
    GUICreate("My GUI Button")

    [/autoit][autoit][/autoit][autoit]

    Opt("GUICoordMode", 2)
    $Button_2 = GUICtrlCreateButton("Button Test", 0, -1)
    GUICtrlSetTip($Button_2, "test")
    GUISetState()
    While 1
    sleep(20)
    ;GUICtrlSetTip($Button_2, "in-while")
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von andygo (7. Oktober 2010 um 22:53)

  • Hi!

    Die While schleife ist zu Schnell für GUICtrlSetTip($Button_2, "in-while") wenn du den Sleep erhöst kannst du aber das Skript nicht mehr abbrechen!
    Warum willst du in der While immer und immer wieder ein und den selben wert setzen?

    LG Kleiner

  • hallo,

    die lösung habe ich im englischsprachigen forum erhalten.
    trotzdem danke für die antwort .)
    komischer weise funktioniert es mit maus-tips einwandfrei.
    also mit tooltip. da scheint die methode nicht zu schnell.

    http://www.autoitscript.com/forum/index.php?showtopic=120605&st=0&gopid=837964&#entry837964

    mit der while-schleife will ich im konkreten fall die zwischenablage auslesen und falls sich darin eine url befindet diese als tip auf ein button legen.

  • hi nochmal,

    ich hab nun ne noch bessere lösung gefunden. die braucht keinen timer und es flackert auch nichts:

    [autoit]

    #include <GUIConstantsEx.au3>
    Opt('MustDeclareVars', 1)
    Example()
    Func Example()
    Local $Button_1, $Button_2, $msg, $temptip = ""
    GUICreate("My GUI Button")
    Opt("GUICoordMode", 2)
    $Button_2 = GUICtrlCreateButton("Button Test", 0, -1)
    GUICtrlSetTip($Button_2, "test")
    GUISetState()
    While 1
    if Stringleft(ClipGet(), 7) = "http://" then
    if GUICtrlGetState($Button_2) = 144 or $temptip <> clipget() then
    $temptip = clipget()
    GUICtrlSetState ( $Button_2, $GUI_ENABLE )
    GUICtrlSetTip ( $Button_2, clipget())
    endif
    Else
    if GUICtrlGetState($Button_2) = 80 then
    GUICtrlSetState ( $Button_2, $GUI_DISABLE )
    GUICtrlSetTip ( $Button_2, "")
    endif
    endif
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd
    EndFunc

    [/autoit]

    so läufts wie ich will.