hallo zusammen,
ich habe das problem schon mal im forum erstellt, habe leider noch keine hilfe bekommen, vllt habe ich das problem nicht gut beschrieben.
da ist mein Code
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.8.1
Author:
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
#include <Array.au3>
#include <ListViewConstants.au3>
#include <Guilistview.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <File.au3>
Global $sHeader = "QUELLE|ZIEL|PROFIL"
Global $iEdit = -1
Global $sDBFile = @DesktopDir & "\datenbank.txt"
Local $MoveFile = 'F:\PoolData\#Move'
#Region Hauptfenster
Global $MainGui = GUICreate("Listview-Datenbank", 800, 600) ; Hauptfenster erstellen
Global $MainGUI_ListView = GUICtrlCreateListView($sHeader, 10, 0, 780, 500, $LVS_SHOWSELALWAYS) ; Listview erstellen
Global $MainGui_Handle = GUICtrlGetHandle($MainGUI_ListView) ; das Handle vom Listview wird für die UDF-Listview-Funktionen benötigt
_GUICtrlListView_SetColumn($MainGui_Handle, 0, "QUELLE", 320, 0)
_GUICtrlListView_SetColumn($MainGui_Handle, 1, "ZIEL", 320, 0)
_GUICtrlListView_SetColumn($MainGui_Handle, 2, "PROFIL", 160, 0)
Global $MainGui_Button_New = GUICtrlCreateButton("Neuer Eintrag", 10, 530, 80, 50, $BS_DEFPUSHBUTTON) ; Dieser Button ist der Default-Push-Button (wenn der User [Enter] drückt)
Global $Maingui_Button_Edit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 120, 530, 110, 50, $BS_MULTILINE) ; $BS_Multiline für mehrzeiligen Button
Global $MainGui_Button_inputFile = GUICtrlCreateButton("InputFile", 260, 530, 70, 50)
Global $MainGui_Button_MoveFiles = GUICtrlCreateButton("Move File(s)",350,530,70,50)
Global $MainGui_Button_Save = GUICtrlCreateButton("Speichern", 440, 530, 70, 50)
Global $MainGui_Button_Del = GUICtrlCreateButton("Markierte Einträge löschen", 540, 530, 90, 50, $BS_MULTILINE)
Global $MainGui_Button_DelAll = GUICtrlCreateButton("Alle Einträge löschen", 660, 530, 90, 50, $BS_MULTILINE)
Global $MainGui_CM = GUICtrlCreateContextMenu($MainGUI_ListView) ; ein Kontextmenü für das Listview erstellen
Global $MainGui_CMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $MainGui_CM) ; der 1. Kontextmenüeintrag
Global $MainGui_CMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $MainGui_CM) ; der 2. Kontextmenüeintrag
Global $MainGui_CMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $MainGui_CM) ; der 3. Kontextmenüeintrag
#EndRegion Hauptfenster
#Region Fenster für neuen Eintrag
Global $SubGui_NewLine = GUICreate("Neuer Eintrag", 632, 140, -1, -1, $WS_SYSMENU) ; das Fenster "Neuer Eintrag" erstellen
Global $NewLine_Header = StringSplit($sHeader, '||') ; Überschriften-Array
Global $Input_NewLine[$NewLine_Header[0]] ; Array für die Input-IDs
For $i = 1 To $NewLine_Header[0]
GUICtrlCreateLabel($NewLine_Header[$i], 1 + ($i-1) * 225, 15, 110, 20) ; Überschriften-Label erstellen
$Input_NewLine[$i-1] = GUICtrlCreateInput("", 2 + ($i-1) * 200, 30, 220, 20, Default, $WS_EX_STATICEDGE) ; Eingabefelder erstellen
Next
Global $Button_Create = GUICtrlCreateButton("Eintrag speichern", 154, 65, 120, 25, $BS_DEFPUSHBUTTON) ; Button zum speichern
Global $Button_CLose = GUICtrlCreateButton("schließen", 354, 65, 120, 25)
#EndRegion Fenster für neuen Eintrag
_GUICtrlListView_RegisterSortCallBack($MainGui_Handle)
GUISetState(@SW_SHOW, $MainGui)
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $MainGUI_ListView ; User hat auf eine Spaltenüberschrift geklickt
_GUICtrlListView_SortItems($MainGui_Handle, GUICtrlGetState($MainGUI_ListView))
Case $MainGui_Button_New, $MainGui_CMNew ; User hat auf "Neuer Eintrag" geklickt
WinSetTitle($SubGui_NewLine, "", "Neuer Eintrag")
GUISetState(@SW_SHOW, $SubGui_NewLine) ; das Fenster "Neuer Eintrag" anzeigen
GUISetState(@SW_DISABLE, $MainGui) ; das Hauptfenster deaktivieren
Case $Button_Create ; User hat auf "Eintrag speichern" im Fenster "Neuer Eintrag" geklickt
NewItem()
Case $Maingui_Button_Edit, $MainGui_CMEdit ; User hat auf "Eintrag bearbeiten" geklickt
WinSetTitle($MainGui_CMNew, "", "Eintrag bearbeiten")
GUISetState(@SW_SHOW, $SubGui_NewLine)
GUISetState(@SW_DISABLE, $MainGui)
Edit()
Case $MainGui_Button_inputFile ; User hat auf "InputFile" geklickt
AddRandomFiles ()
Case $MainGui_Button_MoveFiles ; User hat auf "MoveFile" geklickt
;MultiFileMove()
Case $MainGui_Button_Save ; User hat auf "speichern" geklickt
Save()
Case $MainGui_Button_Del, $MainGui_CMDel ; User hat auf "Markierte Einträge löschen" geklickt
If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($MainGui_Handle)
Case $MainGui_Button_DelAll ; User hat auf "Alle Einträge löschen" geklickt
If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($MainGui_Handle)
Case $Button_CLose ; User hat auf "schließen" im Fenster "Neuer Eintrag" geklickt
GUISetState(@SW_HIDE, $SubGui_NewLine)
GUISetState(@SW_ENABLE, $MainGui)
WinActivate($MainGui)
Case $GUI_EVENT_CLOSE ; User hat auf das Schließen-Symbol geklickt (bzw. die ESC-Taste gedrückt)
Switch $nMsg[1] ; erweiterte Abfrage für welches Fenster
Case $MainGui ; User will das Hauptfenster schließen
If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End() ; wenn ja, dann End-Funktion aufrufen
Case $SubGui_NewLine ; User will das "Neuer Eintrag"-Fenster schließen
$iEdit = -1
For $i = 0 To UBound($Input_NewLine) - 1
GUICtrlSetData($Input_NewLine[$i], "") ; Alle Eingabefelder leeren
Next
GUISetState(@SW_HIDE, $SubGui_NewLine) ; "Neuer Eintrag"-Fenster verstecken
GUISetState(@SW_ENABLE, $MainGui) ; Hauptfenster wieder aktivieren
WinActivate($MainGui) ; und in den Vordergrund holen
EndSwitch
EndSwitch
WEnd
Func NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
Local $sItem = ""
For $i = 0 To UBound($Input_NewLine) - 1 ; Schleife, um alle Eingabefelder durchzugehen
If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
_GUICtrlListView_SetItemText($MainGui_Handle, $iEdit, GUICtrlRead($Input_NewLine[$i]), $i) ; den Eintrag aus dem Eingabefeld ins Listview schreiben
Else ; sonst $iEdit = -1 (neuer Eintrag)
$sItem &= GUICtrlRead($Input_NewLine[$i]) & "|" ; den Eintrag aus dem Eingabefeld erstmal in einer Variablen ($sItem) speichern
GUICtrlSetData($Input_NewLine[$i], "") ; das entsprechende Eingabefeld leeren
EndIf
Next
If $iEdit > -1 Then ; wenn $iEdit > -1 (Eintrag bearbeiten), dann...
$iEdit = -1
GUISetState(@SW_HIDE, $SubGui_NewLine) ; "Neuer Eintrag"-Fenster verstecken
GUISetState(@SW_ENABLE, $MainGui) ; Hauptfenster wieder aktivieren
Sleep(3000)
WinActivate($MainGui) ; und in den Vordergrund holen
Else ; sonst $iEdit = -1 (neuer Eintrag)
GUICtrlSetState($NewLine_Header[0], $GUI_FOCUS) ; den Focus wieder auf das erste Eingabefeld setzen, für weitere Eingaben
GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $MainGui_ListView) ; mit den Werten aus $sItem einen neuen Listview-Eintrag hinzufügen
EndIf
EndFunc ;==>NewItem
Func Edit() ; Funktion zum bearbeiten eines Listview-Eintrags im "Eintrag bearbeiten"-Fenster
$iEdit = _GUICtrlListView_GetSelectionMark($MainGui_Handle) ; auslesen, welcher Listview-Eintrag markiert (bei mehreren, den obersten) ist
If $iEdit > -1 Then
Local $aItem = _GUICtrlListView_GetItemTextArray($MainGui_Handle, $iEdit) ; die Einträge aus dem Listview in ein Array holen
For $i = 1 To $aItem[0]
GUICtrlSetData($Input_NewLine[$i - 1], $aItem[$i]) ; und in die entsprechenden Eingabefelder schreiben
Next
EndIf
EndFunc ;==>Edit
Func AddRandomFiles()
Local $TempArray[1]
Local $aList = _FileListToArray($MoveFile, '*', 1)
If Not IsArray($aList) Then Return SetError(1, 0, '')
Local $iRan
For $i = 0 To 20
$iRan = Random(1, $aList[0], 1)
_ArraySearch($TempArray, $aList[$iRan]); Suchen ob Eintrag schon existiert
If @error Then; Eintrag existiert nicht
GUICtrlCreateListViewItem($MoveFile & '\' & $aList[$iRan] & '|' & $MoveFile & '\' & $aList[$iRan], $MainGUI_ListView)
_ArrayAdd($TempArray, $aList[$iRan]); Datei in Liste einfügen
EndIf
Next
Return
EndFunc ;==> AddRandomFiles
Func Save() ; Datenbank-Datei speichern
Local $sItem
Local $iCount = _GUICtrlListView_GetItemCount($MainGui_Handle) - 1
Local $NeuFile = FileOpen($sDBFile, 2)
If $NeuFile <> -1 Then
For $i = 0 To $iCount
$sItem = _GUICtrlListView_GetItemTextString($MainGui_Handle, $i)
FileWriteLine($NeuFile, $sItem)
Next
FileClose($NeuFile)
EndIf
EndFunc ;==>Save
Func End()
Save()
_GUICtrlListView_UnRegisterSortCallBack($MainGui_Handle)
Exit ; Programm beenden
EndFunc
ich wollte die Funktion AddRandomFiles() so schreiben: ich habe meine Quelle, Ziel und Profil in einem txt file definiert bsp. f:\PoolData\PoolEMDB_bck\MGF3-YZ1.txt;F:\20_Endmessen\30_Charakterisierung\MGF3-YZ1.txt;MGFT3-YZ
und möchte dass meine Quelle: f:\PoolData\PoolEMDB_bck\MGF3-YZ1.txt
Ziel : F:\20_Endmessen\30_Charakterisierung\MGF3-YZ1.txt
profil : MGFT3-YZ
in GUI listView einfügen.
ich bekomme aber in mein GUI ListView nicht den Inhalt sondern den name von dem File und schreibt das gleiche bei der Quelle und Ziel, so sieht das aus: