ComboBox - Bei Auswahl Inhalt in Inputbox schreiben ..

  • Hallo,

    ich habe eine ComboBox, in der vers. Werte eingetragen werden, aus einem Array. Wenn ich jetzt eines dieser Werte aus der Liste auswähle, möchte ich gerne das anhand des ausgewählten Wert bestimmte Aktionen durchgeführt werden, sprich was in in eine Inputbox schreiben lassen.

    Ich steh gerad nur auf dem Schlauch, wie ich das am besten Löse ..

  • Du kannst den wert auslesen mit

    [autoit]

    GuiCtrlRead($Variable)

    [/autoit]


    dann natürlich weiterverarbeiten und etwas mit
    GUICtrlSetData schreiben

    Gruß

  • - Zeichen -

    Einmal editiert, zuletzt von hightower (26. Mai 2011 um 12:57)

  • mach es doch so:

    [autoit]


    $CB_LANADAPTER1 = GuiCtrlRead($CB_LANADAPTER)
    GUICtrlSetData($CB_LANADAPTER, $list_LAN, $aAdapter[1][1])

    [/autoit]

    Fehler gehabt vorsicht

    Einmal editiert, zuletzt von JaySini (26. Mai 2011 um 11:07)

  • Und dann? O_o

    Die for-Schleife von oben ist nur mein Weg alle LAN-Adapter auszulesen und in der ComboBox anzuzeigen. Wenn ich jetzt auf LAN-Adapter #123 in der C-Box klicke, hab ich darunter mehrere INPUT-Boxen (IP, Netmask, GW) die mit den entsprechenden Daten gefüllt werden sollen, von dem Lan-Adapter. Die Daten dazu stehen passend in dem 2D-Array $aAdapter...

  • -10 Zeichen -

    Einmal editiert, zuletzt von hightower (26. Mai 2011 um 12:57)

  • Okay und wo willst du nun was ändern durch die Combobox?
    Da du hier kein Gui hast und keine Box, kannst auch nix auslesen oder ändern.
    Jedoch mal ein einfaches beispiel für auslesen der Box und schreiben in ein Input feld


    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 150, 150, 192, 124)
    $Input1 = GUICtrlCreateInput("Input1", 10, 10, 121, 21)
    $Combo = GUICtrlCreateCombo("6",10, 30, 35, 300)
    GUICtrlSetData(-1, "7|8|9|10", "8")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    case $Combo
    $neuerwert = GuiCtrlRead($Combo)
    GUICtrlSetData($Input1, $neuerwert)
    EndSwitch
    WEnd

    [/autoit]
  • - 10 Zeichen -

    Einmal editiert, zuletzt von hightower (26. Mai 2011 um 12:57)

  • Bitte nutze mal den Spoiler [SP] button und das Autoitsysmbol für den Queltext.

    Nun noch die Frage AD.au3 welche ist das und welche ist ittool_lan.au3?
    Und mit dem Beispiel kommst nicht weiter?

    Und was in dem Script soll anders laufen nun? Welche Auswahl soll welches ergebniss verändern?

  • Das sind nur weitere Inkludes, fuer mein Problem gerad voellig egal - die ittool_lan.au3 ist die AU3, wo das Skript enthalten ist, welche die Netzwerkkdaten ausliest (siehe oben).

    Das Problem an der ganzen Geschichte ist die Abhaengigkeit der Daten aus der ComboBox, wenn ich in der ComboBox eine andere Netzwerkkarte auswaehle, soll er mir natuerlich auch die dazu passende IP-Adresse, etc in der Inputbox anzeigen ..

    Und das krieg ich noch nciht so hin - das lesen und schreiben einer ComboBox krieg ich ja gebacken..

  • OKay, ohne die datei welche INcluded wird, ist es schwer zuzordnern wie das ablaufen soll,
    da ich es nicht ausführen kann.
    In welcher rutine brauchst du die auswahl der Box?

    Also wo soll die Auswahl mit einbezogen werden?

  • Also, nochmal von vorn - folgend die beiden AU3-Dateien. Als erstes das Hauptskript, als zweites die inkludierte ITTOOL_LAN.AU3.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #include <ITTOOL_LAN.AU3>

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

    $Form1_1 = GUICreate("IT-Tool (Support)", 914, 346, 254, 144, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    GUISetFont(8, 400, 0, "Arial")
    $BT_EXIT = GUICtrlCreateButton("Beenden", 800, 24, 97, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlSetCursor (-1, 0)
    $BT_MAIL = GUICtrlCreateButton("Per Mail senden!", 800, 64, 97, 25, $WS_GROUP)
    GUICtrlSetCursor (-1, 0)
    $BT_TeamViewer = GUICtrlCreateButton("TeamViewer", 800, 96, 97, 25, $WS_GROUP)
    GUICtrlSetCursor (-1, 0)
    $Group1 = GUICtrlCreateGroup("", 792, 8, 113, 121)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetCursor (-1, 2)
    $Group2 = GUICtrlCreateGroup("Allgemeine Informationen:", 8, 8, 721, 121)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Checkbox1 = GUICtrlCreateCheckbox("Administrator", 800, 152, 89, 17)
    GUICtrlSetCursor (-1, 0)
    $INFO_LB1 = GUICtrlCreateLabel("IT-Tool", 848, 288, 57, 23)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    $INFO_LB2 = GUICtrlCreateLabel("", 784, 312, 123, 18)
    $INFO_LB3 = GUICtrlCreateLabel("", 784, 328, 121, 16)
    GUICtrlSetFont(-1, 7, 400, 0, "Arial")
    $BT_PACDEPLOY = GUICtrlCreateButton("Proxy-Konfig.", 800, 176, 97, 25, $WS_GROUP)
    GUICtrlSetCursor (-1, 0)
    $BT_MAILSIGNATUR = GUICtrlCreateButton("Mailsignatur", 800, 208, 97, 25, $WS_GROUP)
    GUICtrlSetCursor (-1, 0)
    $BT_WSPROFGEN = GUICtrlCreateButton("AS/400 Profil", 800, 240, 97, 25, $WS_GROUP)
    GUICtrlSetCursor (-1, 0)
    $Group3 = GUICtrlCreateGroup("", 792, 136, 113, 137)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $LB_USER = GUICtrlCreateLabel("Benutzer:", 16, 32, 51, 18)
    $LB_USER1 = GUICtrlCreateLabel("", 128, 32, 4, 4)
    $LB_PROFIL = GUICtrlCreateLabel("Benutzerprofil:", 16, 64, 68, 18)
    $LB_DOMAIN1 = GUICtrlCreateLabel("", 124, 64, 4, 4)
    $LB_ANMELDESRV = GUICtrlCreateLabel("Anmeldeserver:", 16, 96, 81, 18)
    $IN_USER = GUICtrlCreateInput("", 120, 32, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    ;
    GUICtrlSetTip(-1, "Nachname: " & "" & @CRLF & "Vorname: " & "" & @CRLF & "Telefon: " & "" & @CRLF & "Fax: " & @CRLF & "Mobil: " & "" & @CRLF & "E-Mail: " & "" & @CRLF, "Weitere Informationen ...")
    ;
    $IN_PROFIL = GUICtrlCreateInput("", 120, 64, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    ;
    GuiCtrlSetTip(-1, DriveSpaceFree(@UserProfileDir) / 1024 & " von " & DriveSpaceTotal(@UserProfileDir) / 1024 & " MB frei", "Freier Speicher ..." )
    ;
    $IN_ANMELDESRV = GUICtrlCreateInput("", 120, 96, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    ;
    TCPStartup()
    GuiCtrlSetTip(-1,TCPNameToIP(StringTrimLeft(EnvGet("LOGONSERVER"),2)), "IP-Adresse ...")
    ;
    $Icon1 = GUICtrlCreateIcon("", -1, 320, 24, 49, 41, BitOR($SS_NOTIFY,$WS_GROUP))
    $LB_IP = GUICtrlCreateLabel("IP-Adresse:", 16, 184, 61, 18)
    $LB_NETMASK = GUICtrlCreateLabel("Netzwerkmaske:", 16, 216, 85, 18)
    $LB_GW = GUICtrlCreateLabel("Router:", 16, 248, 39, 18)
    $LB_DNS1 = GUICtrlCreateLabel("DNS #1:", 16, 280, 43, 18)
    $LB_DNS2 = GUICtrlCreateLabel("DNS #2:", 16, 304, 43, 18)
    $Group4 = GUICtrlCreateGroup("Netzwerkinformationen:", 8, 128, 353, 201)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $IN_IP = GUICtrlCreateInput("", 120, 176, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $IN_GW = GUICtrlCreateInput("", 120, 240, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $IN_NETMASK = GUICtrlCreateInput("", 120, 208, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $IN_DNS2 = GUICtrlCreateInput("", 120, 296, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $IN_DNS1 = GUICtrlCreateInput("", 120, 272, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $LB_OS = GUICtrlCreateLabel("Betriebssystem:", 400, 32, 82, 18)
    $IN_OS = GUICtrlCreateInput("", 528, 32, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $LB_FREI = GUICtrlCreateLabel("-frei-", 400, 64, 67, 18)
    $IN_FREI = GUICtrlCreateInput("", 528, 64, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $LB_FREI2 = GUICtrlCreateLabel("-frei-", 400, 96, 75, 18)
    $IN_FREI2 = GUICtrlCreateInput("", 528, 96, 185, 22, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $LB_ADAPTER = GUICtrlCreateLabel("Adapter auswählen:", 16, 152, 103, 18)
    ; ### Netzwerkadapter auslesen und in ComboBox schreiben
    $CB_LANADAPTER = GUICtrlCreateCombo("", 120, 144, 185, 25)
    $list_LAN = ""
    For $i = 1 To UBound($aAdapter,1) -1
    $list_LAN &= "|" & $aAdapter[$i][1]
    Next

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

    GUICtrlSetData($CB_LANADAPTER, $list_LAN, $aAdapter[1][1])
    GUICtrlSetCursor (-1, 0)
    ; ###

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

    $BT_LANCONFIG = GUICtrlCreateButton("Ändern", 312, 144, 41, 177, BitOR($BS_VCENTER,$WS_GROUP))
    GUICtrlSetCursor (-1, 0)

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

    ;
    GUICtrlSetState($BT_LANCONFIG, $GUI_DISABLE)
    GUICtrlSetState($BT_PACDEPLOY, $GUI_DISABLE)
    GUICtrlSetState($BT_MAILSIGNATUR, $GUI_DISABLE)
    GUICtrlSetState($BT_WSPROFGEN, $GUI_DISABLE)
    ;
    GuiCtrlSetData($IN_USER, @UserName & "@" & EnvGet("USERDOMAIN"))
    GuiCtrlSetData($IN_PROFIL, @UserProfileDir)
    GuiCtrlSetData($IN_ANMELDESRV, StringTrimLeft(EnvGet("LOGONSERVER"),2))
    if @OSVersion = "WIN_7" Then
    GuiCtrlSetData($IN_OS, "Windows 7" & " " & "(" & @OSServicePack & ", " & @OSArch & ")")
    ElseIf @OSVersion = "WIN_VISTA" Then
    GuiCtrlSetData($IN_OS, "Windows Vista" & " " & "(" & @OSServicePack & ", " & @OSArch & ")")
    ElseIf @OSVersion = "WIN_XP" Then
    GuiCtrlSetData($IN_OS, "Windows XP" & " " & "(" & @OSServicePack & ", " & @OSArch & ")")
    ElseIf @OSVersion = "WIN_2000" Then
    GuiCtrlSetData($IN_OS, "Windows 2000" & " " & "(" & @OSServicePack & ", " & @OSArch & ")")
    ElseIf @OSVersion = "WIN_2003" Then
    GuiCtrlSetData($IN_OS, "Windows Server 2003" & " " & "(" & @OSServicePack & ", " & @OSArch & ")")
    ElseIf @OSVersion = "WIN_2008" Then
    GuiCtrlSetData($IN_OS, "Windows Server 2008" & " " & "(" & @OSServicePack & ", " & @OSArch & ")")
    ElseIf @OSVersion = "WIN_2008R2" Then
    GuiCtrlSetdata($IN_OS, "Windows Server 2008 R2" & " " & "(" & @OSServicePack & ", " & @OSArch & ")")
    EndIf
    ;

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $BT_EXIT
    Exit
    Case $Checkbox1
    If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
    GuiCtrlSetState($BT_LANCONFIG, $GUI_ENABLE)
    GUICtrlSetState($BT_PACDEPLOY, $GUI_ENABLE)
    GUICtrlSetState($BT_MAILSIGNATUR, $GUI_ENABLE)
    GuiCtrlSetState($BT_WSPROFGEN, $GUI_ENABLE)
    Else
    GUICtrlSetState($BT_LANCONFIG, $GUI_DISABLE)
    GUICtrlSetState($BT_PACDEPLOY, $GUI_DISABLE)
    GUICtrlSetState($BT_MAILSIGNATUR, $GUI_DISABLE)
    GUICtrlSetState($BT_WSPROFGEN, $GUI_DISABLE)
    EndIf
    EndSwitch
    WEnd

    [/autoit]
    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    ; ### Netzwerkkonfiguration auslesen ###

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

    $iTimer = TimerInit()
    $aAdapter = _Win32NetworkAdapter()

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

    Func _Win32NetworkAdapter($strComputer = 'Localhost')
    Local $aReturn[1][12] = [[ _
    'Hersteller:', 'Name:', 'Adapter-Typ:', 'Kennung:', _
    'MAC-Adresse:', 'Adresstyp:', 'DHCP-Server:', 'IP erhalten:', _
    'IP läuft ab:', 'IP-Adresse:', 'Subnetzmaske:', 'Standardgateway:']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter WHERE Netconnectionstatus = 2', 'WQL', 0x30)
    If Not IsObj($colItems) Then Return SetError(2, 0, 0)
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][13]
    $aReturn[$x][0] = $objItem.Manufacturer
    $aReturn[$x][1] = $objItem.Name
    $aReturn[$x][2] = $objItem.AdapterType
    $aReturn[$x][3] = $objItem.NetConnectionID
    $aReturn[$x][4] = $objItem.MACAddress
    $colItems2 = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration', 'WQL', 0x30)
    If IsObj($colItems2) Then
    For $objItem2 In $colItems2
    If $objItem.Caption = $objItem2.Caption Then
    If $objItem2.IPEnabled = -1 Then
    If $objItem2.DHCPEnabled = -1 Then
    $aReturn[$x][5] = 'von DHCP zugewiesen'
    $aReturn[$x][6] = $objItem2.DHCPServer
    $aReturn[$x][7] = _WMIDateStringToDate($objItem2.DHCPLeaseObtained)
    $aReturn[$x][8] = _WMIDateStringToDate($objItem2.DHCPLeaseExpires)
    Else
    $aReturn[$x][5] = 'Manuell konfiguriert'
    EndIf
    $aReturn[$x][9] = $objItem2.IPAddress(0)
    $aReturn[$x][10] = $objItem2.IPSubnet(0)
    $aReturn[$x][11] = $objItem2.DefaultIPGateway(0)
    $aReturn[$x][12] = $objItem2.DNSServerSearchOrder(0)
    EndIf
    EndIf
    Next
    EndIf
    Next
    Return $aReturn
    EndFunc

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

    Func _WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & '/' & _
    StringMid($dtmDate, 7, 2) & '/' & StringLeft($dtmDate, 4) _
    & ' ' & StringMid($dtmDate, 9, 2) & ':' & StringMid($dtmDate, 11, 2) & ':' & StringMid($dtmDate, 13, 2))
    EndFunc

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

    ; ###

    [/autoit]

    Wenn das Programm kompiliert ist, hab ich folgende Maske - dort wird mir, wie im Screenshot angezeigt, alle LAN-Adapter des Rechners aufgelistet. Sobald ich einen LAN-Adapter aus der Liste auswähle, möchte ich, dass das Programm IP-Adresse, Subnetmaske, Router, etc. in die darunter stehenden Input-Boxen schreibt ...


    Und das ganze ist halt abhaengig von der LAN-Karte, weil jeder LAN-Anschluss hat ja eine andere IP-Adresse ... Die Daten dazu stehen in dem 2D-Array.

  • Hallo hightower,

    da ja alle Angaben zu den Adaptern in dem Array $aAdapter enthalten sind brauchst du ja nur den Index des Ausgewähleten Adapters ermitteln. Das kannst du so:

    [autoit]

    Case $CB_LANADAPTER
    $sAdapter = GUICtrlRead($CB_LANADAPTER)
    $iArray = _ArraySearch($aAdapter,$sAdapter,0,0,0,0,1,1)
    MsgBox(0,"Index im Array",$iArray)

    [/autoit]

    einfach in deine switch Anweisung einfügen. Den Rest kannst du dann sicher alleine.

    Ps.: Es ist unhöflich geschriebene Posts zur Unkenntlichkeit zu editieren.

    mfg autoBert