Hallo an alle!
Ich bin neu bei AutoIT un im diesem Forum. Ich bin vor ein paar Tagen auf ein Forum-Beitrag von 2011 aufmerksam geworden! Bei einem ListView-Datenbank-Beispiel vom Forum-Mitglied OSCAR habe ich ein paar Probleme. Ich wollte das Beispiel auf meine Bedürfnisse anpassen. Im großen und ganzen hat es auch funktioniert. Aber bei ein paar kleinigkeiten habe ich noch Probleme und Hoffe das mir einer von Euch weiter helfen kann.
Als erstes ist hier das von mir leicht abgwandelte Beispiel
[autoit]#include
#include
#include
#include
#include
Global $sHeader = "Kp.|Y-Nummer|Gerät|Ser.Nr.|Bediener|Letzte TMP|BGV A3 am|BGV D8 am|BGV D36 am|TDv 023/024 am|BGR 500 am"
Global $neuer_Eintrag = "Kp.|Y-Nummer|Gerät|Ser.Nr.|Bediener"
Global $Eintragungen = "Letzte TMP|BGV A3 am|BGV D8 am|BGV D36 am|TDv 023/024 am|BGR 500 am"
Global $sDBFile = @ScriptDir & "\datenbank.txt"
Global $iEdit = -1
#region Hauptfenster
Global $hGui = GUICreate("Fahrzeuge", 910, 480)
GUISetBkColor(0xCCCCCC)
Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 910, 400, $LVS_SHOWSELALWAYS)
Global $hLVHandle = GUICtrlGetHandle($hListView)
_GUICtrlListView_SetColumn($hLVHandle, 0, "Kp.", 30, 0)
_GUICtrlListView_SetColumn($hLVHandle, 1, "Y-Nummer", 120, 0)
_GUICtrlListView_SetColumn($hLVHandle, 2, "Gerät", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 3, "Ser.Nr.", 100, 0)
_GUICtrlListView_SetColumn($hLVHandle, 4, "Bediener", 100, 0)
_GUICtrlListView_SetColumn($hLVHandle, 5, "Letzte TMP", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 6, "BGV A3 am", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 7, "BGV D8 am", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 8, "BGV D36 am", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 9, "TDv 023/024 am", 80, 0)
_GUICtrlListView_SetColumn($hLVHandle, 10, "BGR 500 am", 80, 0)
Global $hSearchListView = GUICtrlCreateListView($sHeader, 0, 0, 910, 400, $LVS_SHOWSELALWAYS)
GUICtrlSetState(-1, $GUI_HIDE)
Global $hSearchLVHandle = GUICtrlGetHandle($hSearchListView)
_GUICtrlListView_SetColumn($hSearchLVHandle, 0, "Kp.", 30, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 1, "Y-Nummer", 120, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 2, "Gerät", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 3, "Ser.Nr.", 100, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 4, "Bediener", 100, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 5, "Letzte TMP", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 6, "BGV A3 am", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 7, "BGV D8 am", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 8, "BGV D36 am", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 9, "TDv 023/024 am", 80, 0)
_GUICtrlListView_SetColumn($hSearchLVHandle, 10, "BGR 500 am", 80, 0)
GUICtrlCreateLabel("Suchbegriff:", 10, 412, 90, 20)
GUICtrlSetFont(-1, 11)
Global $hSearch = GUICtrlCreateInput("", 100, 410, 495, 20)
GUICtrlSetFont(-1, 11)
Global $hSearchStart = GUICtrlCreateButton("Suche...", 605, 410, 60, 20, $BS_DEFPUSHBUTTON)
GUICtrlSetFont(-1, 9)
Global $hSearchReset = GUICtrlCreateButton("<-", 675, 410, 20, 20)
GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 10, 440, 85, 35)
Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 105, 440, 110, 35, $BS_MULTILINE)
Global $hAendern = GUICtrlCreateButton("Prüfungen eintragen", 225, 440, 110, 35, $BS_MULTILINE)
Global $hLoad = GUICtrlCreateButton("Laden", 345, 440, 70, 35)
Global $hSave = GUICtrlCreateButton("Speichern", 425, 440, 70, 35)
Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 505, 440, 90, 35, $BS_MULTILINE)
Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 605, 440, 90, 35, $BS_MULTILINE)
Global $hCM = GUICtrlCreateContextMenu($hListView)
Global $hCMNew = GUICtrlCreateMenuItem("Neuer Eintrag", $hCM)
Global $hCAendern = GUICtrlCreateMenuItem("Prüfungen eintragen", $hCM)
Global $hCMEdit = GUICtrlCreateMenuItem("Eintrag bearbeiten", $hCM)
Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM)
#endregion Hauptfenster
#region Fenster für neuen Eintrag
Global $hGuiNew = GUICreate("Neuer Eintrag", 1400, 140, -1, -1, $WS_SYSMENU)
Global $aHeader = StringSplit($sHeader, '|')
Global $aNew[$aHeader[0]]
For $i = 1 To $aHeader[0]
GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 125, 15, 110, 20)
GUICtrlSetFont(-1, 8, 400, 0, 'Verdana')
$aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 125, 30, 120, 20, Default, $WS_EX_STATICEDGE)
GUICtrlSetFont(-1, 10, 600, 0, 'Verdana')
Next
Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 640, 65, 120, 25, $BS_DEFPUSHBUTTON)
#endregion Fenster für neuen Eintrag
_GUICtrlListView_RegisterSortCallBack($hLVHandle)
GUISetState(@SW_SHOW, $hGui)
If FileExists($sDBFile) Then Load()
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $hListView
_GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView))
Case $hSearchStart
GUICtrlSetState($hSearchStart, $GUI_DISABLE)
_GUICtrlListView_DeleteAllItems($hSearchLVHandle)
Dim $sSearch = GUICtrlRead($hSearch), $sItem
For $i = 0 To _GUICtrlListView_GetItemCount($hLVHandle) - 1
$sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
If StringInStr($sItem, $sSearch) Then GUICtrlCreateListViewItem($sItem, $hSearchListView)
Next
GUICtrlSetState($hListView, $GUI_HIDE)
GUICtrlSetState($hSearchListView, $GUI_SHOW)
GUICtrlSetState($hSearchReset, $GUI_ENABLE)
Case $hSearchReset
GUICtrlSetData($hSearch, "")
GUICtrlSetState($hSearchListView, $GUI_HIDE)
GUICtrlSetState($hListView, $GUI_SHOW)
GUICtrlSetState($hSearchStart, $GUI_ENABLE)
GUICtrlSetState($hSearchReset, $GUI_DISABLE)
Case $hNew, $hCMNew
WinSetTitle($hGuiNew, "", "Neuer Eintrag")
GUISetState(@SW_SHOW, $hGuiNew)
GUISetState(@SW_DISABLE, $hGui)
Case $hEdit, $hCMEdit
WinSetTitle($hGuiNew, "", "Eintrag bearbeiten")
GUISetState(@SW_SHOW, $hGuiNew)
GUISetState(@SW_DISABLE, $hGui)
Edit()
Case $hLoad
Load()
Case $hSave
Save()
Case $hDel, $hCMDel
If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
Case $hDelAll
If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
Case $hCreate
NewItem()
Case $GUI_EVENT_CLOSE
Switch $nMsg[1]
Case $hGui
If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End()
Case $hGuiNew
$iEdit = -1
For $i = 0 To UBound($aNew) - 1
GUICtrlSetData($aNew[$i], "")
Next
GUISetState(@SW_HIDE, $hGuiNew)
GUISetState(@SW_ENABLE, $hGui)
WinActivate($hGui)
EndSwitch
EndSwitch
WEnd
Func End()
;~ Save()
_GUICtrlListView_UnRegisterSortCallBack($hLVHandle)
Exit
EndFunc
Func NewItem()
Local $sItem = ""
For $i = 0 To UBound($aNew) - 1
If $iEdit > -1 Then
_GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i)
Else
$sItem &= GUICtrlRead($aNew[$i]) & "|"
EndIf
GUICtrlSetData($aNew[$i], "")
Next
If $iEdit > -1 Then
$iEdit = -1
GUISetState(@SW_HIDE, $hGuiNew)
GUISetState(@SW_ENABLE, $hGui)
Sleep(300)
WinActivate($hGui)
Else
GUICtrlSetState($aNew[0], $GUI_FOCUS)
GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView)
EndIf
EndFunc
Func Edit()
$iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle)
If $iEdit > -1 Then
Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit)
For $i = 1 To $aItem[0]
GUICtrlSetData($aNew[$i - 1], $aItem[$i])
Next
EndIf
EndFunc
Func Load()
Local $hFile, $sContent, $aNewItems
$hFile = FileOpen($sDBFile, 0)
If $hFile <> -1 Then
$sContent = FileRead($hFile)
FileClose($hFile)
$sContent = StringTrimRight($sContent, 2)
$aNewItems = StringSplit($sContent, @CRLF, 1)
If Not IsArray($aNewItems) Then Return
_GUICtrlListView_BeginUpdate($hLVHandle)
For $i = 1 To $aNewItems[0]
GUICtrlCreateListViewItem($aNewItems[$i], $hListView)
Next
_GUICtrlListView_EndUpdate($hLVHandle)
EndIf
EndFunc
Func Save()
Local $sItem, $hFile, $iCount
$iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1
If $iCount = -1 Then Return FileDelete($sDBFile)
$hFile = FileOpen($sDBFile, 2)
If $hFile <> -1 Then
For $i = 0 To $iCount
$sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
FileWriteLine($hFile, $sItem)
Next
FileClose($hFile)
EndIf
EndFunc
1.Problem: Mit den Button "Neuer Eintrag", soll in der GUI nur "KP.|Y-Nummer|Gerät|Ser.Nr|Bediener" eingetragen werden.
2.Problem: Durch den Button "Makierter Eintrag bearbeiten", soll "KP.|Y-Nummer|Gerät|Ser.Nr|Bediener" verändert werden können.
3.Problem: Und durch den Button "Prüfungen eintragen", soll in der makierten Zeile "Letzte TMP|BGV A3 am|BGV D8 am|BGV D36 am|TDv 023/024 am|BGR 500 am" verändert werden.
Ich hoffe es kann mir einer schnellstmöglich weiterhelfen! Dazu schon einmal meinen Dank und Schöne Feiertage!!!