Gui für ein Tool

  • Ich versuche, mich mehr mit GUI's auseinander zusetzen.
    Leider versteh ich das alles noch nicht Perfekt.

    Spoiler anzeigen
    [autoit]

    #include <Guiconstants.au3>

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

    $MainGUI = GUICreate ("ST",200,300,0,0)
    $MainGUIpos = WinGetPos ("ST","")
    $Tab1 = GUICtrlCreateTab (3,3,194,294)
    $Tab2 = GUICtrlCreateTabItem ("ba")
    $Tab3 = GUICtrlCreateTabItem ("bla")
    GUISetState(@SW_SHOW)

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

    Do
    $msgbx = GUIGetMsg()
    Select
    Case $msgbx = $Tab1
    GUICtrlCreateButton ("test", 10,200,70,30)
    Case $msgbx = $Tab2
    GUICtrlCreateButton ("adf", 10,200,70,30)
    Case $msgbx = $Tab3
    GUICtrlCreateButton ("lol", 10,200,70,30)
    EndSelect
    Until $msgbx = $GUI_EVENT_CLOSE

    [/autoit]

    Das hab ich bis jetzt.
    Ich möchte, dass beim klicken auf Tab2 der Button "adf" angezeigt wird.
    Beim Klicken auf Tab 3 dann "lol"

    Edit GtaSpider: [09.10.2007 16:01]
    Warum in Projekte? Das gehört ganz klar in Hilfe & Unterstützung
    Action GtaSpider: [09.10.2007 16:01]
    Move Topic Projekte --> Hilfe & Unterstützung

    • Offizieller Beitrag

    Hallo

    RTFM!! Die Hilfe hilft, dafür is sie ja da...

    Spoiler anzeigen
    [autoit]

    #include <Guiconstants.au3>

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

    $MainGUI = GUICreate("ST", 200, 300, 0, 0)
    $MainGUIpos = WinGetPos("ST", "")
    $Tab1 = GUICtrlCreateTab(3, 3, 194, 294)
    $Tab2 = GUICtrlCreateTabItem("ba")
    GUICtrlCreateButton("adf", 10, 200, 70, 30)
    GUICtrlCreateTabitem ("");Beendet den TabItem
    $Tab3 = GUICtrlCreateTabItem("bla")
    GUICtrlCreateButton("lol", 10, 200, 70, 30)
    GUICtrlCreateTabitem ("");Beendet den TabItem
    GUISetState(@SW_SHOW)

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

    Do
    $msgbx = GUIGetMsg()
    ;~ Select
    ;~ Case ;....
    ;~ EndSelect
    Until $msgbx = $GUI_EVENT_CLOSE

    [/autoit]

    Mfg Spider

  • 1. Sorry.

    2. Definition Projekte --> Also alles was über ne einfache Hilfe weit hinaus geht.
    Es ist ein Projekt. Ich brauche nicht nur ne Antwort, ich werde lange daran arbeiten und ab und zu mal hilfe benötigen.
    Ausserdem werde ich dann die ersten Versionen hier hochladen...


    EDIT:

    So sieht das script jetzt aus.
    Wie speichere ich am besten die angeklickten Menüitems?
    Wie kann ich Menuitems als Defaults speichern?

    Spoiler anzeigen
    [autoit]

    #include <Guiconstants.au3>

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

    $MainGUI = GUICreate ("ST",270,300,0,0)
    $MainGUIlab = GUICtrlCreateLabel ("LABEL", 200, 12)
    $MainGUIpos = WinGetPos ("ST","")
    $Exit = GUICtrlCreateButton("Exit", 120, 256, 51, 25, 0)
    GUISetState(@SW_SHOW)

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

    ;MenuItems
    $DisWidth = @DesktopWidth
    $DisHeight = @DesktopHeight
    If @OSLang = 0409 Then
    $OSLanguage = "English"
    Else
    $OSLanguage = "German"
    EndIf

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

    ;TABS
    $Tab1 = GUICtrlCreateTab (10,10,250,280)
    $Tab2 = GUICtrlCreateTabItem ("ba")

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

    ;MENU
    $File = GUICtrlCreateMenu ("File")
    $SSave = GUICtrlCreateMenuItem ("Save Session",$File)
    $SLoad = GUICtrlCreateMenuItem ("Load Session",$File)
    $Reset = GUICtrlCreateMenuItem ("Reset",$File)
    $FExit = GUICtrlCreateMenuItem ("Exit",$File)

    $Functions = GUICtrlCreateMenu ("Functions")
    GUICtrlCreateMenuItem ("Ba",$Functions)
    GUICtrlCreateMenuItem ("Hea",$Functions)
    GUICtrlCreateMenuItem ("StoHea",$Functions)
    GUICtrlCreateMenuItem ("Sle",$Functions)
    GUICtrlCreateMenuItem ("Ka",$Functions)
    GUICtrlCreateMenuItem ("Ex",$Functions)

    $DisSet = GUICtrlCreateMenu ("Display Settings")
    $UsedSet = GUICtrlCreateMenu ("Used Setting", $DisSet)
    GUICtrlCreateMenuItem ($DisWidth & " x " & $DisHeight, $UsedSet)
    $Otherset = GUICtrlCreateMenu ("Other Setting", $DisSet)
    If $DisWidth & " x " & $DisHeight <> "800 x 600" Then
    GUICtrlCreateMenuItem ("800 x 600", $Otherset)
    EndIf

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

    If $DisWidth & " x " & $DisHeight <> "1280 x 1024" Then
    GUICtrlCreateMenuItem ("1280 x 1024", $Otherset)
    EndIf

    $Language = GUICtrlCreateMenu ("Language")
    $UsedLang = GUICtrlCreateMenu ("Used Language", $Language)
    GUICtrlCreateMenuItem ($OSLanguage, $UsedLang)
    GUICtrlCreateMenuItem ("German", $Language)
    GUICtrlCreateMenuItem ("English", $Language)


    $help = GUICtrlCreateMenu ("?")
    $About = GUICtrlCreateMenuItem ("About", $help)

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

    Do
    $msgbx = GUIGetMsg()
    Select
    Case $msgbx = $About
    MsgBox (0,"About","This Tool was created by ManuIt")
    EndSelect
    Until $msgbx = $GUI_EVENT_CLOSE Or $msgbx = $Exit Or $msgbx = $FExit

    [/autoit]

    Edit GtaSpider: [09.10.2007 17:15]
    Aus deinem text/ Aus dem Source Oben ergab sich nicht das du ein Projekt starten wolltest! Bin aber aus irgendeinem unerfindlichem Grund kein Moderator in Hilfe & Unterstüzung ;)

    Einmal editiert, zuletzt von ManuIt (9. Oktober 2007 um 16:41)

  • Ist's jetzt ein Projekt oder nicht?
    Wenn ja, wäre ich froh wenns wieder verschoben werden würde.
    Ich brauche noch ne antwort auf folgende Fragen:

    Wie kann ich Menuitems als Defaults speichern?
    Wie kann ich die angeklickten Dinge am besten abspeichern?
    Edit1: Wie kann ich das Programm in 2 Sprachen machen?
    Edit2: Wie kann ich @SWHIDE einsetzen?
    -->

    Spoiler anzeigen
    [autoit]

    $Hide = @SW_HIDE
    $BHide = GUICtrlCreateButton("Hide", 40, 220, 51, 25, 0)
    Case $msgbx = $BHide
    Do
    $Hide
    Until _IsPressed (24)

    [/autoit]

    mfg Manu

    Ps: Stichworte genügen.

    2 Mal editiert, zuletzt von ManuIt (10. Oktober 2007 um 08:57)

    • Offizieller Beitrag
    Zitat

    1. Wie kann ich Menuitems als Defaults speichern?
    2. Wie kann ich die angeklickten Dinge am besten abspeichern?
    3. Edit1: Wie kann ich das Programm in 2 Sprachen machen?
    4. Edit2: Wie kann ich @SWHIDE einsetzen?

    zu 1.
    Erkläre bitte genauer was du meinst. Wenn du MenuItems erstellst erscheinen alle Einträge in diesem Menü. Beim Öffnen des Menüs bekommt das erste Item automatisch den Focus. Du kannst zwar mit "GUICtrlSetState(-1,$GUI_FOCUS)" jedem Item den Focus geben, das führt aber zu einem Konflikt mit dem Standardfocus und durch <Enter> wird keine Aktion beim fokussierten Item ausgelöst. (zumindest ist das mein Testergebnis)

    zu 2.
    Dauerhaft speichern oder nur während der Sitzung?
    Dauerhaft: INI oder Textdatei
    Sitzung: Variable

    zu 3.
    INI erstellen mit verfübaren Sprachen:

    Code
    [DE]
    txt1=Menü
    txt2=Datei
    txt3=Öffnen
    ......
    [EN]
    txt1=Menu
    txt2=File
    txt3=Open
    ......


    Beim Programmstart Sprache abfragen und entsprechende Textvariablen einlesen.

    [autoit]

    If @OSLang = "0407" Then
    $arTXT = IniReadSection($INIPath, "DE")
    ElseIf @OSLang = "0409" Or @OSLang = "0809" Then
    $arTXT = IniReadSection($INIPath, "EN")
    EndIf

    [/autoit]

    zu4.
    Schau dir GUISetState() an.

  • Vielen Dank.
    Du hast alle meine Fragen restlos beantwortet.
    Jedoch bringe ich das "iniwritesection" nicht zum laufen.

    Findet Jemand den Fehler?

    Spoiler anzeigen
    [autoit]

    GUISetState()
    $Input = GUICtrlCreateInput ("Name", 30, 50,60,20)
    $BInput = GUICtrlCreateButton("Save", 130, 50)
    $Section = IniReadSection ("Data.ini",$Input)

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

    Case $msgbx = $BInput
    IniWriteSection (@ScriptDir & "\sys\Data.ini",$Input, "")

    [/autoit]

    Mfg
    Manu

    Einmal editiert, zuletzt von ManuIt (10. Oktober 2007 um 12:01)

    • Offizieller Beitrag

    Die Syntax von IniWriteSection lautet:
    IniWriteSection ( "filename", "section", "data", [Array Index] )

    Filename setzt du richtig, aber die Sektion läßt du per Input festlegen ??
    Ich glaube nicht, dass das gewollt ist. Einen Wert trägst du auch nicht ein. Zum anderen liest du $Input gar nicht aus.
    Falls die Sektion per Input gesetzt werden soll, müßte dies so aussehen:

    [autoit]

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

    [/autoit]


    Bedenke für die Form bei "data":
    Wenn du es als String eingibst:

    [autoit]

    $data = "key1=val1" & @LF & "key2=val2" & @LF & "key3=val3" ; usw.

    [/autoit]


    Verwendest du ein Array, ist als "data" der Arrayname anzugeben und dann noch der Index des StartEintrags.

  • Vielen dank für deine Hilfe.
    Das mit der Selection ist schon so gedacht, dass man per InputBox eine neue Selection erstellen kann.

    Das mit der Sprache stellt sich als schwerer hinaus als ich gedacht hätte.
    Ich bin am Ende mit meinem Latein (besser gesagt AutoIt ;))

    So sieht mein Code aus, betreffend Sprache:

    Spoiler anzeigen
    [autoit]


    ;#####INI Language#####
    $GFile = IniRead (@ScriptDir & "\sys\language.ini","GER","Menu1","Datei")
    $EFile = IniRead (@ScriptDir & "\sys\language.ini","EN","Menu1","File")

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

    $Language = GUICtrlCreateMenu ("Language")
    $UsedLang = GUICtrlCreateMenu ("Default", $Language)
    GUICtrlCreateMenuItem ($OSLanguage, $UsedLang)
    $ger = GUICtrlCreateMenuItem ("German", $Language)
    $engl= GUICtrlCreateMenuItem ("English", $Language)


    $msgbx = GUIGetMsg()
    if $msgbx = $ger Then
    $LFile = $GFile
    Else
    $LFile = $EFile
    EndIf

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

    $File = GUICtrlCreateMenu ($LFile)

    [/autoit]


    Edit:

    Hier noch die language.ini:

    Spoiler anzeigen


    Als Erklärung noch: Wenn man im Menü auf German klickt sollte anstelle von File, Menü im Menü stehn :D

    3 Mal editiert, zuletzt von ManuIt (10. Oktober 2007 um 15:07)

    • Offizieller Beitrag

    Hier mal ganz Allgemein das Umstellen der Sprache im laufenden Skript.
    Deine INI kannst du dann allein reinfummeln.
    Allerdings solltest du INIReadSection verwenden. Dann erhältst du ein Array und kannst das Umbenennen analog zu meinem Bsp. durchführen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Dim $arText[8][2] = [ _
    ['DEUTSCH','ENGLISH'], _
    ['Label Eins', 'Label One'], _
    ['Label Zwei', 'Label Two'], _
    ['Label Drei', 'Label Three'], _
    ['Button Eins', 'Button One'], _
    ['Button Zwei', 'Button Two'], _
    ['Button Drei', 'Button Three'], _
    ['Button ENGLISH', 'Button DEUTSCH']]
    Dim $Switch = 0
    Dim $arControls[7]
    $Form1 = GUICreate($arText[0][0], 502, 184, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $arControls[0] = GUICtrlCreateLabel($arText[1][0], 46, 34, 100, 17)
    $arControls[1] = GUICtrlCreateLabel($arText[2][0], 46, 77, 100, 17)
    $arControls[2] = GUICtrlCreateLabel($arText[3][0], 46, 120, 100, 17)
    $arControls[3] = GUICtrlCreateButton($arText[4][0], 240, 34, 100, 30, 0)
    $arControls[4] = GUICtrlCreateButton($arText[5][0], 240, 70, 100, 30, 0)
    $arControls[5] = GUICtrlCreateButton($arText[6][0], 240, 106, 100, 30, 0)
    $arControls[6] = GUICtrlCreateButton($arText[7][0], 377, 70, 100, 30, 0)
    GUICtrlSetOnEvent(-1, "btSwitchClick")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func btSwitchClick()
    Switch $Switch
    Case 0
    WinSetTitle($Form1, '', $arText[0][1])
    For $i = 0 To UBound($arControls) -1
    GUICtrlSetData($arControls[$i], $arText[$i+1][1])
    Next
    $Switch = 1
    Case 1
    WinSetTitle($Form1, '', $arText[0][0])
    For $i = 0 To UBound($arControls) -1
    GUICtrlSetData($arControls[$i], $arText[$i+1][0])
    Next
    $Switch = 0
    EndSwitch
    EndFunc
    Func Form1Close()
    Exit
    EndFunc

    [/autoit]

    Edit:
    Ich habe jetzt alle GUI-Ctrl in ein eigenes Array gepackt, dann kann man das Umbenennen in einer Schleife ausführen.

  • Ich brings nicht hin...
    Muss das projekt aufgeben...
    Hier das komische script:

    Spoiler anzeigen
    [autoit]

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

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

    ;MenuItems
    $DisWidth = @DesktopWidth
    $DisHeight = @DesktopHeight
    If StringInStr("0407,0807,0c07,1007,1407", @OSLang) Then
    $OSLanguage="German"
    Else
    $OSLanguage= "English"
    EndIf

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


    ;##################BUGFIX'CODE#####################
    Opt("GUIOnEventMode", 1)

    Dim $arText[8][2] = [ _
    ['DE','EN'], _
    ['Datei', 'File'], _
    ['Label Zwei', 'Label Two'], _
    ['Label Drei', 'Label Three'], _
    ['Button Eins', 'Button One'], _
    ['Button Zwei', 'Button Two'], _
    ['Button Drei', 'Button Three'], _
    ['Button ENGLISH', 'Button DEUTSCH']]
    Dim $Switch = 0
    Dim $arControls[7]

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

    ;GUI
    $MainGUI = GUICreate ($arText[0][0],270,300,$DisWidth-270,$DisHeight-300,$WS_POPUP, $WS_EX_TOPMOST)
    GUISetBkColor (0xFFFFFF)
    $MainGUIlab = GUICtrlCreateLabel ("LABEL", 200, 12)
    GUISetBkColor (0xE0DFE3)
    $MainGUIpos = WinGetPos ("ST","")
    $BHide = GUICtrlCreateButton("Hide (Home)", 40, 265, 75, 25, 0)
    $Exit = GUICtrlCreateButton("Exit (End)", 140, 265, 75, 25, 0)
    $BInput = GUICtrlCreateButton("Save", 130, 50)
    GUISetState()
    $Input = GUICtrlCreateInput ("Name", 30, 50,60,20)

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

    ;INI
    $Section = IniReadSection ("Data.ini",$Input)
    $data = "key1=val1" & @LF & "key2=val2" & @LF & "key3=val3" ; usw.
    $i = 0

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

    ;TABS
    $Tab1 = GUICtrlCreateTab (10,10,250,280)
    $Tab2 = GUICtrlCreateTabItem ("ba")

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

    ;MENU
    $File = GUICtrlCreateMenu ($arControls[0])
    $SLoad = GUICtrlCreateMenu ("Load settings",$arControls[0])
    $Reset = GUICtrlCreateMenuItem ("Reset",$arControls[0])
    $FExit = GUICtrlCreateMenuItem ("Exit",$arControls[0])

    $Functions = GUICtrlCreateMenu ("Functions")
    GUICtrlCreateMenuItem ("Ba",$Functions)
    GUICtrlCreateMenuItem ("Hea",$Functions)
    GUICtrlCreateMenuItem ("StoHea",$Functions)
    GUICtrlCreateMenuItem ("Sle",$Functions)
    GUICtrlCreateMenuItem ("Ka",$Functions)
    GUICtrlCreateMenuItem ("Ex",$Functions)

    $DisSet = GUICtrlCreateMenu ("Display")
    $UsedSet = GUICtrlCreateMenu ("Default", $DisSet)
    GUICtrlCreateMenuItem ($DisWidth & " x " & $DisHeight, $UsedSet)
    $Otherset = GUICtrlCreateMenu ("Other", $DisSet)
    If $DisWidth & " x " & $DisHeight <> "800 x 600" Then
    GUICtrlCreateMenuItem ("800 x 600", $Otherset)
    EndIf

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

    If $DisWidth & " x " & $DisHeight <> "1280 x 1024" Then
    GUICtrlCreateMenuItem ("1280 x 1024", $Otherset)
    EndIf

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

    $Language = GUICtrlCreateMenu ("Language")
    $UsedLang = GUICtrlCreateMenu ("Default", $Language)
    GUICtrlCreateMenuItem ($OSLanguage, $UsedLang)
    $ger = GUICtrlCreateMenuItem ("German", $Language)
    $engl= GUICtrlCreateMenuItem ("English", $Language)


    $help = GUICtrlCreateMenu ("?")
    $About = GUICtrlCreateMenuItem ("About", $help)

    GUICtrlSetOnEvent(-1, "btSwitchClick")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep (100)
    WEnd

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

    $msgbx = GUIGetMsg()
    Func btSwitchClick()
    Switch $Switch
    Case $msgbx = $File
    For $i = 0 To UBound($arControls) -1
    GUICtrlSetData($arControls[$i], $arText[$i+1][1])
    Next
    $Switch = 1

    Case 1
    WinSetTitle($MainGUI, '', $arText[0][0])
    For $i = 0 To UBound($arControls) -1
    GUICtrlSetData($arControls[$i], $arText[$i+1][0])
    Next
    $Switch = 0

    Case $msgbx = $BInput
    IniWriteSection (@ScriptDir & "\sys\Data.ini",GUICtrlRead($Input), $data)

    Case $msgbx = $About
    MsgBox (0,"About","This Tool was created by me.")

    Case $msgbx = $BHide Or _IsPressed (24)
    GUISetState(@SW_HIDE)
    Sleep (250)
    While $i = 0
    If _IsPressed (24) Then
    GUISetState(@SW_SHOW)
    Sleep (800)
    $i = +1
    EndIf
    WEnd
    $i = 0
    EndSwitch
    EndFunc
    Func Form1Close()
    Exit
    EndFunc

    [/autoit]


    MFG

    Manu

    • Offizieller Beitrag

    Hi Manu,

    das ist wirklich ziemlich unstrukturiert. :(

    Und meine Codebeispiele waren nur Beispiele und nicht direkt auf dein Programm bezogen. Insofern bringt es wenig diesen Code unangepaßt reinzukopieren.

    Ich habe dir hier mal ein Muster erstellt. Die benötigte INI-Datei habe ich als Kommentarblock vorangestellt. Mußt du also nur in den Editor kopieren und als "Language.INI" abspeichern.

    Spoiler anzeigen
    [autoit]

    #cs

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

    [EN]
    1=ENGLISH
    2=File
    3=Open
    4=Save
    5=Delete
    6=Edit
    7=Copy
    8=Paste
    9=?
    10=Help
    11=Choose German Language
    [DE]
    1=DEUTSCH
    2=Datei
    3=Öffnen
    4=Speichern
    5=Löschen
    6=Bearbeiten
    7=Kopieren
    8=Einfügen
    9=?
    10=Hilfe
    11=Wähle Englisch

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

    #ce

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

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $arControl[11], $Switch = 0
    Global $INIPath = @ScriptDir & '\Language.INI'
    Global $arTitleEN = IniReadSection($INIPath, 'EN')
    Global $arTitleDE = IniReadSection($INIPath, 'DE')

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

    $arControl[0] = GUICreate("DEUTSCH", 633, 454, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $arControl[1] = GUICtrlCreateMenu("Datei")
    GUICtrlSetOnEvent(-1, "mnuFileClick")
    $arControl[2] = GUICtrlCreateMenuItem("Öffnen", $arControl[1])
    GUICtrlSetOnEvent(-1, "mnuOpenClick")
    $arControl[3] = GUICtrlCreateMenuItem("Speichern", $arControl[1])
    GUICtrlSetOnEvent(-1, "mnuSaveClick")
    $arControl[4] = GUICtrlCreateMenuItem("Löschen", $arControl[1])
    GUICtrlSetOnEvent(-1, "mnuDelClick")
    $arControl[5] = GUICtrlCreateMenu("Bearbeiten")
    GUICtrlSetOnEvent(-1, "mnuEditClick")
    $arControl[6] = GUICtrlCreateMenuItem("Kopieren", $arControl[5])
    GUICtrlSetOnEvent(-1, "mnuCopyClick")
    $arControl[7] = GUICtrlCreateMenuItem("Einfügen", $arControl[5])
    GUICtrlSetOnEvent(-1, "mnuPasteClick")
    $arControl[8] = GUICtrlCreateMenu("?")
    GUICtrlSetOnEvent(-1, "mnuHelpClick")
    $arControl[9] = GUICtrlCreateMenuItem("Hilfe", $arControl[8])
    GUICtrlSetOnEvent(-1, "mnuHelClick")
    $arControl[10] = GUICtrlCreateMenuItem("Wähle Englisch", $arControl[8])
    GUICtrlSetOnEvent(-1, "mnuLangClick")
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc
    Func mnuLangClick()
    Switch $Switch
    Case 0
    SetTitle($arTitleEN)
    $Switch = 1
    Case 1
    SetTitle($arTitleDE)
    $Switch = 0
    EndSwitch
    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
    Func mnuCopyClick()

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

    EndFunc
    Func mnuDelClick()

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

    EndFunc
    Func mnuEditClick()

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

    EndFunc
    Func mnuFileClick()

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

    EndFunc
    Func mnuHelClick()

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

    EndFunc
    Func mnuHelpClick()

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

    EndFunc
    Func mnuOpenClick()

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

    EndFunc
    Func mnuPasteClick()

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

    EndFunc
    Func mnuSaveClick()

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

    EndFunc

    [/autoit]
  • ich habe versucht mein script deinem code anzupassen.
    Leider war der wohl einiges zu kompliziert für mich.
    schön, dass du dir so mühe gegeben hast, mir zu helfen...
    Der neue Code hilft mir sehr.
    Vielen Dank, es funktioniert super!

    • Offizieller Beitrag

    Ich hab mal noch eine Verbesserung vorgenommen.
    Mit Blick auf eine möglichst geringe Speicherbelegung ist es günstiger, die INI nur bei Bedarf auszulesen und das Array anschließend zu leeren.
    Somit wird auch nur noch eine ArrayTitle-Variable benötigt.

    Spoiler anzeigen
    [autoit]

    Global $arTitle
    ;...
    ;...
    Func mnuLangClick()
    Switch $Switch
    Case 0
    $arTitle = IniReadSection($INIPath, 'EN') ; Array Sektion EN einlesen
    $Switch = 1
    Case 1
    $arTitle = IniReadSection($INIPath, 'DE') ; Array Sektion DE einlesen
    $Switch = 0
    EndSwitch
    SetTitle($arTitle)
    $arTitle = 0 ; Array wieder aus dem Speicher entladen
    EndFunc

    [/autoit]


    Ein Tipp noch. Auch wenn du multilingual arbeitest, solltest du immer bei der Controlerstellung einen Titel verwenden - also
    "GUICtrlCreateMenuItem("Open", $arCtrl[1])"
    statt
    "GUICtrlCreateMenuItem("", $arCtrl[1])".
    Anschließend auf die Systemsprache prüfen und ggf. neu setzen.
    Ansonsten hast du keine Einträge bei den MenüItems ;).

  • funktioniert echt super!
    ausserdem ist es sehr hilfreich, wenn der pc weniger überlastet ist. ;)

    ich möchte das ganze noch gestalten...
    andere Form des Fensters (abgerundete Kanten {Es ist ein pop up fenster})
    Kennt jemand ein link zu nem tut dazu oder so? :]


    Edit: es erkennt die Funktionen nicht mehr... weiss jemand, wieso?

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>


    Opt("GUIOnEventMode", 1)

    Global $arControl[20], $Switch = 0
    Global $INIPath = @ScriptDir & '\sys\Language1.ini'
    Global $arTitleEN = IniReadSection($INIPath, 'EN')
    Global $arTitleDE = IniReadSection($INIPath, 'DE')
    Global $arTitle

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

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

    $DisWidth = @DesktopWidth
    $DisHeight = @DesktopHeight

    $arControl[0] = GUICreate ("English",270,300,$DisWidth-270,$DisHeight-300,$WS_POPUP, $WS_EX_TOPMOST)

    [/autoit] [autoit][/autoit] [autoit][/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])

    $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])
    GUICtrlCreateMenuItem ($DisWidth & " x " & $DisHeight, $arControl[13])
    $arControl[14] = GUICtrlCreateMenu ("Other", $arControl[12])

    If $DisWidth & " x " & $DisHeight <> "800 x 600" Then
    GUICtrlCreateMenuItem ("800 x 600", $arControl[14])
    Else
    GUICtrlCreateMenuItem ("1280 x 1024", $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] )
    $arControl[17] = GUICtrlCreateMenuItem ("Deutsch", $arControl[15])
    GUICtrlSetOnEvent(-1, "menuLangClick")
    $arControl[18] GUICtrlCreateMenuItem ("Englisch", $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, 'EN')
    $Switch = 1
    Case 1
    $arTitle = IniReadSection($INIPath, 'DE')
    $Switch = 0
    EndSwitch
    SetTitle($arTitle)
    $arTitle = 0
    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][/autoit] [autoit]

    Func menuDisClick()
    EndFunc

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

    Func menuAboutClick()
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von ManuIt (12. Oktober 2007 um 12:19)

  • Damit mein ich, dass es beim Error-check folgende Fehler ausgibt:

  • Vielen Dank!
    Das wäre mir nie aufgefallen :D

    Ich habe ein neues Problem. Erst wenn man zweimal auf German gedrückt hat, wechselt das Menü wirklich.

    .au3:

    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

    [/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)

    [/autoit] [autoit][/autoit] [autoit][/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, 'EN')
    $Switch = 1
    Case 1
    $arTitle = IniReadSection($INIPath, 'DE')
    $Switch = 0
    EndSwitch
    SetTitle($arTitle)
    $arTitle = 0
    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]

    .ini:

    Spoiler anzeigen


    Weiss Jemand, wie sich das ändern lässt?

    MfG

    Manu

    2 Mal editiert, zuletzt von ManuIt (12. Oktober 2007 um 15:54)