Wie kann ich einen Variablenwert von einer GUI zu einer anderen GUI übergeben?

  • Frage: Wie kann ich einen Variablenwert von einer GUI zu einer anderen GUI übergeben?

    Fall: Die erste gui (parent window) ist offen, eine zweite zweite gui (child window) wird geöffnet mittels einer Funktion (zweite gui ist in einer Funktion) dann wählt man über eine array eine variable aus einer ini-Datei diese kann ich auch im zweiten fenster anzeigen aber nicht im ersten (parent window).

    Da viele der GUI-spezifischen Funktionen mit dem "aktuellen" Fenster arbeiten also hier dem "zweiten Fenster/gui" (üblicherweise das zuletzt mit GUICreate erstellte Fenster) habe ich auch GUISwitch ($parentwindow) probiert. Funktioniert aber nicht?

    Für viele vielleicht eine triviale Frage. Für mich als Newbie ein stundenlanges suchen und probieren ohne Erfolg bisher...

    • Offizieller Beitrag

    Definiere die Variable als Global, dann steht sie dir überall zur Verfügung.

    [autoit]

    Global $meineVariable

    [/autoit]


    EDIT
    Wieso heißt eine Lady "nasenmann" ? :schild4:
    Achja, natürlich noch ein Herzlich Willkommen in der AutoIt-Gemeinde.

  • Zitat

    Original von BugFix
    Definiere die Variable als Global, dann steht sie dir überall zur Verfügung.

    [autoit]

    Global $meineVariable

    [/autoit]


    das gilt nur im gleichen script oder?
    wenn ich ein anderes script aufrufe, kann man da auch auf diese variable zugreifen?

    script 1

    [autoit]

    Global $test = "5"

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

    While 1
    Sleep(500)
    WEnd

    [/autoit]

    script 2

    [autoit]

    MsgBox(0,"",$test)

    [/autoit]


    das geht aber nicht.

    Doktore

  • Hi,

    ja das geht nur in einem Skript. Ansonsten müßtest du die Variable an das andere Skript übergeben.

    genau das ist jetzt meine Frage, wie mache ich das? Gibt es wo schon Beispiele?

  • Indem du Parameter übergibst

    Beispiel

    [autoit]

    #include 'Array.au3'
    #region - CmdlineSelect
    _ArrayDisplay($CMDLINE)
    If $CMDLINE[0] Then
    For $i = 1 To $CMDLINE[0]
    Select
    Case $CMDLINE[$i] = '/?'
    MsgBox(0x40000, @ScriptName & ' Help', _
    'Switches are:' & @CRLF _
    & @CRLF & '/a' _
    & @TAB & 'Skript für Parameter /a' _
    & @CRLF & '/b' _
    & @TAB & 'Skript für Parameter /b' _
    & @CRLF & '/c' _
    & @TAB & 'Skript für Parameter /c' )
    Exit
    Case $CMDLINE[$i] = '/a'
    _skript('a')
    Case $CMDLINE[$i] = '/b'
    _skript('b')
    Case $CMDLINE[$i] = '/c'
    _skript('c')
    Case Else
    MsgBox(0x40000, 'Incorrect switch used', _
    'Command used:' & @CRLF & $CMDLINERAW & @CRLF & _
    @CRLF & 'Use /? for the switches available.')
    Exit
    EndSelect
    Next
    EndIf
    #endregion

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

    Func _skript($Param)
    Switch $Param
    Case 'a'
    MsgBox(0, '', 'An das Skript wurde Parameter /a übergeben.')
    Case 'b'
    MsgBox(0, '', 'An das Skript wurde Parameter /b übergeben.')
    Case 'c'
    MsgBox(0, '', 'An das Skript wurde Parameter /c übergeben.')
    EndSwitch
    EndFunc

    [/autoit]
  • Ich glaube, da haben wir aneinander vorbeigesprochen.
    Ich habe ein Script A, dort wird von mir etwas zum Beispiel in eine InputBox geschrieben und der Inhalt natürlich in eine Vari "gespeichert".
    Beispiel: MeineMail@mail.de
    und nun wird ein zweites Script aufgerufen, wo diese Variable erneut in ein Feld füllen soll.
    Also, wie bekomme ich Variable von A nach B?
    Das meine ich.

    EDIT:
    Das Einzige was mir einfallen würde ist, dass ich eine Datei (TXT zum Beispiel) zeilenweise beschreibe und danach meine "Daten" wieder auslese.

    2 Mal editiert, zuletzt von Xethria (15. Januar 2009 um 15:10)

  • ich hab das gefühl wir reden immer noch aneinander vorbei (oder du hat nicht so ganz kapiert was $CMdLINE macht)

    Skript A

    [autoit]

    $vari = inputbox([email='MeineMail@mail.de'][/email])
    run('Skript_B -mail ' & $vari)

    [/autoit]

    Skript B

    [autoit]


    If $CMDLINE[0] = 2 Then
    If $CMDLINE[1] = '-vari' Then
    MsgBox(0, 'Mail-Adresse', 'Die übergebene Mail-Adresse ist: ' & $CMDLINE[2])
    GUICtrlCreateEdit ( $CMDLINE[2] , left, top )
    EndIf
    EndIf

    [/autoit]

    Funktioniert nicht aber damit du weisst wies läuft.