Hey,
bei und im Büro werden alle Kundeninformationen (Schriftverkehr, Anlagen usw.) in einem zentralen Ordner gespeichert.
Ordnerstruktur:
Dadurch muss ich mich immer durch die lange Kundenliste kämpfen um zum gesuchten Ordner zu kommen. Mit der Windowshilfe komme ich irgendwie auch nicht so zurecht.
Daher dachte ich an ein kleines Autoit-Programm - das ist aber gar nicht so einfach
Ich wollte den gesuchten Ordner mit hilfe der Infos aus einer Inputbox ermitteln.
Quasi so:
1. Schritt: alle Ordner einlesen
2. Schritt: Eingabe in die Inputbox, z.B. den Buchstaben A
3. Schritt: es werden nurnoch alle Ordner mit Anfangsbuchstabe A angezeigt
Allerdings fehlt mir irgendwie der Ansatz dazu. Muss ich bei jedem aufgelisteten Ordner den Anfangsbuchstaben ermittel und dann mit der Eingabe vergleichen?
Gibts vielleicht eine viel einfachere Lösung mit dem Mitteln der Windowshilfe?
Beim Schreiben fällt mir noch eine gute Beschreibung ein: Ich suche die Funktion der Autoithilfe (Index) nur eben für Ordnernamen
So und damit es nicht heisst ich hab gar nichts gemacht ( ) hier mal das drumherum:
Spoiler anzeigen
#include<Guilistview.au3>
#include <File.au3>
;#include <Array.au3>
Global Const $NB_DBLCLK = -3
Global Const $WM_NOTIFY = 0x004E
Global Const $GUI_EVENT_CLOSE = -3
Global $hGui = GUICreate("", 300, 480)
Global $hListView = GUICtrlCreateListView("Ordner", 0, 0, 280, 420, $LVS_SHOWSELALWAYS)
Global $hLoad = GUICtrlCreateButton("Test", 180, 440, 70, 20)
Global $isuche = GUICtrlCreateInput("", 10, 440,150)
Global $path = 'C:\Programme' ;Beispiel
Global $hLVHandle = GUICtrlGetHandle($hListView)
_GUICtrlListView_SetColumn($hLVHandle, 0, "Ordner", 240, 0)
_GUICtrlListView_RegisterSortCallBack($hLVHandle)
GUISetState(@SW_SHOW, $hGui)
GUIRegisterMsg($WM_NOTIFY, "_DoubleClickOnListView")
_Load()
while 1
$Msg = GUIGetMsg()
switch $Msg
case $GUI_EVENT_CLOSE
_GUICtrlListView_UnRegisterSortCallBack($hLVHandle)
Exit
case $hLoad
MsgBox(1, "", _GUICtrlListView_GetItemCount($hLVHandle)) ;nur zu testzwecken
EndSwitch
wend
Func _Load() ;Array ins Listview laden
_GUICtrlListView_BeginUpdate($hLVHandle) ; Listview sperren
$aFolder = _FileListToArray($path, "*", 2)
for $i = 1 to $aFolder[0]
$string = stringsplit($afolder[$i], "\")
GUICtrlCreateListViewItem($string[$string[0]], $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
next
_GUICtrlListView_EndUpdate($hLVHandle) ; Listview wieder freigeben
EndFunc
Func _Openfolder()
local $iselection = _GUICtrlListView_GetSelectionMark($hLVHandle)
local $itext =_GUICtrlListView_GetItemText ($hLVHandle,$iselection)
ShellExecute($path & "\" & $itext)
endfunc
Func _DoubleClickOnListView($hWnd, $Msg, $wParam, $lParam) ;Doppelklick auf ein Listviewitem
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return
$event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
If $wParam = $hListView and $event = $NB_DBLCLK Then ;Wenn der Klick auf das ListView ging und es ein Doppelklick war, dann
_Openfolder()
EndIf
$tagNMHDR = 0
$event = 0
$lParam = 0
EndFunc ;==>_DoubleClickOnListView