Neu mit Autoit, anfängliche Probleme

  • $begruessung,

    liebe Community, ich bin 26 und habe von Autoit eigentlich nur durch Zufall kennengelernt.
    Habe Relativ gute Erfahrungen mit Qbasic/VB usw. und deshalb ist die Syntax von Autoit für mich sehr Interessant.

    Ich habe mir das Bundle heruntergeladen und Installiert (den Koda auch), nun mach ich meine ersten Schritte :)

    Doch Prompt kommen ein paar Fragen auf, die ich gerne zum Start beantwortet haben möchte^^:

    1.)
    In manchen Videotutorial´s werden auch bei der Eingabe Variablen angezeigt (in diesem QuckTool) die man dann schnell per Tab
    einfügen kann, bei mir werden aber keine $Variablen angezeigt, das gleiche gillt auch wenn ich eine Form nutze und schnell z.B auf $Button
    zugreifen möchte, Warum?

    2.)
    Ich habe mal KODA gestartet und zwei einfache Objekte erstellt (und den Code CopyPaste eingefügt), einen Button und ein Eingabefeld.
    Mein einfaches Ziel, der User soll etwas in das Eingabefeld eingeben und auf den Button klicken.
    Danach soll die Eingabe über die MSGBOX ausgegeben werden, ich habe das Intuitiv so gemacht:

    [autoit]

    Case $Button1
    Dim $eingabe
    $eingabe = $InputBox1.Text
    Msgbox(0,$eingabe)

    [/autoit]

    Doch das klappt nicht, daher die Frage, wie greife ich nun auf z.B. den Text eine Texteingabe zu (oder auch auf andere Eigenschaften)?
    Wird auf Steuerelememte immer mit Case zugegegriffen und eigene Funktionen müssen innerhalb dieses Blockes sein?
    Auf welche Ereignisse reagieren die Steuerelemente (wie z.B OnClick bei VB)?


    Würde mich sehr über eure Hilfe freuen!

    Danke!

    Einmal editiert, zuletzt von studroa (20. Dezember 2009 um 18:18)

  • Lies dir erstmal die Hilfe durch. Aber da ich nicht so einer bin, der jeden Anfänger hänge läst, helf ich dir mal ;)

    [autoit]

    $sInput = InputBox("Beispiel", "Schreibe hier was hin:")
    MsgBox(0, "Beispiel", $sInput)

    [/autoit]

    Ggf. kannst du noch die Maße von der Inputbox ändern, über die optionalen Parameter.

  • 1) Spontan fällt mir bloß dazu ein, ob du überhaupt SciTE (Direktlink) installiert hast.

    2)

    Spoiler anzeigen
    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    exit
    Case $Button1
    $eingabe=Guictrlread($button1)
    MsgBox(64,"",$eingabe)
    endSwitch
    wend

    [/autoit]


    d.h.
    Mit Guictrlread kanst du aus einer GUI sachen lesen

    Für dich könnte auch noch die Hilfeinterresant sein.

  • Hi,

    omg, mein Fehler, ich meine nicht die InputBox sondern das Element $Input aus einer Form.
    Also dieses ding hier:

    [autoit]

    $Input1 = GUICtrlCreateInput("Input1", 88, 80, 273, 21)

    [/autoit]

    Die möchte ich auslesen und z.B. auf eine Eingabe zugreifen wie in VB z.B. $Variable=$Input1.Text

  • In der Variable $Input1, steht aber schon der String drin, den du eingegeben hast, denn brauchst du nicht nochmal auf eine Variable geben, es sein denn du willst den zwischenspeichern, z.B.:

    [autoit]


    $TempInput1 = $Input1

    [/autoit]

    Ansonsten sieh dir doch mal die Hilfe an. http://www.autoit.de/dokumentation_…CreateInput.htm
    Du musst nämlich erstmal eine GUI machen, aber das siehste alles in der Hilfe.

  • Hi,

    achso.... jetzt Verstehe ich!
    Aber nun Dynamisch auf die eigenschaft "Text" eines Eigabefeldes kann man nicht zugreifen?
    Was ist nun, wenn ich den Wert in "Caption" eines Buttons ändern will? Bei VB hätte ich es ja so gemacht:
    Button.Caption="Anderer Text".

    Ich hoffe jemand versteht was ich meine :)

    Achso, das mit einer Form erstellen ist mir soweit klar :)

  • In der Variable $Input1, steht aber schon der String drin, den du eingegeben hast, denn brauchst du nicht nochmal auf eine Variable geben, es sein denn du willst den zwischenspeichern, z.B.:

    OIIINK! Rote Karte!!! In $Input1 steht eben NICHT der String. Sondern die Control ID des Input feldes.

    Du kannst das input feld einfach per GUICtrlRead() auslesen. Das gibt immer den Text aus. (und bei Checkboxen ob sie angehakt sind oder nicht)

    @studroa: Sorry dass ich so dumm Frage, aber was zur Hölle ist "Caption"?

  • Hi,

    @studroa: Sorry dass ich so dumm Frage, aber was zur Hölle ist "Caption"?

    also bei einem Button steht in der Eigenschaft "Caption" was auf dem Button stehen soll (z.B. Ok).

    Woher bekomme ich nun die Information über alle Steuerelemente (Buttons/Textfelder/Scrollfelder usw.) auf die ich
    a.) zugreifen kann
    b.) ändern kann

    Danke ^^

  • http://translate.google.de/#en|de|caption
    6. Treffer denk ich mir mal :D


    I will use Google before asking dumb questions. :rofl:


    Also den Text eines Buttons, Textfeldes, Editfeldes, Listbox Items usw. kann man IMMER mit GUICtrlRead() abfragen.
    Den Text kann man dann in den meisten Fällen mit GUICtrlSetData ändern. Da gibt es ein paar ausnahmen (zb werden in den meisten "Listen" per GUICtrlSetData Objekte hinzugefügt, aber dafür gibt es dann erweiterte Funktionen für das jeweilige Control.

    Den Status eines Elements (deaktiviert, aktiviert, versteckt, OnTop usw.) kann man mit GUICtrlGetState auslesen. Mit dem entsprechenden Gegenstückt GUICtrlSetState lassen sich verschiedene Stati (oder Staten?!, egal - ich hatte Latein, also Stati :D) auf ein Control anwenden.

    Ich hoffe da war jetzt das bei was du brauchst

  • OIIINK! Rote Karte!!! In $Input1 steht eben NICHT der String. Sondern die Control ID des Input feldes.

    Du kannst das input feld einfach per GUICtrlRead() auslesen. Das gibt immer den Text aus. (und bei Checkboxen ob sie angehakt sind oder nicht)

    @studroa: Sorry dass ich so dumm Frage, aber was zur Hölle ist "Caption"?

    Ja Danke SEuBo, hatte grad gedacht an InputBox ;) , Du hast natürlich Recht, so mach ich das ja auch immer. Aber reicht nicht eine Gelbe Karte *Dackelblick*.

    @TS: Bei dem Button kannst du von Anfang an angeben, welchen Text der haben soll.

    [autoit]

    GUICtrlCreateButton ( "text", left, top [, width [, height [, style [, exStyle]]]] )

    [/autoit]
  • Hi,

    aha, habe es jetzt gecheckt :)

    Bin halt noch voll VisualBasic-Verblödet :)

    Also brauche ich bei den Steuerelementen keinen Eventhandler angeben wie "OnClick*" oder "OnChange*" angeben, es reicht einfach
    mit Case abzufragen...?

    Also bei einem Button wird nur auf einem Klick reagiert, kann man denn auch das auch so machen, dass etwas passiert wenn
    nur der Cursor übern Button fährt? Wie lege ich das fest?

    Danke und das wars dann auch für Heute :)

  • Also brauche ich bei den Steuerelementen keinen Eventhandler angeben wie "OnClick*" oder "OnChange*" angeben, es reicht einfach
    mit Case abzufragen...?


    Ja. (Allerdings gibt es auch den OnEvent Mode, da funktioniert das GUIGetMsg() nicht, sondern du musst jedem Button mit GUICtrlSetOnEvent($Button,"Funktionsname") eine Funktion zuweisen. Aber Im Prinzip hast du Recht. Es reicht, den Button in der Hauptschleife abzufragen, um ihm einem Funktion zuzuteilen.


    kann man denn auch das auch so machen, dass etwas passiert wenn
    nur der Cursor übern Button fährt? Wie lege ich das fest?

    http://www.autoitscript.com/forum/index.php?showtopic=55120
    GUICtrlSetOnHOver UDF dürfte das einfachste sein.

    Ansonsten kannst du dir das auch selbst basteln in deiner While-Schleife mit dem Befehl GUIGetCursorInfo.

    [autoit]

    $mPos = GUIGetCursorInfo()
    If $mPos[4] = $Button Then
    ;....
    EndIf

    [/autoit]