TAB an GUI Feld senden

  • Hallo

    ich habe eine GUI erstellt für eine Adresseingabe Beispiel:

    $FELD5 = GUICtrlCreateInput("Postleitzahl", 125, 125, 300, 20)

    Klappt auch gut, ich kann sogar abfragen ob sich die Postleitzahl geändert hat und wenn nicht eine Fehlermeldung bringen.
    Jetzt möchte ich das Postleitzahl Feld markieren, so als würde man mit einem Tab darauf wechseln.

    Entweder ein Anzahl Tabs bis das Feld hinterlegt ist senden
    oder das Feld direkt ansprechen.

    Aber guictrltab oder guisendtab?
    Ich finde einfach nicht den richtigen Befehl.
    Wo muß ich suchen?

    viele Grüße
    Jörg

    Einmal editiert, zuletzt von joerg8051 (12. August 2011 um 19:46) aus folgendem Grund: Als gelöst markiert

  • Mit

    [autoit]

    ControlClick()

    [/autoit]

    würde es das selbe tun wie mit

    [autoit]

    ControlFocus()

    [/autoit]
  • Du möchtest also mit nem Befehl den Inhalt einer INputbox markieren?
    Wenn ja, dann hab ich das hier:

    Spoiler anzeigen
    [autoit]

    GUICreate("", 220, 70)
    $Input1 = GUICtrlCreateInput("", 10, 10, 200, 20)
    $button = GUICtrlCreateButton("Markieren", 10, 35, 200, 20)
    GUISetState()
    while 1
    $msg = GUIGetMsg()
    Select
    case $msg = $button
    send("{TAB}")
    case $msg = -3; -3 ist das selbe wie $GUI_EVENT_CLOSE also wenn das Kreuz gedrückt wurde
    Exit
    EndSelect
    WEnd

    [/autoit]


    Wenn nein, dann beschreib nochmal dein Problem.

    mfg
    Hauke

  • Hallo

    danke für die schnelle Hilfe

    So hatte ich es zuerst:

    Spoiler anzeigen


    ....
    $VORNAME = GUICtrlRead($FELD2)
    $WAS = $VORNAME
    $N = 3
    If $VORNAME = "Vorname" Then Aendern()
    ....

    Func Aendern()
    MsgBox(0, "Bitte ändern:", ($WAS))
    WinActivate ( "Adresskopierer" )
    WinWaitActive ( "Adresskopierer" )
    For $I = 1 To $N
    Send("{TAB}")
    Next

    EndFunc

    klappte ganz gut, aber eleganter ist:

    Spoiler anzeigen


    ....
    $VORNAME = GUICtrlRead($FELD2)
    $WAS = $VORNAME
    $N = 3
    If $VORNAME = "Vorname" Then Aendern()
    ....
    If $N =3 Then ControlFocus ( "Adresskopierer", "Vorname", "Edit2" )
    If $N =4 Then ControlFocus ( "Adresskopierer", "Nachname", "Edit3" )
    If $N =5 Then ControlFocus ( "Adresskopierer", "Straße mit HSNR", "Edit4" )
    If $N =6 Then ControlFocus ( "Adresskopierer", "PLZ", "Edit5" )
    If $N =7 Then ControlFocus ( "Adresskopierer", "ORT", "Edit6" )
    .........

    Was ich die ganze Zeit völlig übersehen habe ist, daß ein GUI ja "auch" ein normales Fenster ist und nicht jeder Befehl zwingend ...GUI..... enthalten muß

    Aber so ist das eben als Anfänger

    viele Grüße
    jörg

  • Joa, geht wohl, aber wenn du irgendwann ( evt. auch in anderen Scripten ) mehr als 10 Inputfelder oder so hast, wird es schwierig, deshalb, kann man da am besten mit arrays arbeiten:

    [autoit]

    For $i = 1 To 10
    $Input[$i] = GUICtrlCreateInput("", $x, $x, $w, $h)
    $x += 30
    Next
    ;...
    If $VORNAME = "Vorname" Then Aendern()
    ;...
    func Aendern()
    For $i = 1 To 10
    $Input_Read[$i] = GUICtrlRead($Input[$i])
    if $N = $i Then ControlFocus("Adresskopierer", "", $Input[$i])
    Next
    EndFunc

    [/autoit]


    Somit hast du Erstellung und auslesung in 7 Zeilen.

    Ich hoffe so geht es in deinem Script dann auch, ist halt übersichtlicher.

    mfg
    Hauke