Gui für ein Tool

  • Durch diese Änderung ist ein anderes Problem aufgetreten:
    Das gui lässt sich nicht auf Englisch zurüchstellen.
    Wie lässt sich dieses Problem beheben?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <Misc.au3>

    Opt("GUIOnEventMode", 1)

    Global $arControl[21], $Switch = 0
    Global $INIPath = @ScriptDir & '\sys\Language1.ini'
    Global $arTitleEN = IniReadSection($INIPath, 'EN')
    Global $arTitleDE = IniReadSection($INIPath, 'DE')
    Global $DisWidth = @DesktopWidth
    Global $DisHeight = @DesktopHeight
    $i=0

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

    If StringInStr("0407,0807,0c07,1007,1407", @OSLang) Then
    $OSLanguage="German"
    Else
    $OSLanguage="English"
    EndIf

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


    $arControl[0] = GUICreate ("English",270,300,$DisWidth-270,$DisHeight-300,$WS_POPUP, $WS_EX_TOPMOST)
    $BHide = GUICtrlCreateButton("Hide (Home)", 40, 265, 75, 25, 0) Or _IsPressed (24)
    GUICtrlSetOnEvent(-1, "Hide")
    $Exit = GUICtrlCreateButton("Exit (End)", 140, 265, 75, 25, 0) Or _IsPressed (23)
    GUICtrlSetOnEvent(-1, "Exit2")
    $BInput = GUICtrlCreateButton("Save", 130, 50)
    GUISetState()
    $Input = GUICtrlCreateInput ("Name", 30, 50,60,20)
    GUICtrlSetOnEvent(-1, "Save")
    $Section = IniReadSection ("Data.ini",$Input)
    $data = "key1=val1" & @LF & "key2=val2" & @LF & "key3=val3"

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

    $arControl[1] = GUICtrlCreateMenu("File")
    GUICtrlSetOnEvent(-1, "menuFileClick")
    $arControl[2] = GUICtrlCreateMenu ("Load settings",$arControl[1])
    $arControl[3] = GUICtrlCreateMenuItem ("Reset",$arControl[1])
    $arControl[4] = GUICtrlCreateMenuItem ("Exit",$arControl[1])
    GUICtrlSetOnEvent(-1, "menuExitClick")

    $arControl[5] = GUICtrlCreateMenu ("Functions")
    GUICtrlSetOnEvent(-1, "menuFuncClick")
    $arControl[6] = GUICtrlCreateMenuItem ("Ba",$arControl[5])
    $arControl[7] = GUICtrlCreateMenuItem ("Hea",$arControl[5])
    $arControl[8] = GUICtrlCreateMenuItem ("StoHea",$arControl[5])
    $arControl[9] = GUICtrlCreateMenuItem ("Sle",$arControl[5])
    $arControl[10] = GUICtrlCreateMenuItem ("Ka",$arControl[5])
    $arControl[11] = GUICtrlCreateMenuItem ("Ex",$arControl[5])

    $arControl[12] = GUICtrlCreateMenu("Display")
    GUICtrlSetOnEvent(-1, "menuDisClick")
    $arControl[13] = GUICtrlCreateMenu ("Default", $arControl[12])
    $arControl[14] = GUICtrlCreateMenu ("Other", $arControl[12])

    If $DisWidth & " x " & $DisHeight <> "800 x 600" Then
    GUICtrlCreateMenuItem ("800 x 600", $arControl[14])
    Else
    GUICtrlCreateMenuItem ("800 x 600", $arControl[13])
    EndIf

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

    If $DisWidth & " x " & $DisHeight <> "1280 x 1024" Then
    GUICtrlCreateMenuItem ("1280 x 1024", $arControl[14])
    Else
    GUICtrlCreateMenuItem ("1280 x 1024", $arControl[13])
    EndIf


    $arControl[15] = GUICtrlCreateMenu ("Language")
    $arControl[16] = GUICtrlCreateMenu ("Default", $arControl[15])
    GUICtrlCreateMenuItem ($OSLanguage, $arControl[16] )
    GUICtrlSetOnEvent(-1, "menuLangClick")
    $arControl[17] = GUICtrlCreateMenuItem ("German", $arControl[15])
    GUICtrlSetOnEvent(-1, "menuLangClick")
    $arControl[18] = GUICtrlCreateMenuItem ("English", $arControl[15])
    GUICtrlSetOnEvent(-1, "menuLangClick")

    $arControl[19] = GUICtrlCreateMenu("?")
    $arControl[20] = GUICtrlCreateMenuItem ("About", $arControl[19])
    GUICtrlSetOnEvent(-1, "menuAboutClick")
    GUISetState(@SW_SHOW)


    While 1
    Sleep(100)
    WEnd

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

    Func menuLangClick()
    Switch $Switch
    Case 0
    $arTitle = IniReadSection($INIPath, 'DE')
    $Switch = 0
    Case 1
    $arTitle = IniReadSection($INIPath, 'EN')
    $Switch = 1
    EndSwitch
    SetTitle($arTitle)
    $arTitle = 1
    EndFunc

    Func SetTitle(ByRef $ARRAYTITLE)
    For $i = 0 To UBound($arControl) -1
    If $i = 0 Then
    WinSetTitle($arControl[0], '', $ARRAYTITLE[1][1])
    Else
    GUICtrlSetData($arControl[$i], $ARRAYTITLE[$i+1][1])
    EndIf
    Next
    EndFunc

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

    Func menuFileClick()
    EndFunc

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

    Func menuFuncClick()
    EndFunc

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

    Func menuDisClick()
    EndFunc

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

    Func menuAboutClick()
    EndFunc

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

    Func menuExitClick()
    Exit
    EndFunc

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

    Func Exit2()
    Exit
    EndFunc

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

    Func Hide()
    GUISetState(@SW_HIDE)
    Sleep (250)
    While $i = 0
    If _IsPressed (24) Then
    GUISetState(@SW_SHOW)
    Sleep (100)
    $i = +1
    EndIf
    WEnd
    $i = 0
    EndFunc

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

    Func Save()
    IniWriteSection (@ScriptDir & "\sys\Data.ini",GUICtrlRead($Input), $data)
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von ManuIt (12. Oktober 2007 um 16:38)

    • Offizieller Beitrag

    Weil du nicht die Änderung vorgenommen hast, die ich dir gesagt habe.
    Du solltest NUR in der Deklaration statt "Global $Switch = 0" auf "Global $Switch = 1" ändern.
    Stattdessen änderst du im Code der Funktion "mnuLangClick()" und vergißt dort den $Switch-Parameter anzupassen.

    Es ist nicht gerade hilfreich, wenn du die angebotene Lösung nicht übernimmst und stattdessen neue Fehler produzierst. Dann muß ich jedesmal kpl. alles durchwursteln um die Fehler zu finden.

    Übrigens, schmeiß bloß das _IsPressed() aus deinem Code. Schau dir die Arbeitsweise dieser Funktion genau an, dann wirst du merken, dass sie so nicht einsetzbar ist.

    Und was soll dieses Konstrukt bewirken?

    Spoiler anzeigen
    [autoit]

    While $i = 0
    If _IsPressed (24) Then
    GUISetState(@SW_SHOW)
    Sleep (800)
    $i = +1
    EndIf
    WEnd

    [/autoit]

    Zum Schleife Verlassen gibt es ExitLoop() ;)

  • ||

    @ManuIt

    Ohne dir auf den Schlips treten zu wollen, aber ich glaube nicht das du genug Kenntnisse im Zusammenhang mit AutoIT hast um ein Projekt zu verwirklichen.

    Da jeder mal klein angefangen hat. würde ich dir empfehlen die Beispiele aus der Dokumentation von AutoIt durch zu arbeiten. Dabei ergibt sich das Verständnis und du kannst sehr schnell Probleme lösen. Wie ich schon sagte, nimm es nicht persönlich, aber du musst dich schon intensiver mit autoIt auseinander setzen, um selbst ein Projekt voran zu treiben.

    Ich helfe sehr gern und lass mir im Notfall auch helfen und bin kein "Guck-Dir-Die-Hilfe-An" Verweiser, aber in diesem Fall ist es sicherlich sinnvoll.

    ||

    Einmal editiert, zuletzt von zio82draw (12. Oktober 2007 um 23:06)