Combobox auslesen

  • Hallo allerseits,


    ich habe ein kleines Problem mit meiner Combobox. Ich möchte gerne, das man etwas aus ihr auswählen kann, in dem man durch öffnen des Reiters sich einen Text aussucht und draufklickt. Dieser Wert wird ja dann gewissermaßen der "Standdardwert", steht also in der zugeklappten Combobox. Diesen Wert möchte ich auslesen - und zwar NUR DIESEN.

    Wenn ich dazu Guictrlread($Combobox) nehme, werden alle Werte ausgelesen, über die ich mit dem Cursor rüberfahre, die also kurzzeitig blau markiert sind :|

    Kann man das Problem irgendwie lösen? Sonst muss ich die Combobox ersetzen...

    Viele Grüße

    Aquaplant

    Einmal editiert, zuletzt von Aquaplant (13. April 2010 um 18:51)

  • Du musst mit GUICtrlSetData($Combobox, "Wert1|Wert2|Wert3") festlegen, was man auswählen kann und dann müsste eig. mit GUICtrlRead der derzeit ausgwählte Wert ausgelesen werden

  • Zitat von Aquaplant

    Wenn ich dazu Guictrlread($Combobox) nehme, werden alle Werte ausgelesen, über die ich mit dem Cursor rüberfahre, die also kurzzeitig blau markiert sind

    dann ist deine Routine zum Auslesen falsch aufgebaut. Schau dir in folgendem Beispiel den Code-Abschnitt zu Case $hbtnOpen an:

    Spoiler anzeigen
    [autoit]

    ;#include <GuiComboBox.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    ;#include <array.au3>

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

    #include <File.au3>

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

    Const $sElect = "bitte einen Benutzer auswählen"

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

    $hGui = GUICreate("Combobox mit INI ", 250, 120, 302, 218)
    $hcboUsers = GUICtrlCreateCombo($sElect, 8, 8, 200, 25,$CBS_DROPDOWNLIST)
    $hlblUser = GUICtrlCreateLabel("",8,35,200,25)
    $hbtnOpen = GUICtrlCreateButton("&Öffnen", 8, 65)
    GUICtrlSetState($hbtnOpen, $GUI_DISABLE)

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

    $list1 = _FileListToArray(@ScriptDir & "\Profiles", "*.ini", 1)

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

    If @error Then
    if MsgBox(36, "Keine Datei gefunden!", "Testdaten erzeugen?") = 6 then
    $sData = "Key1=Value1" & @LF & "Key2=Value2" & @LF & "Key3=Value3"
    if not FileExists(@ScriptDir & "\Profiles") then DirCreate(@ScriptDir & "\Profiles")
    $sIniName = @ScriptDir & "\Profiles\TestUser.ini"
    IniWriteSection($sIniName, "Sektion1", $sData)
    $sIniName = @ScriptDir & "\Profiles\User2.ini"
    IniWriteSection($sIniName, "Sektion1", $sData)
    GUICtrlSetData($hcboUsers, "TestUser|User2")
    Else
    Exit
    EndIf
    Else
    For $i = 1 To $list1[0]
    $sUser = StringTrimRight($list1[$i], 4)
    GUICtrlSetData($hcboUsers, $sUser)
    Next

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

    EndIf

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    FileDelete(@ScriptDir & "\Profiles\*.ini") ;<=========== im Original wieder entfernen
    Exit
    Case $hcboUsers
    If GUICtrlRead($hcboUsers) = $sElect Then
    GUICtrlSetState($hbtnOpen, $GUI_DISABLE)
    GUICtrlSetData($hlblUser,"")
    Else
    GUICtrlSetState($hbtnOpen, $GUI_ENABLE)
    GUICtrlSetData($hlblUser,GUICtrlRead($hcboUsers))
    EndIf
    Case $hbtnOpen
    $sIniName = @ScriptDir & "\Profiles\" & GUICtrlRead($hcboUsers) & ".ini"
    $aIniVars = IniReadSection($sIniName, "Sektion1")
    ;_ArrayDisplay($aIniVars,"Sektion1:")
    If @error Then
    MsgBox(4096, "", "Es ist ein Fehler aufgetreten. Warscheinlich keine INI Datei vorhanden.")
    Else
    For $i = 1 To $aIniVars[0][0]
    MsgBox(4096, GUICtrlRead($hcboUsers), "Schlüssel: " & $aIniVars[$i][0] & @CRLF & "Wert: " & $aIniVars[$i][1] & @TAB)
    Next
    EndIf

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

    EndSwitch
    WEnd

    [/autoit]

    mfg (Auto)Bert