Erneute Hilfe bei Listview-Problem

  • Hallo an alle.
    Vor ein paar Tagen war ich schon einmal mit dem Qullcode im Forum um Hilfe zu bekommen.
    Hat auch alles Super geklappt.
    Ich habe jetzt nur noch ein winziges Problem.

    Wenn ich jetzt auf "Neuer Eintrag"; "Makierten Eintrag bearbeiten" oder "Prüfungen eintragen" Klicke,
    wird mir das Feld mit allen eintragungen in einer Zeile angezeigt.

    Wie kann ich die Eintragungen "Kp.|Y-Nummer|Gerät|Ser.Nr.|Bediener" in einer Zeile und die
    Eintragungen "Letzte TMP|BGV A3 am|BGV D8 am|BGV D36 am|TDv 023/024 am|BGR 500 am" in
    der 2 zeile anzeigen lassen.


    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    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

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

    #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')
    GUICtrlSetState(-1, $GUI_DISABLE)
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 640, 65, 120, 25, $BS_DEFPUSHBUTTON)
    #endregion Fenster für neuen Eintrag

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

    _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")
    For $i = 0 To 4
    GUICtrlSetState($aNew[$i], $GUI_ENABLE)
    Next
    For $i = 5 To 10
    GUICtrlSetState($aNew[$i], $GUI_DISABLE)
    Next
    GUISetState(@SW_SHOW, $hGuiNew)
    GUISetState(@SW_DISABLE, $hGui)
    Case $hEdit, $hCMEdit
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten")
    For $i = 0 To 4
    GUICtrlSetState($aNew[$i], $GUI_ENABLE)
    Next
    For $i = 5 To 10
    GUICtrlSetState($aNew[$i], $GUI_DISABLE)
    Next
    GUISetState(@SW_SHOW, $hGuiNew)
    GUISetState(@SW_DISABLE, $hGui)
    Edit()
    Case $hAendern, $hCAendern
    WinSetTitle($hGuiNew, "", "Prüfungen eintragen")
    For $i = 0 To 4
    GUICtrlSetState($aNew[$i], $GUI_DISABLE)
    Next
    For $i = 5 To 10
    GUICtrlSetState($aNew[$i], $GUI_ENABLE)
    Next
    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 ;==>End
    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

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

    EndFunc ;==>NewItem
    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

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

    EndFunc ;==>Edit

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

    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 ;==>Load
    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 ;==>Save

    [/autoit]

    Einmal editiert, zuletzt von Croco1984 (29. Dezember 2012 um 17:15)

  • Du mußt nur abfragen ob $i unter einer bestimmten Zahl liegt.
    Wenn kleiner als ... dann 1. Zeile
    sonst 2. Zeile

    Spoiler anzeigen
    [autoit]

    Global $hoehe_beginn = 15 ; Höhe 1. Zeile
    Global $hoehe_tmp_versatz = 40 ;Höhe Veratz 2. Zeile
    Global $i_grenze = 5 ; Alle Einträge bis zu dieser Zahl stehen in der 1. Zeile

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

    For $i = 1 To $aHeader[0]
    If $i <= $i_grenze Then ;1. Zeile
    $x_tmp = $i
    $hoehe_tmp = $hoehe_beginn
    Else ;2. Zeile
    $x_tmp = $i - $i_grenze
    $hoehe_tmp = $hoehe_beginn + $hoehe_tmp_versatz
    EndIf

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

    GUICtrlCreateLabel($aHeader[$i], 4 + ($x_tmp - 1) * 125, $hoehe_tmp, 110, 20)
    GUICtrlSetFont(-1, 8, 400, 0, 'Verdana')
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($x_tmp - 1) * 125, $hoehe_tmp + 15, 120, 20, Default, $WS_EX_STATICEDGE)
    GUICtrlSetFont(-1, 10, 600, 0, 'Verdana')
    GUICtrlSetState(-1, $GUI_DISABLE)
    Next

    [/autoit]
  • Danke für die schnelle Antwort
    Hat auch super geklappt!!!

    Ein frohes neues Jahr schon einmal von mir!