Porbleme mit dem aktualisieren von INPUT Feldern innerhalb von TABs

  • Hallo,

    ich benötige mal wieder eure Hilfe. Wurschtel mich im Moment so durch mein geplantes Projekt und stecke im Augenblick fest.

    Problem1:

    Ich möchte im Tab 2 (Datei Manager) wahlweise einen anderen Datei Manager (z.B. FreeCommander) und im Tab 3 einen anderen Editor (z.B. UltraEdit) in mein Programm einbinden. Über die Inputfelder soll man auch die Möglichkeit haben Dateien einzugeben. Aber grundsätzlich sind die Dateiselektoren der ideale Weg Dateien auszuwählen. Leider funktioniert die jeweilige Aktualisierung der Inputfelder nicht. Erst nach Wechsel innerhalb der Tabs löst das Problem.

    autoit.de/wcf/attachment/4548/

    Anmerkung: Die fehlende INI-Datei kann man sich über Speichern erstellen lassen. Die Checkbox "Expertenmodus" sollte vor dem Speichern angeklickt werden.

    Problem 2:

    Wie kann ich die Statusinformationen abhängig vom Ort der Maus machen? Bisher sind diese immer gleich.

    Vielen Dank schon einmal

    Einmal editiert, zuletzt von jusuba2009 (26. April 2009 um 20:55)

    • Offizieller Beitrag

    Dein Problem mit der Anzeige in den Tab´s kommt daher , das du die Inputs neu erstellst . Es reicht vollkommen aus die Daten mit GUICtrlSetData neu zu setzen .

    Spoiler anzeigen
    [autoit]

    ; AutoIt 3.0.103
    ; Beginn am 12 April 2009 - (c) Jürgen Assmann
    ; Dieses Script ist ein Programm zur Auswahl von Verzeichnissen;
    ; und übergibt diese der Zwischenablage oder dem DateiManager/Editor
    ; ------------------------------------------------------------------------------
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GuiStatusBar.au3>

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

    #NoTrayIcon

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

    Global $aktPfad, $nameExplorerAusINI, $nameEditorAusINI, $ergebisPfadAusDialog
    Global $wertCheckboxAutomatismus, $wertCheckboxExpertenmodus
    Global $anwendung

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

    $aktPfad = @WorkingDir

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

    GUI2()

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

    ; Funktionen für die GUI2
    ; ------------------------------------------------------------------------------
    ; Funktion - DateiExplorername und evtl. Pfad in "Auswahl.ini" abspeichern
    ; ------------------------------------------------------------------------------
    Func GUI2Explorer()
    IniWrite($aktPfad & "\" & "Auswahl.ini", "DateiExplorer", "Programmpfad", $nameExplorerAusINI)
    EndFunc
    ; ------------------------------------------------------------------------------
    ; Funktion - Editorname und evtl. Pad in "Auswahl.ini" abspeichern
    ; ------------------------------------------------------------------------------
    Func GUI2Editor()
    IniWrite($aktPfad & "\" & "Auswahl.ini", "Editor", "Programmpfad", $nameEditorAusINI)
    EndFunc
    ; ------------------------------------------------------------------------------
    ; Funktion - Wert der Checkbox "Automatismus" in "Auswahl.ini" abspeichern
    ; ------------------------------------------------------------------------------
    Func GUI2Automatismus()
    IniWrite($aktPfad & "\" & "Auswahl.ini", "Automatismus", "Aktiv", $wertCheckboxAutomatismus)
    EndFunc
    ; ------------------------------------------------------------------------------
    ; Funktion - Wert der Checkbox "Expertenmodus" in "Auswahl.ini" abspeichern
    ; ------------------------------------------------------------------------------
    Func GUI2Expertmode()
    IniWrite($aktPfad & "\" & "Auswahl.ini", "Expertenmodus", "Aktiv", $wertCheckboxExpertenmodus)
    EndFunc
    ; ------------------------------------------------------------------------------
    ; Funktion - Dateiselektor aufrufen
    ; ------------------------------------------------------------------------------
    Func GUI2Dateisuche()
    $ergebisPfadAusDialog = FileSaveDialog ("Datei auswählen", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", "Alle (*.*)")
    if @error = 1 then
    msgbox(48, " << Benutzerfehler >>", "Es wurde keine Datei ausgewählt!" & @CRLF & " -> Defaultpfad wird gesetzt!")
    Endif
    EndFunc
    ; ------------------------------------------------------------------------------
    ; Funktion - Einstellungenfenster öffnen
    ; ------------------------------------------------------------------------------
    Func GUI2()
    Local $tab

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

    $wertCheckboxAutomatismus = IniRead($aktPfad & "\" & "Auswahl.ini", "Automatismus", "Aktiv", "kein Fund")
    $wertCheckboxExpertenmodus = IniRead($aktPfad & "\" & "Auswahl.ini", "Expertenmodus", "Aktiv", "kein Fund")
    $nameExplorerAusINI = IniRead($aktPfad & "\" & "Auswahl.ini", "DateiExplorer", "Programmpfad", "kein Fund")
    $nameEditorAusINI = IniRead($aktPfad & "\" & "Auswahl.ini", "Editor", "Programmpfad", "kein Fund")

    $meineGUI2 = GUICreate("Einstellungen", 300, 150, -1, -1, 0x00C00000)

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

    ; ------------------------------------------------------------------------------
    ; Buttons
    ; ------------------------------------------------------------------------------
    $buttonSpeichern = GUICtrlCreateButton("Speichern",5,100)
    GUICtrlSetState(-1,$GUI_FOCUS)
    $buttonAbbrechen = GUICtrlCreateButton("Abbrechen",65,100)

    ; ------------------------------------------------------------------------------
    ; Statusbar2
    ; ------------------------------------------------------------------------------
    $statusbar2 = _GUICtrlStatusBar_Create($meineGUI2, -1, "speichert/beläßt Einstellungen")

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

    ; ------------------------------------------------------------------------------
    ; Tab mit 3 Items
    ; ------------------------------------------------------------------------------
    $tab = GUICtrlCreateTab(5, 5, 290, 85)

    ; ------------------------------------------------------------------------------
    ; 1. Tab (Einstellungen)
    ; ------------------------------------------------------------------------------
    $tabEinstellungen = GuiCtrlCreateTabItem("Einstellungen")
    GuiCtrlCreateGroup("", 10, 25, 280, 60)
    $checkboxAutomatismus = GUICtrlCreateCheckbox(" autom. mit Pfad laden", 15, 35, 200)
    if $wertCheckboxAutomatismus = 1 then
    GUICtrlSetState($checkboxAutomatismus, $GUI_CHECKED)
    else
    GUICtrlSetState($checkboxAutomatismus, $GUI_UNCHECKED)
    endif
    $checkboxExpertenmodus = GUICtrlCreateCheckbox(" Expertenmodus", 15, 60, 200, 20, $BS_AUTO3STATE)
    if $wertCheckboxExpertenmodus = 1 then
    GUICtrlSetState($checkboxExpertenmodus, $GUI_CHECKED)
    $aufrufDateiSelektorExplorer = "Ja"
    $aufrufDateiSelektorEditor="Ja"
    ELSE
    if $wertCheckboxExpertenmodus = 2 then
    GUICtrlSetState($checkboxExpertenmodus, $GUI_INDETERMINATE)
    $aufrufDateiSelektorExplorer = "Nein"
    $aufrufDateiSelektorEditor="Ja"
    else
    GUICtrlSetState($checkboxExpertenmodus, $GUI_UNCHECKED)
    $aufrufDateiSelektorExplorer = "Nein"
    $aufrufDateiSelektorEditor="Nein"
    endif
    endif

    ; ------------------------------------------------------------------------------
    ; 2. Tab (Datei Manager)
    ; ------------------------------------------------------------------------------
    $tabExplorer = GuiCtrlCreateTabItem("Datei Manager")
    GuiCtrlCreateGroup("", 10, 25, 280, 60)
    $radioDefaultExplorer = GuiCtrlCreateRadio("default ", 15, 35, 200)
    $radioAlternativExplorer = GuiCtrlCreateRadio("alternativ", 15, 60, 80)
    if $wertCheckboxExpertenmodus = 1 then
    GuiCtrlSetState($radioDefaultExplorer, $GUI_UNCHECKED)
    GuiCtrlSetState($radioAlternativExplorer, $GUI_CHECKED)
    $eingabefeldExplorer = GUICtrlCreateInput($nameExplorerAusINI, 105, 60, 155, 20)
    else
    GuiCtrlSetState($radioDefaultExplorer, $GUI_CHECKED)
    GuiCtrlSetState($radioAlternativExplorer, $GUI_UNCHECKED)
    $eingabefeldExplorer = GUICtrlCreateInput($nameExplorerAusINI, 105, 60, 155, 20, $ES_READONLY)
    endif
    $buttonDateiselektorExplorer = GUICtrlCreateButton("", 265, 60, 20, 20, $BS_ICON)
    GUICtrlSetImage(-1, $aktPfad & "\" & "auswahl.ico", -1, 0)

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

    ; ------------------------------------------------------------------------------
    ; 3. Tab (Editor)
    ; ------------------------------------------------------------------------------
    $tabEditor = GuiCtrlCreateTabItem("Editor")
    GuiCtrlCreateGroup("", 10, 25, 280, 60)
    $radioDefaultEditor = GuiCtrlCreateRadio("default ", 15, 35, 200)
    $radioAlternativEditor = GuiCtrlCreateRadio("alternativ", 15, 60, 80)
    if $wertCheckboxExpertenmodus = 4 then
    GuiCtrlSetState($radioDefaultEditor, $GUI_CHECKED)
    GuiCtrlSetState($radioAlternativEditor, $GUI_UNCHECKED)
    $eingabefeldEditor = GUICtrlCreateInput($nameEditorAusINI, 105, 60, 155, 20, $ES_READONLY)
    else
    GuiCtrlSetState($radioDefaultEditor, $GUI_UNCHECKED)
    GuiCtrlSetState($radioAlternativEditor, $GUI_CHECKED)
    $eingabefeldEditor = GUICtrlCreateInput($nameEditorAusINI, 105, 60, 155, 20)
    endif
    $buttonDateiselektorEditor = GUICtrlCreateButton("", 265, 60, 20, 20, $BS_ICON)
    GUICtrlSetImage(-1, $aktPfad & "\" & "auswahl.ico", -1, 0)

    GUICtrlCreateTabItem("") ; Beendet die Tab Definition

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

    GUISetState()

    ; ------------------------------------------------------------------------------
    ; GUI MESSAGE LOOP2
    ; ------------------------------------------------------------------------------
    While 1
    $msg = GUIGetMsg()
    if $msg = $buttonAbbrechen then
    GUIDelete()
    ExitLoop
    endif
    if $msg = $buttonSpeichern then
    WinSetTitle($meineGUI2, "", "Einstellungen:")
    $nameExplorerAusINI = GUICtrlRead($eingabefeldExplorer)
    if $nameExplorerAusINI = "" then
    $nameExplorerAusINI = "explorer.exe"
    endif
    Call ("GUI2Explorer")
    $nameEditorAusINI = GUICtrlRead($eingabefeldEditor)
    if $nameEditorAusINI = "" then
    $nameEditorAusINI = "notepad.exe"
    endif
    Call ("GUI2Editor")
    $wertCheckboxAutomatismus = GUICtrlRead($checkboxAutomatismus)
    Call ("GUI2Automatismus")
    $wertCheckboxExpertenmodus = GUICtrlRead($checkboxExpertenmodus)
    Call ("GUI2Expertmode")
    GUIDelete()
    ExitLoop
    endif
    if $msg = $radioDefaultExplorer And BitAND(GUICtrlRead($radioDefaultExplorer), $GUI_CHECKED) then
    WinSetTitle($meineGUI2, "", "* Einstellungen:")
    GUISwitch($meineGUI2, $tabExplorer)
    GUICtrlSetData ($eingabefeldExplorer,$ergebisPfadAusDialog)
    $aufrufDateiSelektorExplorer = "Nein"
    if GUICtrlRead($radioDefaultEditor) = 1 then
    GUICtrlSetState($checkboxExpertenmodus, $GUI_UNCHECKED)
    else
    GUICtrlSetState($checkboxExpertenmodus, $GUI_INDETERMINATE)
    endif
    endif
    if $msg = $radioAlternativExplorer And BitAND(GUICtrlRead($radioAlternativExplorer), $GUI_CHECKED) then
    WinSetTitle($meineGUI2, "", "* Einstellungen:")
    GUISwitch($meineGUI2, $tabExplorer)
    GUICtrlSetData($eingabefeldExplorer, $ergebisPfadAusDialog)
    $aufrufDateiSelektorExplorer = "Ja"
    if GUICtrlRead($radioAlternativEditor) = 1 then
    GUICtrlSetState($checkboxExpertenmodus, $GUI_CHECKED)
    else
    GUICtrlSetState($checkboxExpertenmodus, $GUI_INDETERMINATE)
    endif
    Endif
    if $msg = $radioDefaultEditor And BitAND(GUICtrlRead($radioDefaultEditor), $GUI_CHECKED) then
    WinSetTitle($meineGUI2, "", "* Einstellungen:")
    GUISwitch($meineGUI2, $tabEditor)
    GUICtrlSetData($eingabefeldEditor,$ergebisPfadAusDialog)
    $aufrufDateiSelektorEditor = "Nein"
    if GUICtrlRead($radioDefaultExplorer) = 1 then
    GUICtrlSetState($checkboxExpertenmodus, $GUI_UNCHECKED)
    else
    GUICtrlSetState($checkboxExpertenmodus, $GUI_INDETERMINATE)
    endif
    endif
    if $msg = $radioAlternativEditor And BitAND(GUICtrlRead($radioAlternativEditor), $GUI_CHECKED) then
    WinSetTitle($meineGUI2, "", "* Einstellungen:")
    GUISwitch($meineGUI2, $tabEditor)
    GUICtrlSetData($eingabefeldEditor ,$ergebisPfadAusDialog)
    $aufrufDateiSelektorEditor = "Ja"
    if GUICtrlRead($radioAlternativExplorer) = 1 then
    GUICtrlSetState($checkboxExpertenmodus, $GUI_CHECKED)
    else
    GUICtrlSetState($checkboxExpertenmodus, $GUI_INDETERMINATE)
    endif
    Endif
    if $msg = $buttonDateiselektorExplorer then
    if $aufrufDateiSelektorExplorer = "Ja" then
    Call ("GUI2Dateisuche")
    WinSetTitle($meineGUI2, "", "* Einstellungen:")
    GUISwitch($meineGUI2, $tabExplorer)
    GUICtrlSetData($eingabefeldExplorer ,$ergebisPfadAusDialog)
    msgbox(16," Test", $eingabefeldExplorer & " " & $ergebisPfadAusDialog)
    GUICtrlSetData($eingabefeldExplorer, $ergebisPfadAusDialog)
    else
    msgbox(48," << Benutzerfehler >>", "Kein Aufruf möglich !!!")
    endif
    endif
    if $msg = $buttonDateiselektorEditor then
    if $aufrufDateiSelektorEditor = "Ja" then
    Call ("GUI2Dateisuche")
    WinSetTitle($meineGUI2, "", "* Einstellungen:")
    GUISwitch($meineGUI2, $tabEditor)
    GUICtrlSetData( $eingabefeldEditor ,$ergebisPfadAusDialog)
    msgbox(16," Test", $eingabefeldEditor & " " & $ergebisPfadAusDialog)
    GUICtrlSetData($eingabefeldEditor, $ergebisPfadAusDialog)
    else
    msgbox(48," << Benutzerfehler >>", "Kein Aufruf möglich !!!")
    endif
    endif
    If $msg = $checkboxExpertenmodus And BitAND(GUICtrlRead($checkboxExpertenmodus), $GUI_CHECKED) then
    WinSetTitle($meineGUI2, "", "* Einstellungen:")
    GUICtrlSetState($radioDefaultExplorer, $GUI_UNCHECKED)
    GUICtrlSetState($radioAlternativExplorer, $GUI_CHECKED)
    GUICtrlSetState($radioDefaultEditor, $GUI_UNCHECKED)
    GUICtrlSetState($radioAlternativEditor, $GUI_CHECKED)
    endif
    If $msg = $checkboxExpertenmodus And BitAND(GUICtrlRead($checkboxExpertenmodus), $GUI_INDETERMINATE) then
    WinSetTitle($meineGUI2, "", "* Einstellungen:")
    GUICtrlSetState($radioDefaultExplorer, $GUI_CHECKED)
    GUICtrlSetState($radioAlternativExplorer, $GUI_UNCHECKED)
    GUICtrlSetState($radioDefaultEditor, $GUI_UNCHECKED)
    GUICtrlSetState($radioAlternativEditor, $GUI_CHECKED)
    endif
    If $msg = $checkboxExpertenmodus And BitAND(GUICtrlRead($checkboxExpertenmodus), $GUI_UNCHECKED) then
    WinSetTitle($meineGUI2, "", "* Einstellungen:")
    GUICtrlSetState($radioDefaultExplorer, $GUI_CHECKED)
    GUICtrlSetState($radioAlternativExplorer, $GUI_UNCHECKED)
    GUICtrlSetState($radioDefaultEditor, $GUI_CHECKED)
    GUICtrlSetState($radioAlternativEditor, $GUI_UNCHECKED)
    endif
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    EndFunc

    [/autoit]
  • Vielen Dank, das löst mein Problem 1. Freut mich, dass es so einfach war. Übung macht den Meister :)

    Gibt es noch einen Hinweis zu meinem 2. Problem mit der Statusbar?

    Viele Grü0e

  • Pers. Anmerkung:

    Problem 2 habe ich inzwischen selber lösen können. Dennoch vielen Dank an alle.

    Das Forum ist wirklich klasse

    Grüße jusuba2009 ;)

    P.S. Ich weiß nur noch nicht wie ich das ganze wieder abschließen kann - werde ich auch noch lernen - hoffentlich! :)

  • Hallo jusuba2009,

    geh auf den ersten Beitrag, mit dem du dieses Thema eröffnet hast, klicke dort auf bearbeiten (rechts unten), danach kannst du den Präfix (über der Überschrift) auf gelöst stellen.

    mfg (Auto)Bert

  • Hallo (Auto)Bert,

    danke für den Tip, funzt einwandfrei.

    Noch eine Frage: Man sieht ständig die Scripte in einem kleinen Editorfenster, dass man anzeigen und verstecken kann. Ich hoffe, du weist was ich meine, Wie bekommt man das in seine Fragen eingebunden? Sieht doch besser aus und hilft allen.

    Gruß jusuba2009

  • Hallo Jusuba2009,

    du meinst einen Spoiler (ist der Knopf mit SP direkt über der Eingabe) für AutoIT-Code ist daneben der Knopf mit dem AutoIT-Logo. Manchmal (zumindest bei mir mit XP SP3 und IE7) erscheinen diese und alle anderen erst nachdem ich auf Vorschau gegangen bin. Ich verwende die beiden immer zusammen, zuerst kopier ich mir in Scite alles, danach geh ich an die Stelle wo ich den Spoiler mit Code einfügen will, danach Klick auf SPoiler, danach Klick auf AutoItquellcode einfügen, danach EINFG-Taste.

    mfg (Auto)Bert