Hallo zusammen.
Ich würde mir gerne in einer InputBox alle Ordner (ohne Unterordner) die sich z.B. auf C:\ befinden anzeigen lassen.
Wie kann ich das umsetzen?
Vielen Dank!
Gruß Sirius
Hallo zusammen.
Ich würde mir gerne in einer InputBox alle Ordner (ohne Unterordner) die sich z.B. auf C:\ befinden anzeigen lassen.
Wie kann ich das umsetzen?
Vielen Dank!
Gruß Sirius
Schön ... dann fang mal an.
Du brauchst u. a. _FileListToArray.
Dazu noch deine InputBox.
Schau mal in die Hilfe.
Hi Tweaky!
Ich habe folgendes versucht:
#include <File.au3>
#include <Array.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
Global $sFilePath = @DesktopDir
Global $iFlag = 2
Global $ordnerl = _FileListToArray ( $sFilePath, "*" ,$iFlag)
Global $iRows = UBound($ordnerl, $UBOUND_ROWS)
For $i = 1 To $iRows
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Form1_1 = GUICreate("Form1", 736, 545, 580, 104)
$walle = GUICtrlCreateTab(0, 72, 753, 489)
$Objekt = GUICtrlCreateTabItem("Objekt anlegen")
$Input1 = GUICtrlCreateInput("", 24, 144, 273, 21)
$Input2 = GUICtrlCreateInput($ordnerl[$i], 24, 168, 273, 340)
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Next
Damit kommst du nicht weit. Nach der 1. GUI bleibst du in der Message-Schleife hängen.
Du kannst entweder mehrere Inputs nehmen die du erstellst (die musst du aber an einer neuen Position erstellen weil die sich sonst überdecken) oder du nimsmt ein Edit-Feld.
Je nach dem was für dein Vorhaben geeigneter ist.
Hallo.
Könnte man das auch mit _GUICtrlComboBoxEx_ realisieren?
Wenn ja, kann mir dann jemand helfen? Ich habe noch nie damit gearbeitet.
Vielen Dank!
Gruß
Sirius
gerne in einer InputBox alle Ordner
Hier mal für ein Input (sinnvoll?).
#include <File.au3>
#include <EditConstants.au3>
Global $sPath, $aFolder, $index
[/autoit] [autoit][/autoit] [autoit]$hGui = GUICreate('Ordner', 414, 70)
$inRoot = GUICtrlCreateInput('', 10, 10, 350, 20)
GUICtrlSendMsg($inRoot, 0x1501, 0, "Bitte Ordner auswählen")
$btSelect = GUICtrlCreateButton('...', 384, 10, 20, 20)
$inFolder = GUICtrlCreateInput('', 10, 40, 350, 20, $ES_READONLY)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$btPrev = GUICtrlCreateButton('<', 362, 40, 20, 20)
$btNext = GUICtrlCreateButton('>', 384, 40, 20, 20)
ControlFocus($hGui, '', $btSelect)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case -3
Exit
Case $btSelect
$sPath = FileSelectFolder('Bitte einen Ordner auswählen', '')
If Not @error Then _ReadFolders($sPath)
Case $btPrev
_ShowPrevious()
Case $btNext
_ShowNext()
EndSwitch
WEnd
Func _ReadFolders($path)
$aFolder = _FileListToArray($path, '*', 2)
GUICtrlSetData($inRoot, $path)
If Not IsArray($aFolder) Then
GUICtrlSetData($inFolder, 'Keine Unterordner!')
Return WinSetTitle($hGui, '', '[ 0 von 0 ]')
EndIf
$index = 1
GUICtrlSetData($inFolder, $aFolder[$index])
WinSetTitle($hGui, '', '[ 1 von ' & $aFolder[0] & ' ]')
EndFunc
Func _ShowPrevious()
If $index = 1 Then Return
$index -= 1
GUICtrlSetData($inFolder, $aFolder[$index])
WinSetTitle($hGui, '', '[ ' & $index & ' von ' & $aFolder[0] & ' ]')
EndFunc
Func _ShowNext()
If $index = $aFolder[0] Then Return
$index += 1
GUICtrlSetData($inFolder, $aFolder[$index])
WinSetTitle($hGui, '', '[ ' & $index & ' von ' & $aFolder[0] & ' ]')
EndFunc
Nun kannst du dich mal selbst an der Combo versuchen.
Hi bugfix. Werde ich mir anschauen, obwohl ich mit combo schon erfolgreich war. Ging einfacher als ich gedacht habe. Wollte meine Version mit der Combo mal posten, bin aber zeitlich nicht mehr dazu gekommen. Das werde ich am Freitag nachholen, wenn es gewünscht ist!?
Hallo zusammen,
und ein frohes neues Jahr wünsche ich Euch noch!
Ich habe nochmal eine Frage zur ComboBox. Ich habe zwei Tab´s in meinem Tool, und möchte die Combobox nur auf dem ersten Tab angezeigt bekommen. Wie und wo muss ich das definieren?
#include <GuiComboBoxEx.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
$test = GUICreate("test", 791, 640, 199, 119)
$datei = GUICtrlCreateMenu("&Datei")
$MenuItem3 = GUICtrlCreateMenuItem("Beenden Alt + F4", $datei)
$ueber = GUICtrlCreateMenu("Ü&ber...")
$Tab1 = GUICtrlCreateTab(-3, 34, 793, 585)
$TabSheet1 = GUICtrlCreateTabItem("Objekte anlegen")
$hCombo1 = _GUICtrlComboBoxEx_Create($test, "", 24, 135, 294, 400, BitOR($CBS_SIMPLE, $WS_VSCROLL, $WS_BORDER))
$TabSheet2 = GUICtrlCreateTabItem("Projekte anlegen")
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $MenuItem3
Exit
EndSwitch
WEnd
Vielen Dank!
Gruß
Sirius
und möchte die Combobox nur auf dem ersten Tab angezeigt bekommen.
Die ..ComboBoxEx-Funtion erzeugt keine ID und passt somit nicht in die Struktur des Tab-Ctrl. Wenn du unbedingt mit dieser Funktion arbeiten willst (warum benutzt du nicht GUICtrlCreateCombo? ) , dann musst du die Combo verstecken, wenn nicht das dazugehörige Tabsheet aktiv ist.
Hi BugFix,
und mit einer ComboboxEx ist das nicht machbar? Eigentlich brauche ich genau diese Box, weil ich nicht weiss, wie ich es anders umsetzen soll.
Gruß
Sirius
Eigentlich brauche ich genau diese Box
Na und was ist an dieser Box sooo anders im Vergleich zu der mit GUICtrlCreateCombo erstellten?
Falls du ein Handle benötigst, bekommst du das ebenso von der Box-ID (GuiCtrlGetHandle) und kannst mit diesem Handle dann die Funktionen der ..Ex ebenso nutzen.
Aber ich habe doch auch beschrieben WIE es mit der ..Ex machbar ist:
Zitatdann musst du die Combo verstecken, wenn nicht das dazugehörige Tabsheet aktiv ist.
Hi Bugfix. Ich werde mich mal dran setzen und versuchen, ob ich es auch mit der anderen combobox hin bekomme.
Vielen Dank!
Gruß Sirius
Hier hast du ein Beispiel, wie man die ComboBox auf den Tabs aus-/einblendet:
#include <GuiComboBoxEx.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <GuiTab.au3>
$test = GUICreate("test", 791, 640, 199, 119)
$datei = GUICtrlCreateMenu("&Datei")
$MenuItem3 = GUICtrlCreateMenuItem("Beenden Alt + F4", $datei)
$ueber = GUICtrlCreateMenu("Ü&ber...")
$g_hTab = GUICtrlCreateTab(-3, 34, 793, 585)
$TabSheet1 = GUICtrlCreateTabItem("Objekte anlegen")
$hCombo1 = _GUICtrlComboBoxEx_Create($test, "", 24, 135, 294, 400, BitOR($CBS_SIMPLE, $WS_VSCROLL, $WS_BORDER))
$TabSheet2 = GUICtrlCreateTabItem("Projekte anlegen")
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY"); WM_NOTIFY registrieren um die Events vom Tab auszuwerten
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $MenuItem3
Exit
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndTab
$hWndTab = $g_hTab
If Not IsHWnd($g_hTab) Then $hWndTab = GUICtrlGetHandle($g_hTab)
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndTab
Switch $iCode
Case $NM_CLICK ; The user has clicked the left mouse button within the control
if _GUICtrlTab_GetCurSel($g_hTab)= 0 then _WinAPI_ShowWindow($hCombo1, @SW_SHOW); Tab 0 Combo sichtbar
if _GUICtrlTab_GetCurSel($g_hTab)= 1 then _WinAPI_ShowWindow($hCombo1, @SW_HIDE); Tab 1 Combo unsichtbar
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY