Files
aufmass-web/_legacy/includes/LV_Eingabe_func.au3
T

2487 lines
93 KiB
AutoIt

;LV_Eingabe_func.au3
Func _ListviewAutoWidthHeader($vLVName)
Local $hLV = GUICtrlGetHandle($vLVName)
$iCountColum = _GUICtrlListView_GetColumnCount($hLV)
For $i = 0 To $iCountColum - 1
_GUICtrlListView_SetColumnWidth($hLV, $i, $LVSCW_AUTOSIZE_USEHEADER)
Next
If $vLVName = $LVE_TAB_LV_PosListe Then
_GUICtrlListView_SetColumnWidth($hLV, 1, 250) ; Kurztext maximal auf 250.
EndIf
If $vLVName = $LV_Aufm Then
_GUICtrlListView_SetColumnWidth($hLV, 8, 250) ; Aufmaß Leistungstext maximal auf 250.
EndIf
EndFunc ;==>_ListviewAutoWidthHeader
Func _LV_LVAufMa_clear()
If MsgBox(3, "Liste Löschen???", "Wollen Sie die Liste wirklich löschen?") = 6 Then
_GUICtrlListView_DeleteAllItems($LV_Aufm)
_GUIListViewEx_Close($iLV_Aufma_Index)
;~ $aGLVEx_Data[1][2] = ""
EndIf
EndFunc ;==>_LV_LVAufMa_clear
Func _LV_LVAaufMa_List_import_from_TXT()
;~ _GUIListViewEx_SetActive($iLV_Left_Index)
Local $sFilePath, $aArray
;~ _GUICtrlListView_DeleteAllItems($LV_Aufm)
$aListeImport = ""
Local $message = "Bitte wählen Sie die Import Datei aus!"
Local $sFilePath = FileOpenDialog($message, @ScriptDir & "\_Aufmaße\", "Text (*.txt)", 1 + 4)
If @error Then
MsgBox(4096, "", "Keine Datei(en) ausgewählt")
Return "No Datei"
Else
$sFilePath = StringReplace($sFilePath, "|", @CRLF)
;~ MsgBox(4096, "", "Es wurde(n) " & $var & " ausgewählt")
_FileReadToArray($sFilePath, $aArray)
;~ _ArrayDisplay($aArray)
_Write_to_Console("importiere Aufmaß...")
If IsArray($aArray) Then
Dim $aListeImport[$aArray[0] - 15][13]
$iZ = 0
For $i = 16 To UBound($aArray) - 1
$aTemp = StringSplit($aArray[$i], "|")
For $ii = 1 To UBound($aTemp) - 1
$aListeImport[$iZ][$ii - 1] = $aTemp[$ii]
Next
$iZ = $iZ + 1
Next
_GUICtrlListView_AddArray($LV_Aufm, $aListeImport)
; Initiate LVEx - use read content as array - count parameter set - red insert mark - drag image - move edit by click + headers editable
;~ $iLV_Aufma_Index = _GUIListViewEx_Init($LV_Aufm, "", 0, 0xFF0000, True, 2)
$iLV_Aufma_Index = _GUIListViewEx_Init($LV_Aufm, $aListeImport, 0, 0xFF0000, True, 2)
;~ $iLV_Aufma_Index = _GUIListViewEx_Init($LV_Aufm, $aListeImport, 0, 0, True, 2 )
;~ _ArrayDisplay($aListeImport)
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;2;3;4;5;6")
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, 9, 2, $cDataB, True)
;~ $aGLVEx_Data[1][2] = $aListeImport
;~ __GUIListViewEx_ReWriteLV($iLV_Left_Index, $aListeImport,"", 1, "")
EndIf
;~ _DebugArrayDisplay($aArray)
$sTeilaufma = StringReplace($aArray[2], "Teilaufma=", "")
If $sTeilaufma = "X" Then
GUICtrlSetState($kopf_TAB_rd_teilauf, $GUI_CHECKED)
;~ GUICtrlSetState($radio_1, $GUI_CHECKED)
Else
GUICtrlSetState($kopf_TAB_rd_teilauf, $GUI_UNCHECKED)
EndIf
$sSchlussaufma = StringReplace($aArray[3], "Schlussaufma=", "")
If $sSchlussaufma = "X" Then
GUICtrlSetState($kopf_TAB_rd_schluss, $GUI_CHECKED)
Else
GUICtrlSetState($kopf_TAB_rd_schluss, $GUI_UNCHECKED)
EndIf
GUICtrlSetData($kopf_tab_txt_datum, StringReplace($aArray[4], "Datum=", ""))
GUICtrlSetData($kopf_tab_txt_baustelle, StringReplace($aArray[5], "Baustelle=", ""))
GUICtrlSetData($kopf_tab_txt_abrufnr, StringReplace($aArray[6], "AbrufNr=", ""))
GUICtrlSetData($kopf_tab_txt_smnr, StringReplace($aArray[7], "SMNr=", ""))
GUICtrlSetData($kopf_tab_chb_vertrag, StringReplace($aArray[8], "Vertrag=", ""))
GUICtrlSetData($kopf_tab_datum_start, StringReplace($aArray[9], "StartZ=", ""))
GUICtrlSetData($kopf_tab_txt_datum_ende, StringReplace($aArray[10], "EndZ=", ""))
GUICtrlSetData($kopf_tab_txt_aspa, StringReplace($aArray[11], "AspaN=", ""))
GUICtrlSetData($kopf_tab_txt_telnr, StringReplace($aArray[12], "AspaTel=", ""))
GUICtrlSetData($kopf_tab_txt_bauabschnitt, StringReplace($aArray[13], "Bauabschnitt=", ""))
GUICtrlSetData($kopf_tab_txt_kolone, StringReplace($aArray[14], "Kolone=", ""))
_GUICtrlComboBox_SelectString($lve_tab_chb_vertrag, StringReplace($aArray[8], "Vertrag=", ""))
_GUICtrlComboBox_SelectString($kopf_tab_chb_vertrag, StringReplace($aArray[8], "Vertrag=", ""))
;~ _GUICtrlComboBox_SelectString($kopf_tab_txt_aspa, StringReplace($aArray[11], "AspaN=", ""))
$aStartDatum = StringSplit(GUICtrlRead($kopf_tab_datum_start), ".")
;~ _ArrayDisplay($aStartDatum)
If IsArray($aStartDatum) Then
If UBound($aStartDatum) = 3 Then
$iYear = $aStartDatum[3]
$iMonth = $aStartDatum[2]
$iDay = $aStartDatum[1]
_GUICtrlMonthCal_SetCurSel($kopf_tab_datumfeld_start, $iYear, $iMonth, $iDay)
EndIf
EndIf
$aStartDatum = StringSplit(GUICtrlRead($kopf_tab_txt_datum_ende), ".")
If IsArray($aStartDatum) Then
If UBound($aStartDatum) = 3 Then
$iYear = $aStartDatum[3]
$iMonth = $aStartDatum[2]
$iDay = $aStartDatum[1]
_GUICtrlMonthCal_SetCurSel($kopf_tab_datumfeld_ende, $iYear, $iMonth, $iDay)
EndIf
EndIf
EndIf
EndFunc ;==>_LV_LVAaufMa_List_import_from_TXT
Func _LV_LVAaufMa_List_import_from_TXT_Pfad($sPfad)
;~ _GUIListViewEx_SetActive($iLV_Left_Index)
Local $sFilePath, $aArray
;~ _GUICtrlListView_DeleteAllItems($LV_Aufm)
$aListeImport = ""
_FileReadToArray($sPfad, $aArray)
;~ _ArrayDisplay($aArray)
_Write_to_Console("importiere Aufmaß...")
If IsArray($aArray) Then
Dim $aListeImport[$aArray[0] - 15][13]
$iZ = 0
For $i = 16 To UBound($aArray) - 1
$aTemp = StringSplit($aArray[$i], "|")
For $ii = 1 To UBound($aTemp) - 1
$aListeImport[$iZ][$ii - 1] = $aTemp[$ii]
Next
$iZ = $iZ + 1
Next
_GUICtrlListView_AddArray($LV_Aufm, $aListeImport)
Global $aLV_List_Right = _GUIListViewEx_ReadToArray($LV_Aufm, 1)
; The array as read from Right ListView and used subsequently
;_ArrayDisplay($aLV_List_Right, "Read from Right ListView")
; Initiate LVEx - use read content as array - count parameter set - red insert mark - drag image - move edit by click + headers editable
$iLV_Aufma_Index = _GUIListViewEx_Init($LV_Aufm, $aLV_List_Right, 0, 0xFF0000, True, 2)
;~ $iLV_Aufma_Index = _GUIListViewEx_Init($LV_Aufm, $aListeImport, 0, 0, True, 2 )
;~ _ArrayDisplay($aListeImport)
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;2;3;4;5;6")
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, 9, 2, $cDataB, True)
;~ $aGLVEx_Data[1][2] = $aListeImport
;~ __GUIListViewEx_ReWriteLV($iLV_Left_Index, $aListeImport,"", 1, "")
EndIf
;~ _DebugArrayDisplay($aArray)
$sTeilaufma = StringReplace($aArray[2], "Teilaufma=", "")
If $sTeilaufma = "X" Then
GUICtrlSetState($kopf_TAB_rd_teilauf, $GUI_CHECKED)
;~ GUICtrlSetState($radio_1, $GUI_CHECKED)
Else
GUICtrlSetState($kopf_TAB_rd_teilauf, $GUI_UNCHECKED)
EndIf
$sSchlussaufma = StringReplace($aArray[3], "Schlussaufma=", "")
If $sSchlussaufma = "X" Then
GUICtrlSetState($kopf_TAB_rd_schluss, $GUI_CHECKED)
Else
GUICtrlSetState($kopf_TAB_rd_schluss, $GUI_UNCHECKED)
EndIf
GUICtrlSetData($kopf_tab_txt_datum, StringReplace($aArray[4], "Datum=", ""))
GUICtrlSetData($kopf_tab_txt_baustelle, StringReplace($aArray[5], "Baustelle=", ""))
GUICtrlSetData($kopf_tab_txt_abrufnr, StringReplace($aArray[6], "AbrufNr=", ""))
GUICtrlSetData($kopf_tab_txt_smnr, StringReplace($aArray[7], "SMNr=", ""))
GUICtrlSetData($kopf_tab_chb_vertrag, StringReplace($aArray[8], "Vertrag=", ""))
GUICtrlSetData($kopf_tab_datum_start, StringReplace($aArray[9], "StartZ=", ""))
GUICtrlSetData($kopf_tab_txt_datum_ende, StringReplace($aArray[10], "EndZ=", ""))
GUICtrlSetData($kopf_tab_txt_aspa, StringReplace($aArray[11], "AspaN=", ""))
GUICtrlSetData($kopf_tab_txt_telnr, StringReplace($aArray[12], "AspaTel=", ""))
GUICtrlSetData($kopf_tab_txt_bauabschnitt, StringReplace($aArray[13], "Bauabschnitt=", ""))
GUICtrlSetData($kopf_tab_txt_kolone, StringReplace($aArray[14], "Kolone=", ""))
_GUICtrlComboBox_SelectString($lve_tab_chb_vertrag, StringReplace($aArray[8], "Vertrag=", ""))
_GUICtrlComboBox_SelectString($kopf_tab_chb_vertrag, StringReplace($aArray[8], "Vertrag=", ""))
_GUICtrlComboBox_SelectString($kopf_tab_txt_aspa, StringReplace($aArray[11], "AspaN=", ""))
$aStartDatum = StringSplit(GUICtrlRead($kopf_tab_datum_start), ".")
;~ _ArrayDisplay($aStartDatum)
If IsArray($aStartDatum) Then
If UBound($aStartDatum) = 3 Then
$iYear = $aStartDatum[3]
$iMonth = $aStartDatum[2]
$iDay = $aStartDatum[1]
_GUICtrlMonthCal_SetCurSel($kopf_tab_datumfeld_start, $iYear, $iMonth, $iDay)
EndIf
EndIf
$aStartDatum = StringSplit(GUICtrlRead($kopf_tab_txt_datum_ende), ".")
If IsArray($aStartDatum) Then
If UBound($aStartDatum) = 3 Then
$iYear = $aStartDatum[3]
$iMonth = $aStartDatum[2]
$iDay = $aStartDatum[1]
_GUICtrlMonthCal_SetCurSel($kopf_tab_datumfeld_ende, $iYear, $iMonth, $iDay)
EndIf
EndIf
EndFunc ;==>_LV_LVAaufMa_List_import_from_TXT_Pfad
Func _LV_LVaufMa_Save_List2Txt()
;~ $aInhalt = _GUIListViewEx_ReturnArray($iLV_Left_Index, 3)
;~ _ArrayDisplay($aInhalt)
;~
;~ $sTest = _GUIListViewEx_GetActive()
;~ MsgBox(64, "asfasdg", $sTest)
;~ _Write_to_Console(_GUIListViewEx_GetActive())
;~ _DebugArrayDisplay($aGLVEx_Data)
If IsArray($aGLVEx_Data) Then
For $i = 1 To UBound($aGLVEx_Data) - 1
;~ ConsoleWrite("Zeile " & $i & @CRLF)
;[n][2] = Shadow array
_DebugArrayDisplay($aGLVEx_Data[$i][2], "Shadow array| " & $i)
;~ MsgBox(64, "Shadow Array", "")
;~ ;[n][7] = Editable columns data
;~ _DebugArrayDisplay($aGLVEx_Data[$i][7], "Editable columns data")
;~ MsgBox(64, "Editable columns data", "")
;~ ;[n][23] - Default user colours
;~ _DebugArrayDisplay($aGLVEx_Data[$i][23], "Default user colours")
;~ MsgBox(64, "Editable columns data", "")
;~ ;[n][25] - Header data array
;~ _DebugArrayDisplay($aGLVEx_Data[$i][25], "Header data array")
;~ MsgBox(64, "Header data array", "")
;~ 0x000000
;~ 0xFEFEFE
;~ 0xFFFFFF
;~ 0xCC6600
Next
EndIf
EndFunc ;==>_LV_LVaufMa_Save_List2Txt
Func _LV_LVaufMa_add_Zeile()
;~ Global $iPosNr = _GUICtrlListView_GetItemText($lve_tab_lv_posliste, $vRet[1], 0)
;~ Global $iKurztext = _GUICtrlListView_GetItemText($lve_tab_lv_posliste, $vRet[1], 1)
;~ Global $iEinheit = _GUICtrlListView_GetItemText($lve_tab_lv_posliste, $vRet[1], 2)
;~ Global $iPreis = _GUICtrlListView_GetItemText($lve_tab_lv_posliste, $vRet[1], 3)
If GUICtrlRead($chb_letztezeile) = $GUI_CHECKED Then
IniWrite($sPfadIni, "Setup", "addmarkpos", "False")
Else
IniWrite($sPfadIni, "Setup", "addmarkpos", "True")
EndIf
Local $aIndex = _GUICtrlListView_GetSelectedIndices($lve_tab_lv_posliste, True)
;~ _ArrayDisplay($aIndex)
If $aIndex[0] = 1 Then
;~ ;nur eins markiert!
;_ArrayDisplay($aIndex)
$sPosi_Cord = _GUIListViewEx_GetLastSelItem($iLV_Aufma_Index)
$aPos = StringSplit($sPosi_Cord, "|")
$aItem = _GUICtrlListView_GetItemTextArray($lve_tab_lv_posliste, $aIndex[1])
GUICtrlSetData($lve_tab_txt_posnr, $aItem[1])
GUICtrlSetData($lve_tab_txt_kurztext, $aItem[2])
$sEinheit = $aItem[3]
$iPreis = $aItem[4]
$iMengeVorne = _replaceKom2Punkt(GUICtrlRead($LVE_TAB_txt_menge))
$iFakotr = _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_faktor))
$iMengeHinten = $iMengeVorne * $iFakotr
$iGesamtsumme = $iMengeHinten * _replaceKom2Punkt($iPreis)
$sString = GUICtrlRead($lve_tab_txt_rsa) & "|" & GUICtrlRead($lve_tab_txt_posnr) & "|" & GUICtrlRead($lve_tab_txt_faktor) & "|" & GUICtrlRead($lve_tab_txt_leange) & "|" & GUICtrlRead($lve_tab_txt_breite) & "|" & GUICtrlRead($lve_tab_txt_tiefe) & "|" & GUICtrlRead($LVE_TAB_txt_menge) & "|" & $sEinheit & "|" & GUICtrlRead($lve_tab_txt_kurztext) & "|" & GUICtrlRead($LVE_TAB_chb_bemerkung) & "|" & $iMengeHinten & "|" & $aItem[4] & "|" & _replacePunkt2Koma($iGesamtsumme)
$iCount = _GUICtrlListView_GetItemCount($lv_aufm)
;lese von Ini aus
$sAddMarkPos = IniRead($sPfadIni, "Setup", "addmarkpos", "False")
If $sAddMarkPos = "True" Then
;wenn True dann einfügen bei zuletzt markierter Position
If $sPosi_Cord = "" Then
$iCount = -1
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $iCount, $sString)
Else
If $aPos[2] + 1 = $iCount Then
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $aPos[2], $sString)
Else
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $aPos[2] + 1, $sString)
EndIf
EndIf
Else
$iCount = -1
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $iCount, $sString)
EndIf
Else
;mehrere markiert und hinzugefügt
;~ _DebugArrayDisplay($aIndex)
;~ _ArraySort($aIndex, 1, 1)
For $i = 1 To UBound($aIndex) - 1
$sPosi_Cord = _GUIListViewEx_GetLastSelItem($iLV_Aufma_Index)
$aPos = StringSplit($sPosi_Cord, "|")
If IsArray($aPos) Then
$aItem = _GUICtrlListView_GetItemTextArray($lve_tab_lv_posliste, $aIndex[$i])
$sRSA_Abschnitt = GUICtrlRead($lve_tab_txt_rsa)
$sPosNr = $aItem[1]
$sFaktor = GUICtrlRead($lve_tab_txt_faktor)
$sLeange = GUICtrlRead($lve_tab_txt_leange)
$sBreite = GUICtrlRead($lve_tab_txt_breite)
$sTiefe = GUICtrlRead($lve_tab_txt_tiefe)
$sMenge = GUICtrlRead($lve_tab_txt_menge)
$sME = $aItem[3]
$sLeistungstext = $aItem[2]
$sBemerkung = GUICtrlRead($lve_tab_chb_bemerkung)
$sEPreis = $aItem[4]
$sSumme = $sMenge * $sEPreis
$sADDZeile = $sRSA_Abschnitt & "|" & $sPosNr & "|" & $sFaktor & "|" & $sLeange & "|" & $sBreite & "|" & $sTiefe & "|" & $sMenge & "|" & $sME & "|" & $sLeistungstext & "|" & $sBemerkung & "|" & $sMenge & "|" & $sEPreis & "|" & $sSumme
$iCount = _GUICtrlListView_GetItemCount($lv_aufm)
;lese von Ini aus
$sAddMarkPos = IniRead($sPfadIni, "Setup", "addmarkpos", "")
If $sAddMarkPos = "True" Then
;wenn True dann einfügen bei zuletzt markierter Position
If $sPosi_Cord = "" Then
$iCount = -1
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $iCount, $sADDZeile)
Else
If $aPos[2] + 1 = $iCount Then
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $aPos[2], $sADDZeile)
Else
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $aPos[2] + 1, $sADDZeile)
EndIf
EndIf
Else
$iCount = -1
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $iCount, $sADDZeile)
EndIf
Else
MsgBox(64, "Fehler", "Multi _GUIListViewEx_GetLastSelItem(")
EndIf
Next
;~
EndIf
;GUICtrlSetData()
If GUICtrlRead($chb_text_edit) = $GUI_CHECKED Then
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;2;3;4;5;6;9")
Else
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;2;3;4;5;6")
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, 9, 2, $cDataB, True)
GUICtrlSetData($lve_tab_chb_bemerkung, $cDataB, "")
EndIf
EndFunc ;==>_LV_LVaufMa_add_Zeile
Func _LV_LVaufMa_add_empty_zeile()
$sPosi_Cord = _GUIListViewEx_GetLastSelItem($iLV_Aufma_Index)
$aPos = StringSplit($sPosi_Cord, "|")
$iCount = _GUICtrlListView_GetItemCount($lv_aufm)
If IsArray($aPos) Then
Else
MsgBox(64, "Fehler", "kein Arra StringSplit($sPosi_Cord,'|'")
EndIf
If GUICtrlRead($chb_letztezeile) = $GUI_CHECKED Then
IniWrite($sPfadIni, "Setup", "addmarkpos", "False")
Else
IniWrite($sPfadIni, "Setup", "addmarkpos", "True")
EndIf
;lese von Ini aus
$sAddMarkPos = IniRead($sPfadIni, "Setup", "addmarkpos", "")
If $sAddMarkPos = "True" Then
;wenn True dann einfügen bei zuletzt markierter Position
If $sPosi_Cord = "" Then
$iCount = -1
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $iCount, "")
Else
If $aPos[2] + 1 = $iCount Then
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $aPos[2], "")
Else
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $aPos[2] + 1, "")
EndIf
EndIf
Else
$iCount = -1
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $iCount, "")
EndIf
If GUICtrlRead($chb_text_edit) = $GUI_CHECKED Then
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;2;3;4;5;6;9")
Else
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;2;3;4;5;6")
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, 9, 2, $cDataB, True)
GUICtrlSetData($lve_tab_chb_bemerkung, $cDataB, "")
EndIf
EndFunc ;==>_LV_LVaufMa_add_empty_zeile
Func _LV_LVAufMA_mark_copy()
$array = _GUICtrlListView_GetSelectedIndices($lv_aufm, True)
$iCount = _GUICtrlListView_GetItemCount($lv_aufm)
;~ _ArrayDisplay($array)
Dim $aListAufmass[1][13]
For $i = 1 To $array[0]
Local $sZeile = ""
$aTemp = _GUICtrlListView_GetItemTextArray($lv_aufm, $array[$i])
;~ $sZeile = _GUICtrlListView_GetItemTextString($LV_AM, $array[$i])
;~ _ArrayDisplay($aTemp)
$aListAufmass[0][0] = $aTemp[1]
$aListAufmass[0][1] = $aTemp[2]
$aListAufmass[0][2] = $aTemp[3]
$aListAufmass[0][3] = $aTemp[4]
$aListAufmass[0][4] = $aTemp[5]
$aListAufmass[0][5] = $aTemp[6]
$aListAufmass[0][6] = $aTemp[7]
$aListAufmass[0][7] = $aTemp[8]
$aListAufmass[0][8] = $aTemp[9]
$aListAufmass[0][9] = $aTemp[10]
$aListAufmass[0][10] = $aTemp[11]
$aListAufmass[0][11] = $aTemp[12]
$aListAufmass[0][12] = $aTemp[13]
;~ MsgBox(64,"",$sZeile)
If GUICtrlRead($chb_letztezeile) = $GUI_CHECKED Then
IniWrite($sPfadIni, "Setup", "addmarkpos", "False")
Else
IniWrite($sPfadIni, "Setup", "addmarkpos", "True")
EndIf
$sAddMarkPos = IniRead($sPfadIni, "Setup", "addmarkpos", "")
If $sAddMarkPos = "True" Then
;wenn True dann einfügen bei zuletzt markierter Position
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $array[UBound($array) - 1] + $i, $aListAufmass)
Else
$iCount = -1
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $iCount, $aListAufmass)
EndIf
;~ _GUIListViewEx_InsertSpec($iLV_Aufma_Index, $array[UBound($array) - 1] + $i, $aListAufmass)
Next
If GUICtrlRead($chb_text_edit) = $GUI_CHECKED Then
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;2;3;4;5;6;9")
Else
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;2;3;4;5;6")
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, 9, 2, $cDataB, True)
GUICtrlSetData($lve_tab_chb_bemerkung, $cDataB, "")
EndIf
EndFunc ;==>_LV_LVAufMA_mark_copy
Func _EVAufmLV_Export_Exel()
;~ LEB_vorlage.xlsx
FileCopy(@ScriptDir & "\daten\LEB_vorlage.xlsx", @ScriptDir & "\_Aufmaße\LEB_vorlage.xlsx", $FC_OVERWRITE + $FC_CREATEPATH)
$sPfadExcel = @ScriptDir & "\_Aufmaße\LEB_vorlage.xlsx"
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookOpen($oExcel, $sPfadExcel)
If @error Then
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error opening workbook '" & $sPfadExcel & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_Excel_Close($oExcel)
;~ Exit
EndIf
Local $aArray = _GUIListViewEx_ReadToArray($LV_Aufm, 1)
;~ _ArrayDisplay($aArray)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aArray, "B3")
$iLastZeile = $oWorkbook.ActiveSheet.UsedRange.SpecialCells($xlCellTypeLastCell).Row
With $oWorkbook.ActiveSheet.Range("A3:N" & $iLastZeile).Borders
.LineStyle = 1
.TintAndShade = 0
EndWith
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=SUMME(N3:N" & $iLastZeile & ")", "N1")
; Zeilen Nummer hinzufügen in 10 schritten
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "10", "A3")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "20", "A4")
;~ MsgBox(64, "test", UBound($aArray))
If UBound($aArray) = 1 Then
$iStart = 3
;~ _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=SUMME(A" & $iStart+$i & ")+10", "A" & $iStart + $i+1)
$sZNr = "=SUMME(A" & $iStart + 2 & ")+10"
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sZNr, "A5")
Else
Dim $aZNr[UBound($aArray) - 2]
$iStart = 3
For $i = 0 To UBound($aArray) - 3
;~ _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=SUMME(A" & $iStart+$i & ")+10", "A" & $iStart + $i+1)
$aZNr[$i] = "=SUMME(A" & $iStart + $i + 1 & ")+10"
Next
;~ _ArrayDisplay($aZNr)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aZNr, "A5")
EndIf
$sLEBNrREad = GUICtrlRead($frm_evaufm_txt_lebnr)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sLEBNrREad, "C1")
$oWorkbook.ActiveSheet.Columns.AutoFit
$oWorkbook.ActiveSheet.PageSetup.Zoom = False
$oWorkbook.ActiveSheet.PageSetup.FitToPagesWide = 1
$sDateiname = $sLEBNrREad
_Excel_BookSaveAs($oWorkbook, @ScriptDir & "\_Aufmaße\" & $sDateiname & ".xlsx", Default, True)
_Excel_Export($oExcel, $oWorkbook, @ScriptDir & "\_Aufmaße\" & $sDateiname & ".pdf", Default, Default, Default, Default, Default, False)
_Excel_Close($oExcel)
;~
;~ Local $aWorkSheets = _Excel_SheetList($oWorkbook)
;~ _DebugArrayDisplay($aWorkSheets)
FileDelete($sPfadExcel)
EndFunc ;==>_EVAufmLV_Export_Exel
Func _LV_LVPostliste_load_txt($sTEst = "")
;~ Global $iPosNr = _GUICtrlListView_GetItemText($lve_tab_lv_posliste, $vRet[1], 0)
;~ Global $iKurztext = _GUICtrlListView_GetItemText($lve_tab_lv_posliste, $vRet[1], 1)
;~ Global $iEinheit = _GUICtrlListView_GetItemText($lve_tab_lv_posliste, $vRet[1], 2)
;~ Global $iPreis = _GUICtrlListView_GetItemText($lve_tab_lv_posliste, $vRet[1], 3)
Global $aItem = _GUICtrlListView_GetItemTextArray($lve_tab_lv_posliste, $sTEst)
;~ Global $aItem = _GUICtrlListView_GetItemTextArray($lve_tab_lv_posliste, $vRet[1])
;~ _ArrayDisplay($aItem)
If IsArray($aItem) Then
Global $iPosNr = $aItem[1]
Global $iKurztext = $aItem[2]
Global $iEinheit = $aItem[3]
Global $iPreis = $aItem[4]
GUICtrlSetData($lve_tab_txt_posnr, $iPosNr)
GUICtrlSetData($lve_tab_txt_kurztext, $iKurztext)
GUICtrlSetData($lve_tab_txt_leange, "")
GUICtrlSetData($lve_tab_txt_breite, "")
GUICtrlSetData($lve_tab_txt_tiefe, "")
GUICtrlSetData($lve_tab_txt_menge, "")
GUICtrlSetData($lve_tab_txt_rsa, "")
GUICtrlSetData($lve_tab_txt_faktor, "1,0")
_txt_load_Liste_Langtxt($iPosNr)
_farben_Eingabe_daten($iEinheit)
GUICtrlSetData($frm_posfenst_posnr, $iPosNr)
GUICtrlSetData($frm_posfenst_ltex, $iKurztext)
Else
MsgBox(1, "Fehler", "aItem kein Array")
EndIf
_farben_Eingabe_daten($iEinheit)
EndFunc ;==>_LV_LVPostliste_load_txt
Func _LV_LVAufMa_save2temp()
$sDatum = GUICtrlRead($kopf_tab_txt_datum)
$sBaustelle = GUICtrlRead($kopf_tab_txt_baustelle)
$sAbrufNr = GUICtrlRead($kopf_tab_txt_abrufnr)
$sVertrag = GUICtrlRead($kopf_tab_chb_vertrag)
$sStartZ = GUICtrlRead($kopf_tab_datum_start)
$sEndZ = GUICtrlRead($kopf_tab_txt_datum_ende)
$sAspaN = GUICtrlRead($kopf_tab_txt_aspa)
$sAspaTel = GUICtrlRead($kopf_tab_txt_telnr)
$sBauabschnitt = GUICtrlRead($kopf_tab_txt_bauabschnitt)
$sKolone = GUICtrlRead($kopf_tab_txt_kolone)
$sSMnr = GUICtrlRead($kopf_tab_txt_smnr)
;~ $aTempArray = _Listview2Array($lv_aufm)
;~ _ArrayDisplay($aTempArray)
Local $sItem
Local $iCount = _GUICtrlListView_GetItemCount($lv_aufm) - 1 ; Anzahl der Listview-Einträge holen
$sDateiname = "temp"
Local $hFile = FileOpen(@ScriptDir & "\_Aufmaße\" & $sDateiname & ".txt", 2) ; Datei zum speichern (überschreiben) öffnen
If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
FileWriteLine($hFile, "[Kopfdaten]")
If GUICtrlRead($kopf_tab_rd_teilauf) = $GUI_CHECKED Then
FileWriteLine($hFile, "Teilaufma=X")
Else
FileWriteLine($hFile, "Teilaufma=")
EndIf
If GUICtrlRead($kopf_tab_rd_schluss) = $GUI_CHECKED Then
FileWriteLine($hFile, "Schlussaufma=X")
Else
FileWriteLine($hFile, "Schlussaufma=")
EndIf
FileWriteLine($hFile, "Datum=" & $sDatum)
FileWriteLine($hFile, "Baustelle=" & $sBaustelle)
FileWriteLine($hFile, "AbrufNr=" & $sAbrufNr)
FileWriteLine($hFile, "SMNr=" & $sSMnr)
FileWriteLine($hFile, "Vertrag=" & $sVertrag)
FileWriteLine($hFile, "StartZ=" & $sStartZ)
FileWriteLine($hFile, "EndZ=" & $sEndZ)
FileWriteLine($hFile, "AspaN=" & $sAspaN)
FileWriteLine($hFile, "AspaTel=" & $sAspaTel)
FileWriteLine($hFile, "Bauabschnitt=" & $sBauabschnitt)
FileWriteLine($hFile, "Kolone=" & $sKolone)
FileWriteLine($hFile, "[Aufmaßdaten]")
For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
$sItem = _GUICtrlListView_GetItemTextString($lv_aufm, $i) ; die Werte aus dem Listview-Eintrag holen
FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
Next
FileClose($hFile) ; Datei schließen
Else
;~ MsgBox(64, "Fehler beim Speichern", "Datei => " & @CRLF & @ScriptDir & "\Aufmaße\" & $sDateiname & ".txt" & @CRLF & "konnte nicht gespeichert werden!")
EndIf
EndFunc ;==>_LV_LVAufMa_save2temp
Func _LV_LVAufMa_save2txt()
$sDatum = GUICtrlRead($kopf_tab_txt_datum)
$sBaustelle = GUICtrlRead($kopf_tab_txt_baustelle)
$sAbrufNr = GUICtrlRead($kopf_tab_txt_abrufnr)
$sVertrag = GUICtrlRead($kopf_tab_chb_vertrag)
$sStartZ = GUICtrlRead($kopf_tab_datum_start)
$sEndZ = GUICtrlRead($kopf_tab_txt_datum_ende)
$sAspaN = GUICtrlRead($kopf_tab_txt_aspa)
$sAspaTel = GUICtrlRead($kopf_tab_txt_telnr)
$sBauabschnitt = GUICtrlRead($kopf_tab_txt_bauabschnitt)
$sKolone = GUICtrlRead($kopf_tab_txt_kolone)
$sSMnr = GUICtrlRead($kopf_tab_txt_smnr)
Local $sItem
Local $iCount = _GUICtrlListView_GetItemCount($lv_aufm) - 1 ; Anzahl der Listview-Einträge holen
;~ ? * < > . , \ + : = / " ; [ ] |
$sDateiname = _CheckDateiname()
If $iFolderCreate = "True" Then
DirCreate(@ScriptDir & "\_Aufmaße\" & $sDateiname & "\")
Local $hFile = FileOpen(@ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & ".txt", 2)
$sImportTxt = @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & ".txt"
Else
Local $hFile = FileOpen(@ScriptDir & "\_Aufmaße\" & $sDateiname & ".txt", 2)
$sImportTxt = @ScriptDir & "\_Aufmaße\" & $sDateiname & ".txt"
EndIf
; Datei zum speichern (überschreiben) öffnen
If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
FileWriteLine($hFile, "[Kopfdaten]")
If GUICtrlRead($kopf_tab_rd_teilauf) = $GUI_CHECKED Then
FileWriteLine($hFile, "Teilaufma=X")
Else
FileWriteLine($hFile, "Teilaufma=")
EndIf
If GUICtrlRead($kopf_tab_rd_schluss) = $GUI_CHECKED Then
FileWriteLine($hFile, "Schlussaufma=X")
Else
FileWriteLine($hFile, "Schlussaufma=")
EndIf
FileWriteLine($hFile, "Datum=" & $sDatum)
FileWriteLine($hFile, "Baustelle=" & $sBaustelle)
FileWriteLine($hFile, "AbrufNr=" & $sAbrufNr)
FileWriteLine($hFile, "SMNr=" & $sSMnr)
FileWriteLine($hFile, "Vertrag=" & $sVertrag)
FileWriteLine($hFile, "StartZ=" & $sStartZ)
FileWriteLine($hFile, "EndZ=" & $sEndZ)
FileWriteLine($hFile, "AspaN=" & $sAspaN)
FileWriteLine($hFile, "AspaTel=" & $sAspaTel)
FileWriteLine($hFile, "Bauabschnitt=" & $sBauabschnitt)
FileWriteLine($hFile, "Kolone=" & $sKolone)
FileWriteLine($hFile, "[Aufmaßdaten]")
For $i = 0 To $iCount ; Schleife, um alle Listview-Einträge durchzugehen
$sItem = _GUICtrlListView_GetItemTextString($lv_aufm, $i) ; die Werte aus dem Listview-Eintrag holen
FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
Next
FileClose($hFile) ; Datei schließen
;~ MsgBox(64, "Datei wurde gespeichert!", "Das Aufmaß wurde gespeichert:" & @CRLF & @ScriptDir & "\Aufmaße\" & $sDateiname & ".txt")
Else
MsgBox(64, "Fehler beim Speichern", "Datei => " & @CRLF & @ScriptDir & "\Aufmaße\" & $sDateiname & ".txt" & @CRLF & "konnte nicht gespeichert werden!")
EndIf
;~ _X31_Export($sImportTxt, $sAusgabeX31)
GUICtrlSetData($kopf_TAB_txt_ausgabeExcel, $sDateiname)
EndFunc ;==>_LV_LVAufMa_save2txt
func _CheckDateiname()
$sBaustelle = GUICtrlRead($kopf_tab_txt_baustelle)
$sBauabschnitt = GUICtrlRead($kopf_tab_txt_bauabschnitt)
$sSMnr = GUICtrlRead($kopf_tab_txt_smnr)
$sAbrufNr = GUICtrlRead($kopf_tab_txt_abrufnr)
$sDateiname = ""
$sDateiname = $sBaustelle & "_" & $sBauabschnitt & "_" & $sSMnr & "_" & $sAbrufNr
$sDateiname = StringReplace($sDateiname, "?", " ")
$sDateiname = StringReplace($sDateiname, "*", " ")
$sDateiname = StringReplace($sDateiname, "<", " ")
$sDateiname = StringReplace($sDateiname, ">", " ")
$sDateiname = StringReplace($sDateiname, ",", " ")
$sDateiname = StringReplace($sDateiname, "\", " ")
$sDateiname = StringReplace($sDateiname, "+", " ")
$sDateiname = StringReplace($sDateiname, ":", " ")
$sDateiname = StringReplace($sDateiname, "=", " ")
$sDateiname = StringReplace($sDateiname, "/", " ")
$sDateiname = StringReplace($sDateiname, '"', " ")
$sDateiname = StringReplace($sDateiname, ";", " ")
$sDateiname = StringReplace($sDateiname, "[", " ")
$sDateiname = StringReplace($sDateiname, "]", " ")
$sDateiname = StringReplace($sDateiname, "[", " ")
$sDateiname = StringReplace($sDateiname, "{", " ")
$sDateiname = StringReplace($sDateiname, "}", " ")
$sDateiname = StringReplace($sDateiname, "|", " ")
$sDateiname = StringReplace($sDateiname, " ", "_")
$sDateiname = StringReplace($sDateiname, "__", "_")
Return $sDateiname
EndFunc
Func _LV_LVAufMa_export2Excel()
If GUICtrlRead($kopf_TAB_chb_exportvorl) <> "" Then
$sPfad_Template = @ScriptDir & "\daten\templates\vorlage_" & GUICtrlRead($kopf_TAB_chb_exportvorl) & ".xlsx"
FileCopy($sPfad_Template, @ScriptDir & "\_Aufmaße\vorlage_" & GUICtrlRead($kopf_TAB_chb_exportvorl) & ".xlsx", $FC_OVERWRITE + $FC_CREATEPATH)
_LV_LVAufMa_openExcel(@ScriptDir & "\_Aufmaße\vorlage_" & GUICtrlRead($kopf_TAB_chb_exportvorl) & ".xlsx")
_LV_LVAufMa_save2txt()
Else
MsgBox(64, "Speichern nicht möglich", "Bitte wähle eine Exportvorlage aus.")
EndIf
EndFunc ;==>_LV_LVAufMa_export2Excel
Func _LV_LVAufMa_export2Excel_DLP()
If GUICtrlRead($kopf_TAB_chb_exportvorl) <> "" Then
$sPfad_Template = @ScriptDir & "\daten\templates\import_DLP.xlsx"
FileCopy($sPfad_Template, @ScriptDir & "\_Aufmaße\vorlage_" & GUICtrlRead($kopf_TAB_chb_exportvorl) & "_DLP.xlsx", $FC_OVERWRITE + $FC_CREATEPATH)
Local $aArray = _GUIListViewEx_ReadToArray($LV_Aufm)
_LV_AufMa_DLP($aArray, @ScriptDir & "\_Aufmaße\vorlage_" & GUICtrlRead($kopf_TAB_chb_exportvorl) & "_DLP.xlsx")
_LV_LVAufMa_save2txt()
Else
;MsgBox(64, "Speichern nicht möglich", "Bitte wähle eine Exportvorlage aus.")
EndIf
EndFunc ;==>_LV_LVAufMa_export2Excel_DLP
Func _LV_AufMa_DLP($aData, $sExcelPfad)
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF", "Fehler beim Starten von Excel.")
Local $oWorkbook = _Excel_BookOpen($oExcel, $sExcelPfad)
If @error Then
MsgBox($MB_SYSTEMMODAL, "Excel UDF", "Fehler beim Öffnen: " & $sExcelPfad)
_Excel_Close($oExcel)
EndIf
Local $oSheet = $oWorkbook.ActiveSheet
Local $iRows = UBound($aData)
Local $aExport[1][6]
Local $iWrite = 0
For $i = 0 To $iRows - 1
; ----------------------------------
; 🔥 WICHTIG: Nur Zeilen mit OZ zulassen
; ----------------------------------
If StringStripWS($aData[$i][1], 3) = "" Then ContinueLoop
; ----------------------------------
; Daten übernehmen
; ----------------------------------
ReDim $aExport[$iWrite + 1][6]
$aExport[$iWrite][0] = $aData[$i][1] ; OZ
$aExport[$iWrite][2] = $aData[$i][10] ; Abschnitt/Text
$aExport[$iWrite][5] = $aData[$i][0] ; Ergebnis
$iWrite += 1
Next
;~ _DebugArrayDisplay($aExport)
If $iWrite > 0 Then
_Excel_RangeWrite($oWorkbook, $oSheet, $aExport, "A2")
EndIf
; -------------------------------
; Kopfdaten
; -------------------------------
Local $sDatum = GUICtrlRead($kopf_tab_txt_datum)
Local $sBaustelle = GUICtrlRead($kopf_tab_txt_baustelle)
Local $sAbrufNr = GUICtrlRead($kopf_tab_txt_abrufnr)
Local $sVertrag = GUICtrlRead($kopf_tab_chb_vertrag)
Local $sStartZ = GUICtrlRead($kopf_TAB_txt_datum)
Local $sEndZ = GUICtrlRead($kopf_tab_txt_datum_ende)
Local $sAspaN = GUICtrlRead($kopf_tab_txt_aspa)
Local $sAspaTel = GUICtrlRead($kopf_TAB_txt_telnr)
Local $sBauabschnitt = GUICtrlRead($kopf_tab_txt_bauabschnitt)
Local $sKolone = GUICtrlRead($kopf_TAB_txt_kolone)
Local $sSMnr = GUICtrlRead($kopf_TAB_txt_smnr)
Local $sDateiname = $sBaustelle & "_" & $sBauabschnitt & "_" & $sSMnr & "_" & $sAbrufNr
$sDateiname = StringRegExpReplace($sDateiname, '[\\\/:*?"<>|;,+={}[\]]', " ")
$sDateiname = StringReplace($sDateiname, " ", "_")
$sDateiname = StringReplace($sDateiname, "__", "_")
If $iFolderCreate = "True" Then
DirCreate(@ScriptDir & "\_Aufmaße\" & $sDateiname & "\")
_Excel_BookSaveAs($oWorkbook, @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & "_DLP.xlsx", Default, True)
Else
_Excel_BookSaveAs($oWorkbook, @ScriptDir & "\_Aufmaße\" & $sDateiname & "_DLP.xlsx", Default, True)
EndIf
_Excel_Close($oExcel)
FileDelete($sExcelPfad)
EndFunc
Func _LV_LVAufMa_openExcel($sPfadExcel)
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookOpen($oExcel, $sPfadExcel)
If @error Then
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example", "Error opening workbook '" & $sPfadExcel & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_Excel_Close($oExcel)
;~ Exit
EndIf
Local $aArray = _GUIListViewEx_ReadToArray($LV_Aufm)
;~ _ArrayDisplay($aArray)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aArray, "B8")
;~ $iLastZeile = $oWorkbook.ActiveSheet.UsedRange.SpecialCells($xlCellTypeLastCell).Row
$iLastZeile = UBound($aArray) + 7
With $oWorkbook.ActiveSheet.Range("A7:N" & $iLastZeile).Borders
.LineStyle = 1
.TintAndShade = 0
EndWith
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=SUMME(N8:N" & $iLastZeile & ")", "N6")
; Zeilen Nummer hinzufügen in 10 schritten
;~ _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "10", "A8")
;~ _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "20", "A9")
;MsgBox(64, "test", UBound($aArray))
If UBound($aArray) = 1 Then
;~ $iStart = 8
; _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=SUMME(A" & $iStart+$i & ")+10", "A" & $iStart + $i+1)
;~ $sZNr = "=SUMME(A" & $iStart + 2 & ")+10"
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "10", "A8")
Else
If UBound($aArray) = 0 Then
Else
Dim $aZNr[UBound($aArray)]
$iStart = 8
For $i = 0 To UBound($aArray) - 1
;~ ; _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "=SUMME(A" & $iStart+$i & ")+10", "A" & $iStart + $i+1)
If $i = 0 Then
$aZNr[0] = 10
Else
$aZNr[$i] = $aZNr[$i - 1] + 10
EndIf
Next
;~ _ArrayDisplay($aZNr)
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aZNr, "A8")
EndIf
EndIf
$sDatum = GUICtrlRead($kopf_tab_txt_datum)
$sBaustelle = GUICtrlRead($kopf_tab_txt_baustelle)
$sAbrufNr = GUICtrlRead($kopf_tab_txt_abrufnr)
$sVertrag = GUICtrlRead($kopf_tab_chb_vertrag)
$sStartZ = GUICtrlRead($kopf_TAB_txt_datum)
$sEndZ = GUICtrlRead($kopf_tab_txt_datum_ende)
$sAspaN = GUICtrlRead($kopf_tab_txt_aspa)
$sAspaTel = GUICtrlRead($kopf_TAB_txt_telnr)
$sBauabschnitt = GUICtrlRead($kopf_tab_txt_bauabschnitt)
$sKolone = GUICtrlRead($kopf_TAB_txt_kolone)
$sSMnr = GUICtrlRead($kopf_TAB_txt_smnr)
If GUICtrlRead($kopf_tab_rd_teilauf) = $GUI_CHECKED Then
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "X", "H1")
Else
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "", "H1")
EndIf
If GUICtrlRead($kopf_tab_rd_schluss) = $GUI_CHECKED Then
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "X", "H2")
Else
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, "", "H2")
EndIf
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sDatum, "K1")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sBaustelle, "C3")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sAbrufNr, "K3")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sVertrag, "K2")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sStartZ, "C4")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sEndZ, "F4")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sAspaN, "C5")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sAspaTel, "G5")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sBauabschnitt, "J6")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sKolone, "C6")
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $sSMnr, "K4")
$oWorkbook.ActiveSheet.Columns.AutoFit
$sDateiname = ""
$sDateiname = $sBaustelle & "_" & $sBauabschnitt & "_" & $sSMnr & "_" & $sAbrufNr
$sDateiname = StringReplace($sDateiname, "?", " ")
$sDateiname = StringReplace($sDateiname, "*", " ")
$sDateiname = StringReplace($sDateiname, "<", " ")
$sDateiname = StringReplace($sDateiname, ">", " ")
$sDateiname = StringReplace($sDateiname, ",", " ")
$sDateiname = StringReplace($sDateiname, "\", " ")
$sDateiname = StringReplace($sDateiname, "+", " ")
$sDateiname = StringReplace($sDateiname, ":", " ")
$sDateiname = StringReplace($sDateiname, "=", " ")
$sDateiname = StringReplace($sDateiname, "/", " ")
$sDateiname = StringReplace($sDateiname, '"', " ")
$sDateiname = StringReplace($sDateiname, ";", " ")
$sDateiname = StringReplace($sDateiname, "[", " ")
$sDateiname = StringReplace($sDateiname, "]", " ")
$sDateiname = StringReplace($sDateiname, "[", " ")
$sDateiname = StringReplace($sDateiname, "{", " ")
$sDateiname = StringReplace($sDateiname, "}", " ")
$sDateiname = StringReplace($sDateiname, "|", " ")
$sDateiname = StringReplace($sDateiname, " ", "_")
$sDateiname = StringReplace($sDateiname, "__", "_")
;~ $oWorkbook.ActiveSheet.PageSetup.Zoom = False
;~ $oWorkbook.ActiveSheet.PageSetup.FitToPagesWide = 1
If $iFolderCreate = "True" Then
DirCreate(@ScriptDir & "\_Aufmaße\" & $sDateiname & "\")
_Excel_Export($oExcel, $oWorkbook, @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & ".pdf", Default, Default, Default)
_Excel_BookSaveAs($oWorkbook, @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & ".xlsx", Default, True)
Local $importPfadTxt = @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & ".txt"
Local $ausgabePfadX31 = @ScriptDir & "\_Aufmaße\" & $sDateiname & "\"& $sDateiname & "_x31.x31"
Else
_Excel_Export($oExcel, $oWorkbook, @ScriptDir & "\_Aufmaße\" & $sDateiname & ".pdf", Default, Default, Default)
_Excel_BookSaveAs($oWorkbook, @ScriptDir & "\_Aufmaße\" & $sDateiname & ".xlsx", Default, True)
Local $importPfadTxt = @ScriptDir & "\_Aufmaße\" & $sDateiname & ".txt"
Local $ausgabePfadX31 = @ScriptDir & "\_Aufmaße\" & $sDateiname & "_x31.x31"
EndIf
_Excel_Close($oExcel)
FileDelete($sPfadExcel)
EndFunc ;==>_LV_LVAufMa_openExcel
Func _chb_bemerkung_from_ini()
$sData = FileRead(@ScriptDir & "\daten\conf.ini") ;Datei einlesen
$hFile = FileOpen(@ScriptDir & "\daten\conf.ini", $FO_OVERWRITE + $FO_UNICODE) ;im richtigen Format ein Handle zum schreiben eröffnen
FileWrite($hFile, $sData) ;in Datei schreiben
FileClose($hFile) ;Handle schliessen
$sFilePath = $sPfadIni
Local $aBemerkung = IniReadSection($sFilePath, "Bemerkung")
_ArraySort($aBemerkung)
;~ _ArrayDisplay($aBemerkung)
Global $cDataB = ""
For $i = 1 To UBound($aBemerkung) - 1
;~ $cDataB = StringReplace($cDataB , 'ü', "ü")
;~ $cDataB = StringReplace($cDataB , 'ä', "ä")
;~ $cDataB = StringReplace($cDataB , 'ö', "ö")
$cDataB &= "|" & $aBemerkung[$i][0]
Next
$cDataB &= "||"
GUICtrlSetData($lve_tab_chb_bemerkung, $cDataB, "")
;;Or GUICtrlSetData($MyControl, $cData, $FileList[1])
EndFunc ;==>_chb_bemerkung_from_ini
Func _chb_vertragsnr_from_ini()
_GUICtrlComboBox_ResetContent($kopf_tab_chb_vertrag)
_GUICtrlComboBox_ResetContent($lve_tab_chb_vertrag)
$sData = FileRead(@ScriptDir & "\daten\conf.ini") ;Datei einlesen
$hFile = FileOpen(@ScriptDir & "\daten\conf.ini", $FO_OVERWRITE + $FO_UNICODE) ;im richtigen Format ein Handle zum schreiben eröffnen
FileWrite($hFile, $sData) ;in Datei schreiben
FileClose($hFile) ;Handle schliessen
$sFilePath = $sPfadIni
Local $aKV = IniReadSection($sFilePath, "LV")
_ArraySort($aKV)
;~ _ArrayDisplay($aKV)
For $i = 1 To UBound($aKV) - 1
_GUICtrlComboBox_AddString($kopf_tab_chb_vertrag, $aKV[$i][0])
_GUICtrlComboBox_AddString($lve_tab_chb_vertrag, $aKV[$i][0])
Next
;~ GUICtrlSetData($kopf_tab_chb_vertrag, $cData, "")
;~ GUICtrlSetData($lve_tab_chb_vertrag, $cData, "")
EndFunc ;==>_chb_vertragsnr_from_ini
Func _kopf_load_from_ini()
$sData = FileRead(@ScriptDir & "\daten\conf.ini") ;Datei einlesen
$hFile = FileOpen(@ScriptDir & "\daten\conf.ini", $FO_OVERWRITE + $FO_UNICODE) ;im richtigen Format ein Handle zum schreiben eröffnen
FileWrite($hFile, $sData) ;in Datei schreiben
FileClose($hFile) ;Handle schliessen
$sTeilaufma = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Teilaufma", "xxx")
$sSchlussaufma = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Schlussaufma", "xxx")
$sDatum = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Datum", "xxx")
$sBaustelle = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", "xxx")
$sVertrag = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Vertrag", "xxx")
$sAbrufNr = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "AbrufNr", "xxx")
$sStartZ = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "StartZ", "xxx")
$sEndZ = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "EndZ", "xxx")
$sAspaN = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "AspaN", "xxx")
$sAspaTel = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "AspaTel", "xxx")
$sBauabschnitt = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", "xxx")
$sKolone = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Kolone", "xxx")
$sSMnr = IniRead(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "SMNr", "xxx")
_GUICtrlComboBox_ResetContent($kopf_tab_chb_vertrag)
_GUICtrlComboBox_ResetContent($lve_tab_chb_vertrag)
$sFilePath = $sPfadIni
Local $aKV = IniReadSection($sFilePath, "LV")
_ArraySort($aKV)
;~ _ArrayDisplay($aKV)
For $i = 1 To UBound($aKV) - 1
_GUICtrlComboBox_AddString($kopf_tab_chb_vertrag, $aKV[$i][0])
_GUICtrlComboBox_AddString($lve_tab_chb_vertrag, $aKV[$i][0])
Next
GUICtrlSetData($kopf_TAB_txt_datum, $sDatum)
GUICtrlSetData($kopf_TAB_txt_baustelle, $sBaustelle)
;~ GUICtrlSetData($kopf_TAB_chb_vertrag, $sVertrag)
;~ Local $aChb_rv = StringRegExp(GUICtrlRead($kopf_TAB_chb_vertrag), "([^_]+)", 3)
;~ _ArrayDisplay($aChb_rv)
;~ If IsArray($aChb_rv) Then
;~ Local $sChb_rv = $aChb_rv[0]
;~ Else
;~ $sChb_rv = ""
;~ EndIf
;~ GUICtrlSetData($kopf_TAB_chb_vertrag, $sChb_rv)
_GUICtrlComboBox_SelectString($kopf_tab_chb_vertrag, $sVertrag)
GUICtrlSetData($kopf_TAB_txt_abrufnr, $sAbrufNr)
GUICtrlSetData($kopf_TAB_datum_start, $sStartZ)
GUICtrlSetData($kopf_TAB_txt_datum_ende, $sEndZ)
GUICtrlSetData($kopf_tab_txt_aspa, $sAspaN)
_GUICtrlComboBox_SelectString($kopf_tab_txt_aspa, $sAspaN)
GUICtrlSetData($kopf_TAB_txt_telnr, $sAspaTel)
GUICtrlSetData($kopf_TAB_txt_bauabschnitt, $sBauabschnitt)
GUICtrlSetData($kopf_TAB_txt_kolone, $sKolone)
GUICtrlSetData($kopf_TAB_txt_smnr, $sSMnr)
;~ GUICTRLRead($Radio2) = $GUI_CHECKED
;~ MsgBox(64,"",$sTeilaufma)
If $sTeilaufma = "X" Then
GUICtrlSetState($kopf_tab_rd_teilauf, $GUI_CHECKED)
;~ GUICtrlSetState($radio_1, $GUI_CHECKED)
Else
GUICtrlSetState($kopf_tab_rd_teilauf, $GUI_UNCHECKED)
EndIf
If $sSchlussaufma = "X" Then
GUICtrlSetState($kopf_tab_rd_schluss, $GUI_CHECKED)
Else
GUICtrlSetState($kopf_tab_rd_schluss, $GUI_UNCHECKED)
EndIf
$aStartDatum = StringSplit($sStartZ, ".")
If IsArray($aStartDatum) Then
If UBound($aStartDatum) = 2 Then
Else
;~ _DebugArrayDisplay($aStartDatum)
$iYear = $aStartDatum[3]
$iMonth = $aStartDatum[2]
$iDay = $aStartDatum[1]
_GUICtrlMonthCal_SetCurSel($kopf_TAB_datumfeld_start, $iYear, $iMonth, $iDay)
EndIf
EndIf
$aEnde = StringSplit($sEndZ, ".")
If IsArray($aEnde) Then
If UBound($aEnde) = 2 Then
Else
$iYear = $aEnde[0]
$iMonth = $aEnde[1]
$iDay = $aEnde[2]
_GUICtrlMonthCal_SetCurSel($kopf_TAB_datumfeld_ende, $iYear, $iMonth, $iDay)
EndIf
EndIf
EndFunc ;==>_kopf_load_from_ini
Func _kopf_save_2_ini()
$sDatum = GUICtrlRead($kopf_TAB_txt_datum)
$sBaustelle = GUICtrlRead($kopf_TAB_txt_baustelle)
$sAbrufNr = GUICtrlRead($kopf_TAB_txt_abrufnr)
$sVertrag = GUICtrlRead($kopf_TAB_chb_vertrag)
$sStartZ = GUICtrlRead($kopf_TAB_datum_start)
$sEndZ = GUICtrlRead($kopf_TAB_txt_datum_ende)
$sAspaN = GUICtrlRead($kopf_tab_txt_aspa)
$sAspaTel = GUICtrlRead($kopf_TAB_txt_telnr)
$sBauabschnitt = GUICtrlRead($kopf_TAB_txt_bauabschnitt)
$sKolone = GUICtrlRead($kopf_TAB_txt_kolone)
$sSMnr = GUICtrlRead($kopf_TAB_txt_smnr)
If GUICtrlRead($kopf_tab_rd_teilauf) = $GUI_CHECKED Then
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Teilaufma", "X")
Else
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Teilaufma", "")
EndIf
If GUICtrlRead($kopf_tab_rd_schluss) = $GUI_CHECKED Then
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Schlussaufma", "X")
Else
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Schlussaufma", "")
EndIf
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Datum", $sDatum)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Baustelle", $sBaustelle)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "AbrufNr", $sAbrufNr)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "StartZ", $sStartZ)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "EndZ", $sEndZ)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Vertrag", $sVertrag)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "AspaN", $sAspaN)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "AspaTel", $sAspaTel)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Bauabschnitt", $sBauabschnitt)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "Kolone", $sKolone)
IniWrite(@ScriptDir & "\daten\conf.ini", "Kopfdaten", "SMNr", $sSMnr)
EndFunc ;==>_kopf_save_2_ini
Func _txt_load_Liste_Langtxt($iPosNr)
Dim $aChb_rv[1]
$aChb_rv[0] = GUICtrlRead($lve_tab_chb_vertrag)
;~ Local $aChb_rv = StringRegExp(GUICtrlRead($lve_tab_chb_vertrag), "([^_]+)", 3)
If IsArray($aChb_rv) Then
Local $sChb_rv = $aChb_rv[0]
$sPfadLVPostxt = @ScriptDir & "\daten\LV\" & $sChb_rv & "\" & $iPosNr & ".txt"
Local $hFileOpen = FileOpen($sPfadLVPostxt)
If $hFileOpen = -1 Then
;~ MsgBox(64, "Error", $iPosNr & ".txt konnte nicht gefunden werden. Überprüfen ob .txt angelegt ist!")
Return False
EndIf
; Read the contents of the file using the handle returned by FileOpen.
Local $sFileRead = FileRead($hFileOpen)
;~ ShellExecute($sPfadLVPostxt)
;~ MsgBox(64,"",$sFileRead)
GUICtrlSetData($lve_tab_ed_langtext, $sFileRead)
GUICtrlSetData($frm_posfenst_ltext, $sFileRead)
FileClose($hFileOpen)
EndIf
EndFunc ;==>_txt_load_Liste_Langtxt
Func _txt_save_Langtext()
Local $aChb_rv = StringRegExp(GUICtrlRead($lve_tab_chb_vertrag), "([^_]+)", 3)
If IsArray($aChb_rv) Then
Local $sChb_rv = $aChb_rv[0]
$sPfadLVPostxt = @ScriptDir & "\daten\LV\" & $sChb_rv & "\" & $iPosNr & ".txt"
Local $hFileOpen = FileOpen($sPfadLVPostxt, 8 + 2 + 64)
If $hFileOpen = -1 Then
MsgBox($MB_SYSTEMMODAL, "", "Es ist während dem lesen der Datei ein Fehler aufgetreten.")
Return False
EndIf
$stxt = GUICtrlRead($frm_posfenst_ltext)
FileWrite($hFileOpen, $stxt)
; Schließt das Handle welches von FileOpen zurückgegeben wurde.
FileClose($hFileOpen)
EndIf
EndFunc ;==>_txt_save_Langtext
Func _Load_LV_From_Chb()
_Write_to_Console("lade Vertragsdaten")
Dim $aChb_rv[1]
;~ Local $aChb_rv = StringRegExp(GUICtrlRead($lve_tab_chb_vertrag), "([^_]+)", 3)
$aChb_rv[0] = GUICtrlRead($lve_tab_chb_vertrag)
;~ _DebugArrayDisplay($aChb_rv)
If IsArray($aChb_rv) Then
Local $sChb_rv = $aChb_rv[0]
;Vertrag von Kopdaten in Aufmaßhile
$sIndexChbVertrag = _GUICtrlComboBox_FindString($chb_vertrag, "data_" & $sChb_rv & ".ini")
_GUICtrlComboBox_SetCurSel($chb_vertrag, $sIndexChbVertrag)
;~ local $sIniWert = IniRead($sPfadIni, "LV", $sChb_rv, "")
Local $sFilePath = @ScriptDir & "\daten\LV\" & $sChb_rv & ".txt"
Local $aArray
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($lve_tab_lv_posliste))
_FileReadToArray($sFilePath, $aArray)
_ArrayDelete($aArray, 0)
_ArraySort($aArray)
;~ _DebugArrayDisplay($aArray)
;~ MsgBox(64,$sChb_rv,$sFilePath)
If IsArray($aArray) Then
Local $aSplit = StringSplit($aArray[0], "|")
;~ _ArrayDisplay($aSplit)
Dim $aListeImport[UBound($aArray)][$aSplit[0]]
;~ _GUICtrlListView_AddArray($ListView1, $aArray)
For $i = 0 To UBound($aArray) - 1
$aTemp = StringSplit($aArray[$i], "|")
If $aTemp[0] <> 4 Then
_ArrayDisplay($aTemp)
EndIf
For $ii = 1 To UBound($aTemp) - 1
$aListeImport[$i][$ii - 1] = $aTemp[$ii]
Next
Next
_GUICtrlListView_AddArray($lve_tab_lv_posliste, $aListeImport)
_ListviewAutoWidthHeader($lve_tab_lv_posliste)
_Pflichtfelder2Array()
;direkt in Array schreiben.
;~ $aGLVEx_Data[2][2] = $aListeImport
;~ __GUIListViewEx_ReWriteLV($iLV_PosList_Index, $aListeImport,"", 2, "")
$iLV_PosList_Index = _GUIListViewEx_Init($lve_tab_lv_posliste, $aListeImport, 0, 0, False, 1 + 512)
Else
MsgBox(64, "kein LV gefunden", "kein passendes LV im Programm gefunden." & @CRLF & "Bitte prüfen...")
EndIf
EndIf
EndFunc ;==>_Load_LV_From_Chb
Func _farben_Eingabe_daten($sEinheit)
Select
Case $sEinheit = "ST"
GUICtrlSetBkColor($lve_tab_txt_menge, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_leange, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_breite, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_tiefe, 0xFEFEFE)
Case $sEinheit = "LE"
GUICtrlSetBkColor($lve_tab_txt_menge, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_leange, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_breite, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_tiefe, 0xFEFEFE)
Case $sEinheit = "STD"
GUICtrlSetBkColor($lve_tab_txt_menge, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_leange, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_breite, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_tiefe, 0xFEFEFE)
Case $sEinheit = "M"
GUICtrlSetBkColor($lve_tab_txt_menge, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_leange, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_breite, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_tiefe, 0xFEFEFE)
Case $sEinheit = "M2"
GUICtrlSetBkColor($lve_tab_txt_menge, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_leange, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_breite, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_tiefe, 0xFEFEFE)
Case $sEinheit = "M3"
GUICtrlSetBkColor($lve_tab_txt_menge, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_leange, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_tiefe, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_breite, 0x00FF11)
Case $sEinheit = "Psch"
GUICtrlSetBkColor($lve_tab_txt_menge, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_leange, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_breite, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_tiefe, 0xFEFEFE)
Case $sEinheit = "h"
GUICtrlSetBkColor($lve_tab_txt_menge, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_leange, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_breite, 0xFEFEFE)
GUICtrlSetBkColor($lve_tab_txt_tiefe, 0xFEFEFE)
Case $sEinheit = "t"
GUICtrlSetBkColor($lve_tab_txt_menge, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_leange, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_tiefe, 0x00FF11)
GUICtrlSetBkColor($lve_tab_txt_breite, 0x00FF11)
EndSelect
EndFunc ;==>_farben_Eingabe_daten
Func _search_posList()
Dim $aChb_rv[1]
$aChb_rv[0] = GUICtrlRead($lve_tab_chb_vertrag)
;~ Local $aChb_rv = StringRegExp(GUICtrlRead($lve_tab_chb_vertrag), "([^_]+)", 3)
If IsArray($aChb_rv) Then
Local $sChb_rv = $aChb_rv[0]
;~ local $sIniWert = IniRead($sPfadIni, "LV", $sChb_rv, "")
Local $sFilePath = @ScriptDir & "\daten\LV\" & $sChb_rv & ".txt"
Local $aArray
_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($lve_tab_lv_posliste))
_FileReadToArray($sFilePath, $aArray)
_ArrayDelete($aArray, 0)
_ArraySort($aArray)
;~ _ArrayDisplay($aArray)
;~ MsgBox(64,$sChb_rv,$sFilePath)
Local $aSplit = StringSplit($aArray[0], "|")
;~ _ArrayDisplay($aSplit)
Dim $aListeImport[UBound($aArray)][$aSplit[0]]
;~ _GUICtrlListView_AddArray($ListView1, $aArray)
For $i = 0 To UBound($aArray) - 1
$aTemp = StringSplit($aArray[$i], "|")
If $aTemp[0] <> 4 Then
_ArrayDisplay($aTemp)
EndIf
For $ii = 1 To UBound($aTemp) - 1
$aListeImport[$i][$ii - 1] = $aTemp[$ii]
Next
Next
_GUICtrlListView_DeleteAllItems($lve_tab_lv_posliste)
$sText = GUICtrlRead($lve_tab_txt_suche)
If $sText = "" Then
_GUIListViewEx_Close($iLV_PosList_Index)
_Load_LV_From_Chb()
;~ _GUICtrlListView_AddArray($lv_lv_pos, $aListeImport)
Else
_GUIListViewEx_Close($iLV_PosList_Index)
;~ _ArrayDisplay($aListeImport)
If StringIsDigit($sText) Then
;bei zahlen in pOsnr spalte suchen
;~ MsgBox(64,"uahlen",$sText)
$iIndexs = _ArrayFindAll($aListeImport, $sText, 0, 0, 0, 1, 0)
Else
;bei nicht zahlen im kurztext suchen
;~ MsgBox(64,"kurztext",$sText)
$iIndexs = _ArrayFindAll($aListeImport, $sText, 0, 0, 0, 1, 1)
EndIf
;~ $iIndexs = _ArrayFindAll($aListeImport, $sText, 0, 0, 0, 1, 0)
;~ _ArrayDisplay($iIndexs)
For $i = 0 To UBound($iIndexs) - 1
_GUICtrlListView_AddItem($lve_tab_lv_posliste, $aListeImport[$iIndexs[$i]][0])
_GUICtrlListView_AddSubItem($lve_tab_lv_posliste, $i, $aListeImport[$iIndexs[$i]][1], 1)
_GUICtrlListView_AddSubItem($lve_tab_lv_posliste, $i, $aListeImport[$iIndexs[$i]][2], 2)
_GUICtrlListView_AddSubItem($lve_tab_lv_posliste, $i, $aListeImport[$iIndexs[$i]][3], 3)
Next
Global $aLV_List_left = _GUIListViewEx_ReadToArray($lve_tab_lv_posliste, 1)
; The array as read from Right ListView and used subsequently
;_ArrayDisplay($aLV_List_Right, "Read from Right ListView")
; Initiate LVEx - use read content as array - count parameter set - red insert mark - drag image - move edit by click + headers editable
$iLV_PosList_Index = _GUIListViewEx_Init($lve_tab_lv_posliste, $aLV_List_left, 0, 0, False, 1 + 512)
EndIf
Else
MsgBox(64, "Fehler", "Vertrag auswählen.")
EndIf
EndFunc ;==>_search_posList
Func _Pflichtfelder2Array()
Global $aPflichtfelder
Local $sFilePath = GUICtrlRead($lve_tab_chb_vertrag)
$aAVertrag = StringRegExp($sFilePath, '([^_]+)', 3)
If IsArray($aAVertrag) Then
$sFilePath = @ScriptDir & "\daten\LV\" & $aAVertrag[0] & "_pflicht.txt"
EndIf
_FileReadToArray($sFilePath, $aPflichtfelder)
_ArrayDelete($aPflichtfelder, 0)
EndFunc ;==>_Pflichtfelder2Array
Func _replaceKom2Punkt($sString)
Return StringReplace($sString, ",", ".")
EndFunc ;==>_replaceKom2Punkt
Func _replacePunkt2Koma($sString)
Return StringReplace($sString, ".", ",")
EndFunc ;==>_replacePunkt2Koma
Func _Listview2Array($sNameListview)
$aSpalten = _GUICtrlListView_GetItemTextArray($sNameListview)
$iColums = $aSpalten[0]
$iRows = _GUICtrlListView_GetItemCount($sNameListview)
;~ ConsoleWrite($iRows)
;~ _DebugArrayDisplay($aSpalten)
If $iColums = 1 Then
Else
;2dim Array
Dim $aTemp[$iRows][$iColums]
For $i = 0 To UBound($aTemp) - 1
$aItem = _GUICtrlListView_GetItemTextArray($sNameListview, $i)
For $ii = 1 To UBound($aItem) - 1
$aTemp[$i][$ii - 1] = $aItem[$ii]
Next
Next
;~ _setColor2Array($aTemp)
Return $aTemp
EndIf
EndFunc ;==>_Listview2Array
Func _EVAufmLV_mark_copi()
$array = _GUICtrlListView_GetSelectedIndices($frm_lv_evaufm, True)
$iCount = _GUICtrlListView_GetItemCount($frm_lv_evaufm)
;~ _ArrayDisplay($array)
Dim $aListAufmass[1][13]
For $i = 1 To $array[0]
Local $sZeile = ""
$aTemp = _GUICtrlListView_GetItemTextArray($frm_lv_evaufm, $array[$i])
;~ $sZeile = _GUICtrlListView_GetItemTextString($LV_AM, $array[$i])
;~ _ArrayDisplay($aTemp)
$aListAufmass[0][0] = $aTemp[1]
$aListAufmass[0][1] = $aTemp[2]
$aListAufmass[0][2] = $aTemp[3]
$aListAufmass[0][3] = $aTemp[4]
$aListAufmass[0][4] = $aTemp[5]
$aListAufmass[0][5] = $aTemp[6]
$aListAufmass[0][6] = $aTemp[7]
$aListAufmass[0][7] = $aTemp[8]
$aListAufmass[0][8] = $aTemp[9]
$aListAufmass[0][9] = $aTemp[10]
$aListAufmass[0][10] = $aTemp[11]
$aListAufmass[0][11] = $aTemp[12]
$aListAufmass[0][12] = $aTemp[13]
;~ _GUICtrlListView_AddArray($LV_Aufm, $aListAufmass)
$iCount = -1
_GUIListViewEx_InsertSpec($iLV_Aufma_Index, $iCount, $aListAufmass)
Next
;~ _GUICtrlListView_AddArray($LV_Aufm, $aListAufmass)
EndFunc ;==>_EVAufmLV_mark_copi
Func _EVAufmLV_import_txt()
Local $sFilePath, $aArray
;~ _GUICtrlListView_DeleteAllItems($LV_Aufm)
$aListeImport = ""
Local $message = "Bitte wählen Sie die Import Datei aus!"
Local $sFilePath = FileOpenDialog($message, @ScriptDir & "\_Aufmaße\", "Text (*.txt)", 1 + 4)
If @error Then
MsgBox(4096, "", "Keine Datei(en) ausgewählt")
Else
$sFilePath = StringReplace($sFilePath, "|", @CRLF)
;~ MsgBox(4096, "", "Es wurde(n) " & $var & " ausgewählt")
_FileReadToArray($sFilePath, $aArray)
;~ _ArrayDisplay($aArray)
_Write_to_Console("importiere Aufmaß...")
If IsArray($aArray) Then
Dim $aListeImport[$aArray[0] - 15][13]
$iZ = 0
For $i = 16 To UBound($aArray) - 1
$aTemp = StringSplit($aArray[$i], "|")
For $ii = 1 To UBound($aTemp) - 1
$aListeImport[$iZ][$ii - 1] = $aTemp[$ii]
Next
$iZ = $iZ + 1
Next
_GUICtrlListView_AddArray($frm_lv_evaufm, $aListeImport)
EndIf
EndIf
EndFunc ;==>_EVAufmLV_import_txt
Func _Summe_Aktuallisieren()
Local $aArrayAufmaListe = _GUIListViewEx_ReadToArray($LV_Aufm, 1)
;~ _DebugArrayDisplay($aArrayAufmaListe)
$iSummeset = 0
For $i = 0 To UBound($aArrayAufmaListe) - 1
Select
Case $aArrayAufmaListe[$i][7] = "M"
$aArrayAufmaListe[$i][6] = $aArrayAufmaListe[$i][3]
Case $aArrayAufmaListe[$i][7] = "M2"
$sMengeM2 = _replaceKom2Punkt($aArrayAufmaListe[$i][3]) * _replaceKom2Punkt($aArrayAufmaListe[$i][4]) ;Länge x Breite = Menge vorne
$aArrayAufmaListe[$i][6] = _replacePunkt2Koma($sMengeM2) ;Menge neu Berechnen;
Case $aArrayAufmaListe[$i][7] = "M3"
$sMengeM3 = _replaceKom2Punkt($aArrayAufmaListe[$i][3]) * _replaceKom2Punkt($aArrayAufmaListe[$i][4]) * _replaceKom2Punkt($aArrayAufmaListe[$i][5]) ;länge x Breite x Tiefe = Menge
$aArrayAufmaListe[$i][6] = _replacePunkt2Koma($sMengeM3)
Case $aArrayAufmaListe[$i][7] = "t"
$sMengeM3 = _replaceKom2Punkt($aArrayAufmaListe[$i][3]) * _replaceKom2Punkt($aArrayAufmaListe[$i][4]) * _replaceKom2Punkt($aArrayAufmaListe[$i][5]) ;länge x Breite x Tiefe = Menge
$aArrayAufmaListe[$i][6] = _replacePunkt2Koma($sMengeM3)
;~ $aArrayAufmaListe[$i][6] = $aArrayAufmaListe[$i][3]
Case $aArrayAufmaListe[$i][7] = "LE"
EndSelect
ConsoleWrite($aArrayAufmaListe[$i][6] & @CRLF)
ConsoleWrite($sMengeM2 & @CRLF)
ConsoleWrite($sMengeM3 & @CRLF)
; Menge * Faktor = G-Menge
$sMenge = _replaceKom2Punkt($aArrayAufmaListe[$i][6]) * _replaceKom2Punkt($aArrayAufmaListe[$i][2])
$aArrayAufmaListe[$i][10] = _replacePunkt2Koma($sMenge) ; Menge (Menge * Faktor)
;G-Menge * Einzellspreis = Summe
$iSumme = _replaceKom2Punkt($aArrayAufmaListe[$i][10]) * _replaceKom2Punkt($aArrayAufmaListe[$i][11]) ;Menge hinten * Faktor)
$aArrayAufmaListe[$i][12] = _replacePunkt2Koma($iSumme)
_ArrayDisplay($aArrayAufmaListe)
$iSummeset = $iSummeset + $iSumme
Next
;~ _Write_to_Console("Preise aktualisieren")
GUICtrlSetData($lbl_summe, "Summe = " & _StringAddThousandsSepEx(_PriceRound($iSummeset)) & "")
_Write_to_Console("Summe = " & _StringAddThousandsSepEx(_PriceRound($iSummeset)) & "")
Return _replacePunkt2Koma($iSummeset)
EndFunc ;==>_Summe_Aktuallisieren
Func _Summe_Aktuallisieren_EVAufm()
Local $aArrayAufmaListe = _GUIListViewEx_ReadToArray($frm_lv_evaufm, 1)
;~ _DebugArrayDisplay($aArrayAufmaListe)
$iSummeset = 0
For $i = 0 To UBound($aArrayAufmaListe) - 1
Select
Case $aArrayAufmaListe[$i][7] = "M"
$aArrayAufmaListe[$i][6] = $aArrayAufmaListe[$i][3]
Case $aArrayAufmaListe[$i][7] = "M2"
$sMengeM2 = _replaceKom2Punkt($aArrayAufmaListe[$i][3]) * _replaceKom2Punkt($aArrayAufmaListe[$i][4]) ;Länge x Breite = Menge vorne
$aArrayAufmaListe[$i][6] = _replacePunkt2Koma($sMengeM2) ;Menge neu Berechnen;
Case $aArrayAufmaListe[$i][7] = "M3"
$sMengeM3 = _replaceKom2Punkt($aArrayAufmaListe[$i][3]) * _replaceKom2Punkt($aArrayAufmaListe[$i][4]) * _replaceKom2Punkt($aArrayAufmaListe[$i][5]) ;länge x Breite x Tiefe = Menge
$aArrayAufmaListe[$i][6] = _replacePunkt2Koma($sMengeM3)
Case $aArrayAufmaListe[$i][7] = "t"
$sMengeM3 = _replaceKom2Punkt($aArrayAufmaListe[$i][3]) * _replaceKom2Punkt($aArrayAufmaListe[$i][4]) * _replaceKom2Punkt($aArrayAufmaListe[$i][5]) ;länge x Breite x Tiefe = Menge
$aArrayAufmaListe[$i][6] = _replacePunkt2Koma($sMengeM3)
Case $aArrayAufmaListe[$i][7] = "LE"
;~ $aArrayAufmaListe[$i][6] = $aArrayAufmaListe[$i][3]
EndSelect
;~ ConsoleWrite($aArrayAufmaListe[$i][6]& @CRLF)
;~ ConsoleWrite($sMengeM2& @CRLF)
;~ ConsoleWrite($sMengeM3& @CRLF)
; Menge * Faktor = G-Menge
$sMenge = _replaceKom2Punkt($aArrayAufmaListe[$i][6]) * _replaceKom2Punkt($aArrayAufmaListe[$i][2])
$aArrayAufmaListe[$i][10] = _replacePunkt2Koma($sMenge) ; Menge (Menge * Faktor)
;G-Menge * Einzellspreis = Summe
$iSumme = _replaceKom2Punkt($aArrayAufmaListe[$i][10]) * _replaceKom2Punkt($aArrayAufmaListe[$i][11]) ;Menge hinten * Faktor)
$aArrayAufmaListe[$i][12] = _replacePunkt2Koma($iSumme)
;~ _ArrayDisplay($aListAufmass)
$iSummeset = $iSummeset + $iSumme
Next
_Write_to_Console("Preise aktualisieren")
GUICtrlSetData($frm_evaufm_lbl_summe, "Summe = " & _StringAddThousandsSepEx(_PriceRound($iSummeset)) & "")
_Write_to_Console("Summe = " & _PriceRound($iSummeset) & "")
EndFunc ;==>_Summe_Aktuallisieren_EVAufm
Func _Aufma_Listview_werte_aktu()
$aInhalt = ""
;~ $aGLVEx_Data[$iLV_Left_Index][19] = 1
_GUIListViewEx_SetActive($iLV_Aufma_Index)
$aInhalt = _GUIListViewEx_ReturnArray($iLV_Aufma_Index, 3)
;~ Global $iLV_Left_Index = _GUIListViewEx_Init($LV_Aufm, $aInhalt, 0, 0, True, 2 + 32)
;~ $aColor = _GUIListViewEx_ReturnArray($iLV_Left_Index, 3)
$iSummeset = 0
;~ _DebugArrayDisplay($aInhalt)
If IsArray($aInhalt) Then
If UBound($aInhalt) < 1 Then
Else
;~ _ArrayDisplay($aColor)
;~ _DebugArrayDisplay($aInhalt)
For $i = 0 To UBound($aInhalt) - 1
;Ändere Kurztext
;~ $aInhalt[$i][1] ; PosNr
;Abfrage nach Einheit
Select
Case $aInhalt[$i][7] = "M"
;ändere meter Zeile 3 mit Menge
$aInhalt[$i][6] = $aInhalt[$i][3]
_GUICtrlListView_AddSubItem($lv_aufm, $i, $aInhalt[$i][3], 6)
;Preis ändern
Case $aInhalt[$i][7] = "M2"
;Länge x Breite = Menge vorne
$sMengeM2 = _replaceKom2Punkt($aInhalt[$i][3]) * _replaceKom2Punkt($aInhalt[$i][4])
$aInhalt[$i][6] = _replacePunkt2Koma($sMengeM2) ;Menge neu Berechnen;
_GUICtrlListView_AddSubItem($lv_aufm, $i, $aInhalt[$i][6], 6)
;Preis ändern
$sMengeM2 = _replaceKom2Punkt($aInhalt[$i][3]) * _replaceKom2Punkt($aInhalt[$i][4]) ;Länge x Breite = Menge vorne
$aInhalt[$i][6] = _replacePunkt2Koma($sMengeM2) ;Menge neu Berechnen;
Case $aInhalt[$i][7] = "M3"
;länge x Breite x Tiefe = Menge
$sMengeM3 = _replaceKom2Punkt($aInhalt[$i][3]) * _replaceKom2Punkt($aInhalt[$i][4]) * _replaceKom2Punkt($aInhalt[$i][5])
$aInhalt[$i][6] = _replacePunkt2Koma($sMengeM3)
_GUICtrlListView_AddSubItem($lv_aufm, $i, $aInhalt[$i][6], 6)
;preis Ändern
$sMengeM3 = _replaceKom2Punkt($aInhalt[$i][3]) * _replaceKom2Punkt($aInhalt[$i][4]) * _replaceKom2Punkt($aInhalt[$i][5]) ;länge x Breite x Tiefe = Menge
$aInhalt[$i][6] = _replacePunkt2Koma($sMengeM3)
Case $aInhalt[$i][7] = "LE"
;~ $aInhalt[$i][6] = $aInhalt[$i][3]
Case $aInhalt[$i][7] = "ST"
;~ $aInhalt[$i][6] = $aInhalt[$i][3]
Case $aInhalt[$i][7] = "STD"
;~ $aInhalt[$i][6] = $aInhalt[$i][3]
Case $aInhalt[$i][7] = "t"
$sMengeM3 = _replaceKom2Punkt($aInhalt[$i][3]) * _replaceKom2Punkt($aInhalt[$i][4]) * _replaceKom2Punkt($aInhalt[$i][5])
$aInhalt[$i][6] = _replacePunkt2Koma($sMengeM3)
_GUICtrlListView_AddSubItem($lv_aufm, $i, $aInhalt[$i][6], 6)
;preis Ändern
$sMengeM3 = _replaceKom2Punkt($aInhalt[$i][3]) * _replaceKom2Punkt($aInhalt[$i][4]) * _replaceKom2Punkt($aInhalt[$i][5]) ;länge x Breite x Tiefe = Menge
$aInhalt[$i][6] = _replacePunkt2Koma($sMengeM3)
EndSelect
;ändere Menge hinten mit Mengevorne * Faktor
$iMengeVorne = _replaceKom2Punkt($aInhalt[$i][6])
$iFakotr = _replaceKom2Punkt($aInhalt[$i][2])
$iMengeHinten = $iMengeVorne * $iFakotr
$aInhalt[$i][10] = _replacePunkt2Koma($iMengeHinten)
_GUICtrlListView_AddSubItem($lv_aufm, $i, $aInhalt[$i][10], 10)
;ändere Gesamtpreishinten (MengeHinten*Einzellpreis)
$iGesamtsumme = $iMengeHinten * _replaceKom2Punkt($aInhalt[$i][11])
$aInhalt[$i][12] = _replacePunkt2Koma($iGesamtsumme)
_GUICtrlListView_AddSubItem($lv_aufm, $i, $aInhalt[$i][12], 12)
;0 Nullen hinten löschen
If $aInhalt[$i][12] = "0" Or $aInhalt[$i][10] = "0" Then
$aInhalt[$i][12] = ""
$aInhalt[$i][10] = ""
_GUICtrlListView_AddSubItem($lv_aufm, $i, "", 12)
_GUICtrlListView_AddSubItem($lv_aufm, $i, "", 10)
EndIf
; Menge * Faktor = G-Menge
$sMenge = _replaceKom2Punkt($aInhalt[$i][6]) * _replaceKom2Punkt($aInhalt[$i][2])
$aInhalt[$i][10] = _replacePunkt2Koma($sMenge) ; Menge (Menge * Faktor)
;G-Menge * Einzellspreis = Summe
$iSumme = _replaceKom2Punkt($aInhalt[$i][10]) * _replaceKom2Punkt($aInhalt[$i][11]) ;Menge hinten * Faktor)
$aInhalt[$i][12] = _replacePunkt2Koma($iSumme)
;~ _ArrayDisplay($aListAufmass)
$iSummeset = $iSummeset + $iSumme
Next
GUICtrlSetData($lbl_summe, "Summe = " & _StringAddThousandsSepEx(_PriceRound($iSummeset)) & "")
GUICtrlSetData($frm_extern_lbl_preis, "Summe = " & _StringAddThousandsSepEx(_PriceRound($iSummeset)) & "")
;~ _GUICtrlListView_DeleteAllItems($lv_aufm)
;~ _GUICtrlListView_AddArray($lv_aufm, $aInhalt)
EndIf
EndIf
EndFunc ;==>_Aufma_Listview_werte_aktu
Func _ArryRemoveBlanks(ByRef $arr)
$idx = 0
For $i = 0 To UBound($arr) - 1
If $arr[$i] <> "" Then
$arr[$idx] = $arr[$i]
$idx += 1
EndIf
Next
If IsArray($arr) Then
ReDim $arr[$idx]
EndIf
EndFunc ;==>_ArryRemoveBlanks
Func _Check_Positionen_ImVertrag()
$aArray = _GUIListViewEx_ReadToArray($LV_Aufm, 0)
;~ _ArrayDisplay($aArray, "LV-Liste")
$aArrayUnique = _ArrayUnique($aArray, 1) ; Create a unique array of the second column.
_ArryRemoveBlanks($aArrayUnique)
_ArrayDelete($aArrayUnique, 0)
_ArraySort($aArrayUnique)
Local $sChb_rv = GUICtrlRead($lve_tab_chb_vertrag)
;~ local $sIniWert = IniRead($sPfadIni, "LV", $sChb_rv, "")
Local $sFilePath = @ScriptDir & "\daten\LV\" & $sChb_rv & ".txt"
Local $aArrayPosListe
_FileReadToArray($sFilePath, $aArrayPosListe)
_ArrayDelete($aArrayPosListe, 0)
_ArraySort($aArrayPosListe)
;~ _DebugArrayDisplay($aArrayPosListe)
If IsArray($aArrayPosListe) Then
;~ ConsoleWrite($sChb_rv & ".txt" & @CRLF)
;~ _DebugArrayDisplay($aArrayPosListe)
Local $aSplit = StringSplit($aArrayPosListe[0], "|")
If IsArray($aSplit) Then
;~ _ArrayDisplay($aSplit)
Dim $aListeImport[UBound($aArrayPosListe)][$aSplit[0]]
;~ _GUICtrlListView_AddArray($ListView1, $aArray)
For $i = 0 To UBound($aArrayPosListe) - 1
$aTemp = StringSplit($aArrayPosListe[$i], "|")
If $aTemp[0] <> 4 Then
_ArrayDisplay($aTemp)
EndIf
For $ii = 1 To UBound($aTemp) - 1
$aListeImport[$i][$ii - 1] = $aTemp[$ii]
Next
Next
;~ _ArrayDisplay($aListeImport, "PosListe")
Dim $aNotVertrag[1]
For $ii = 0 To UBound($aArrayUnique) - 1
For $i = 0 To UBound($aListeImport) - 1
If $aArrayUnique[$ii] = $aListeImport[$i][0] Then
$sTEst = True
ExitLoop
Else
$sTEst = False
EndIf
Next
If $sTEst = True Then
Else
_ArrayAdd($aNotVertrag, $aArrayUnique[$ii])
;~ ConsoleWrite($aArrayUnique[$ii] & "| nicht im aus ausgewählten Vertrag" & @CRLF)
EndIf
Next
;~ _DebugArrayDisplay($aNotVertrag)
Return $aNotVertrag
EndIf
EndIf
EndFunc ;==>_Check_Positionen_ImVertrag
Func _Write_to_Console($sString)
$sText = @YEAR & "." & @MON & "." & @MDAY & " | " & @HOUR & ":" & @MIN & ":" & @SEC & " " & $sString
GUICtrlSetData($logs_tab_ed_logs, GUICtrlRead($logs_tab_ed_logs) & @CRLF & $sText)
ConsoleWrite($sText & @CRLF)
FileWrite(@ScriptDir & "\Daten\_LOG_File.txt", $sText & @CRLF)
_GUICtrlEdit_LineScroll($logs_tab_ed_logs, 0, _GUICtrlEdit_GetLineCount($logs_tab_ed_logs))
EndFunc ;==>_Write_to_Console
Func _WM_COMMAND($hWinHandle, $iMsg, $wParam, $lParam)
If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WinAPI_LoWord($wParam) = $tab1_txt_leange Then
GUICtrlSetData($tab1_txt_rest_laenge, GUICtrlRead($tab1_txt_leange))
EndIf
Select
Case $sEinheit = "ST"
If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WinAPI_LoWord($wParam) = $lve_tab_txt_faktor Then
$sMenge_ST = 0
;~ $sMenge_ST = _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_faktor)) * _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_menge))
;GUICtrlSetData($lve_tab_txt_menge, $sMenge_ST)
EndIf
Case $sEinheit = "LE"
If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WinAPI_LoWord($wParam) = $lve_tab_txt_faktor Then
$sMenge_LE = 0
;~ $sMenge_LE = _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_faktor)) * _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_menge))
GUICtrlSetData($lve_tab_txt_menge, $sMenge_LE)
EndIf
Case $sEinheit = "STD"
If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WinAPI_LoWord($wParam) = $lve_tab_txt_faktor Then
$sMenge_STD = 0
;~ $sMenge_STD = _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_faktor)) * _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_menge))
GUICtrlSetData($lve_tab_txt_menge, $sMenge_STD)
EndIf
Case $sEinheit = "M"
If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WinAPI_LoWord($wParam) = $lve_tab_txt_leange Or _WinAPI_LoWord($wParam) = $lve_tab_txt_faktor Then
$sMenge_m = 0
$sMenge_m = _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_faktor)) * _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_leange)) ;Länge x Breite = Menge vorne
$sMenge_m = _replacePunkt2Koma($sMenge_m)
GUICtrlSetData($lve_tab_txt_menge, $sMenge_m)
EndIf
Case $sEinheit = "M2"
If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WinAPI_LoWord($wParam) = $lve_tab_txt_leange Or _WinAPI_LoWord($wParam) = $lve_tab_txt_faktor Or _WinAPI_LoWord($wParam) = $lve_tab_txt_breite Then
$sMenge_m2 = 0
$sMenge_m2 = _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_faktor)) * _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_leange)) * _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_breite)) ;Länge x Breite = Menge vorne
$sMenge_m2 = _replacePunkt2Koma($sMenge_m2)
GUICtrlSetData($lve_tab_txt_menge, $sMenge_m2)
EndIf
Case $sEinheit = "M3"
If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WinAPI_LoWord($wParam) = $lve_tab_txt_leange Or _WinAPI_LoWord($wParam) = $lve_tab_txt_faktor Or _WinAPI_LoWord($wParam) = $lve_tab_txt_breite Or _WinAPI_LoWord($wParam) = $lve_tab_txt_tiefe Then
$sMenge_m3 = 0
$sMenge_m3 = _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_faktor)) * _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_leange)) * _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_breite)) * _replaceKom2Punkt(GUICtrlRead($lve_tab_txt_tiefe)) ;Länge x Breite = Menge vorne
$sMenge_m3 = _replacePunkt2Koma($sMenge_m3)
GUICtrlSetData($lve_tab_txt_menge, $sMenge_m3)
EndIf
EndSelect
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_COMMAND
Func _GUICtrlListView_ScrollToItem($hListView, $item) ; $item : zero based ListViewItem
$item_to_scroll = $item
If $item_to_scroll >= 0 Then $item_to_scroll -= 1
$aRect = _GUICtrlListView_GetItemRect($hListView, $item_to_scroll, 3)
$V_iDY = $aRect[1] - 1
If $item <= 0 Then $V_iDY -= 12
_GUICtrlListView_Scroll($hListView, 1, $V_iDY)
EndFunc ;==>_GUICtrlListView_ScrollToItem
Func _LV_Farben()
$aArray = _GUIListViewEx_ReadToArray($LV_Aufm, 0)
;~ ConsoleWrite("_Listview2Array($LV_Aufm)" & @CRLF)
;~ _DebugArrayDisplay($aArray)
_Pflichtfelder2Array()
$sColor_leereZeile = IniRead($sPfadIni, "Color", "leereZeile", "0xF7CA14")
$sColor_Pflichtfelder = IniRead($sPfadIni, "Color", "Pflichtfelder", "0xED686B")
$sColor_nichtimVertrag = IniRead($sPfadIni, "Color", "nichtimVertrag", "0x3370AD")
If IsArray($aArray) Then
If UBound($aArray) <= 1 Then
Else
For $i = 0 To UBound($aArray) - 1
;immer zuerst alle Weiß
ListViewColorsFonts_SetItemColors($hLV, $i, -1, 0xFFFFFF)
;einheiten Pflichtfelder Rot
If $aArray[$i][1] <> "" And $aArray[$i][7] = "ST" And $aArray[$i][6] = "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 6, $sColor_Pflichtfelder)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M" And $aArray[$i][3] = "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 3, $sColor_Pflichtfelder)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M2" And $aArray[$i][3] = "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 3, $sColor_Pflichtfelder)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M2" And $aArray[$i][4] = "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 4, $sColor_Pflichtfelder)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M3" And $aArray[$i][3] = "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 3, $sColor_Pflichtfelder)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M3" And $aArray[$i][4] = "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 4, $sColor_Pflichtfelder)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M3" And $aArray[$i][5] = "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 5, $sColor_Pflichtfelder)
EndIf
;einheiten Nornmal Farbe
If $aArray[$i][1] <> "" And $aArray[$i][7] = "ST" And $aArray[$i][6] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 6, 0xFFFFFF)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M" And $aArray[$i][3] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 3, 0xFFFFFF)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M2" And $aArray[$i][3] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 3, 0xFFFFFF)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M2" And $aArray[$i][4] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 4, 0xFFFFFF)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M3" And $aArray[$i][3] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 3, 0xFFFFFF)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M3" And $aArray[$i][4] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 4, 0xFFFFFF)
EndIf
If $aArray[$i][1] <> "" And $aArray[$i][7] = "M3" And $aArray[$i][5] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 5, 0xFFFFFF)
EndIf
;pflichtfelder
If IsArray($aPflichtfelder) Then
Local $aiResult = _ArrayFindAll($aPflichtfelder, $aArray[$i][1], 0, 0, 0, 1)
If IsArray($aiResult) Then
If $aArray[$i][9] = "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 9, $sColor_Pflichtfelder)
EndIf
If $aArray[$i][9] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 9, 0xFFFFFF)
EndIf
EndIf
EndIf
;faktor ungleich 1
If $aArray[$i][2] <> "1,0" And $aArray[$i][9] = "" And $aArray[$i][7] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 9, $sColor_Pflichtfelder)
Else
If $aArray[$i][7] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $i, 9, 0xFFFFFF)
EndIf
EndIf
;leere Zeilen Orange
If $aArray[$i][0] = "" And $aArray[$i][1] = "" And $aArray[$i][10] = "" And $aArray[$i][11] = "" And $aArray[$i][12] = "" Then
;~ $aCollor[$i][$ii] = "0xF7CA14"
ListViewColorsFonts_SetItemColors($hLV, $i, -1, $sColor_leereZeile)
EndIf
;~ ListViewColorsFonts_SetItemFonts($hLV, $i, -1, 0xF7CA14
Next
$aNotIncludeFarben = ""
$aNotIncludeFarben = _Check_Positionen_ImVertrag()
For $ii = 0 To UBound($aArray) - 1
If IsArray($aNotIncludeFarben) Then
Local $aiResult = _ArrayFindAll($aNotIncludeFarben, $aArray[$ii][1], 0, 0, 0, 1)
If IsArray($aiResult) Then
If $aArray[$ii][9] = "" Then
ListViewColorsFonts_SetItemColors($hLV, $ii, 1, $sColor_nichtimVertrag)
EndIf
If $aArray[$ii][9] <> "" Then
ListViewColorsFonts_SetItemColors($hLV, $ii, 1, 0xFFFFFF)
EndIf
EndIf
EndIf
Next
EndIf
EndIf
Local $hListView = GUICtrlGetHandle($LV_Aufm)
ListViewColorsFonts_Redraw($hListView)
;~ _DebugArrayDisplay($aCollor)
EndFunc ;==>_LV_Farben
Func _LV_Change_VertragsDaten()
Local $aArrayAufmaListe = _GUIListViewEx_ReadToArray($LV_Aufm, 0)
;~ _DebugArrayDisplay($aArrayAufmaListe)
$iFarbenV = "False"
Local $sChb_rv = GUICtrlRead($kopf_TAB_chb_vertrag)
$aNotIncludeFarben = ""
$aNotIncludeFarben = _Check_Positionen_ImVertrag()
Local $sFilePath = @ScriptDir & "\daten\LV\" & $sChb_rv & ".txt"
Local $aArray
_FileReadToArray($sFilePath, $aArray)
_ArrayDelete($aArray, 0)
_ArraySort($aArray)
Local $aSplit = StringSplit($aArray[0], "|")
;~ _ArrayDisplay($aSplit)
Dim $aListeImport[UBound($aArray)][$aSplit[0]]
;~ _GUICtrlListView_AddArray($ListView1, $aArray)
For $i = 0 To UBound($aArray) - 1
$aTemp = StringSplit($aArray[$i], "|")
If $aTemp[0] <> 4 Then
_ArrayDisplay($aTemp)
EndIf
For $ii = 1 To UBound($aTemp) - 1
$aListeImport[$i][$ii - 1] = $aTemp[$ii]
Next
Next
;~ _DebugArrayDisplay($aListeImport)
For $i = 0 To UBound($aArrayAufmaListe) - 1
For $ii = 0 To UBound($aListeImport) - 1
If $aArrayAufmaListe[$i][1] = $aListeImport[$ii][0] Then
;~ $aArrayAufmaListe[$i][11] = $aListeImport[$ii][3]
_GUICtrlListView_AddSubItem($lv_aufm, $i, $aListeImport[$ii][3], 11)
Else
;~ ListViewColorsFonts_SetItemColors($hLV, $i, 1, 0x3370AD)
EndIf
Next
Next
;~ _DebugArrayDisplay($aArrayAufmaListe)
;~ _Summe_Aktuallisieren()
Global $aLV_List_Right = _GUIListViewEx_ReadToArray($LV_Aufm, 0)
$iLV_Aufma_Index = _GUIListViewEx_Init($LV_Aufm, $aLV_List_Right, 0, 0xFF0000, True, 2)
;~ $iLV_Aufma_Index = _GUIListViewEx_Init($LV_Aufm, $aListeImport, 0, 0, True, 2 )
;~ _ArrayDisplay($aListeImport)
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;2;3;4;5;6")
_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, 9, 2, $cDataB, True)
_klick_ListAktu()
MsgBox(64, "Vertragspositionen wurden geändert!", "okay fertig")
EndFunc ;==>_LV_Change_VertragsDaten
Func _REB_TXT_to_Excel($sTXT, $sExcel)
Local $aLines
_FileReadToArray($sTXT, $aLines)
Local $Baustelle = ""
Local $Datum = ""
Local $Abschnitt = ""
Local $inHeader = False
Local $inData = False
; -------------------------------
; Kopf auslesen
; -------------------------------
For $i = 1 To $aLines[0]
Local $line = $aLines[$i]
If StringInStr($line, "[Kopfdaten]") Then
$inHeader = True
ContinueLoop
EndIf
If StringInStr($line, "[Aufmaßdaten]") Then ExitLoop
If $inHeader Then
If StringLeft($line, 10) = "Baustelle=" Then $Baustelle = StringTrimLeft($line, 10)
If StringLeft($line, 6) = "Datum=" Then $Datum = StringTrimLeft($line, 6)
If StringLeft($line, 13) = "Bauabschnitt=" Then $Abschnitt = StringTrimLeft($line, 13)
EndIf
Next
; -------------------------------
; Daten sammeln (dynamisch)
; -------------------------------
Local $aExport[0][6]
Local $iWrite = 0
For $i = 1 To $aLines[0]
Local $line = $aLines[$i]
If StringInStr($line, "[Aufmaßdaten]") Then
$inData = True
ContinueLoop
EndIf
If Not $inData Then ContinueLoop
; 🔥 WICHTIG: Trenner + Leerzeilen überspringen
If StringStripWS($line, 8) = "" Then ContinueLoop
; zusätzliche Sicherheit (||||||||||)
If StringRegExp($line, "^\|+$") Then ContinueLoop
Local $f = StringSplit($line, "|")
If $f[0] < 10 Then ContinueLoop
; 🔥 wichtigste Prüfung → OZ muss existieren
If StringStripWS($f[2], 3) = "" Then ContinueLoop
Local $Ort = $f[1]
Local $OZ = $f[2]
Local $Formel = $f[3]
Local $Ergebnis = $f[7]
Local $Text = $f[9]
; -------------------------------
; Zeile 1 (Bemerkung)
; -------------------------------
ReDim $aExport[$iWrite + 1][6]
$aExport[$iWrite][0] = $OZ
$aExport[$iWrite][1] = $Text
$aExport[$iWrite][2] = $Ort
$aExport[$iWrite][3] = ""
$aExport[$iWrite][4] = ""
$aExport[$iWrite][5] = ""
$iWrite += 1
; -------------------------------
; Zeile 2 (Formel)
; -------------------------------
ReDim $aExport[$iWrite + 1][6]
$aExport[$iWrite][0] = $OZ
$aExport[$iWrite][1] = ""
$aExport[$iWrite][2] = ""
$aExport[$iWrite][3] = $Formel
$aExport[$iWrite][4] = $Formel
$aExport[$iWrite][5] = $Ergebnis
$iWrite += 1
Next
; -------------------------------
; Excel schreiben (nur 1x!)
; -------------------------------
Local $oExcel = _Excel_Open()
Local $oBook = _Excel_BookNew($oExcel)
; Kopf
_Excel_RangeWrite($oBook, Default, "Bauvorhaben", "A2")
_Excel_RangeWrite($oBook, Default, $Baustelle, "C2")
_Excel_RangeWrite($oBook, Default, "Leistungsverzeichnis", "A3")
_Excel_RangeWrite($oBook, Default, $Abschnitt, "C3")
_Excel_RangeWrite($oBook, Default, "Aufmaß", "A4")
_Excel_RangeWrite($oBook, Default, $Datum, "D4")
; Datenblock schreiben (🔥 schnell)
If $iWrite > 0 Then
_Excel_RangeWrite($oBook, Default, $aExport, "A7")
EndIf
_Excel_BookSaveAs($oBook, $sExcel)
_Excel_Close($oExcel)
EndFunc
;#################
Func Dataflor_Zu_California($sEingabeDatei, $sAusgabeDatei, $sRefPrjName = "", $sRefPrjID = "", $sOwnerName = "")
If Not FileExists($sEingabeDatei) Then
MsgBox(16, "Fehler", "Eingabedatei nicht gefunden:" & @CRLF & $sEingabeDatei)
Return False
EndIf
Local $hLesen = FileOpen($sEingabeDatei, 0)
If $hLesen = -1 Then
MsgBox(16, "Fehler", "Konnte Datei nicht oeffnen:" & @CRLF & $sEingabeDatei)
Return False
EndIf
Local $sInhalt = FileRead($hLesen)
FileClose($hLesen)
; BOM entfernen falls vorhanden
If StringLeft($sInhalt, 3) = Chr(0xEF) & Chr(0xBB) & Chr(0xBF) Then
$sInhalt = StringMid($sInhalt, 4)
EndIf
$g_iIdCounter = 1000001
; =========================================================================
; SCHRITT 1: Zeilenenden normalisieren → einheitlich CRLF
; Muss als ERSTES passieren - Dataflor hat gemischte CR/CRLF!
; =========================================================================
$sInhalt = StringReplace($sInhalt, @CRLF, @LF)
$sInhalt = StringReplace($sInhalt, @CR, @LF)
$sInhalt = StringReplace($sInhalt, @LF, @CRLF)
; =========================================================================
; SCHRITT 2: <Street>-Zeilenumbrüche zu &#10; konvertieren
; Dataflor schreibt mehrzeilige Adressen direkt in den Tag → kaputtes XML
; StringRegExpReplace kann keine Callback-Funktion → manuell extrahieren
; =========================================================================
Local $aStreet = StringRegExp($sInhalt, "(<Street>)([\s\S]*?)(</Street>)", 1)
If Not @error Then
Local $sStreetAlt = $aStreet[0] & $aStreet[1] & $aStreet[2]
Local $sStreetNeu = $aStreet[0] & StringReplace($aStreet[1], @CRLF, "&#10;") & $aStreet[2]
$sInhalt = StringReplace($sInhalt, $sStreetAlt, $sStreetNeu)
EndIf
; =========================================================================
; SCHRITT 3: XML-Kommentar ersetzen
; BUG-FIX: "<!--[^>]*-->" bricht am > in der URL "gaeb-toolbox.de/" ab!
; Korrekt: Muster als Variable bauen → [\s\S]*? matcht alles inkl. >
; =========================================================================
Local $sKommentarMuster = "<!--[\s\S]*?-->"
$sInhalt = StringRegExpReplace($sInhalt, $sKommentarMuster, "<!-- REB 23.003 (2009) - X31 Export AutoIt v5 -->")
; =========================================================================
; SCHRITT 4: GAEBInfo - Datum, Zeit, Programm
;
; BUG-FIX: Backreference-Kollision!
; "$1" & "2026-03-20" & "$2" ergibt nach Konkatenation "$12026-03-20$2"
; AutoIt liest "$12" als Capture-Gruppe 12 → nicht vorhanden → leer!
; Gleiches bei Zeit: "$108:00:00" → Gruppe 10!
; FIX: "${1}" begrenzt die Gruppe eindeutig → kein Kollisionsproblem.
; =========================================================================
Local $sHeute = @YEAR & "-" & StringFormat("%02d", @MON) & "-" & StringFormat("%02d", @MDAY)
Local $sZeit = StringFormat("%02d", @HOUR) & ":" & StringFormat("%02d", @MIN) & ":" & StringFormat("%02d", @SEC)
$sInhalt = StringRegExpReplace($sInhalt, "(<Date>)[^<]*(</Date>)", "${1}" & $sHeute & "${2}")
$sInhalt = StringRegExpReplace($sInhalt, "(<Time>)[^<]*(</Time>)", "${1}" & $sZeit & "${2}")
$sInhalt = StringRegExpReplace($sInhalt, "(<ProgSystem>)[^<]*(</ProgSystem>)", "${1}AutoIt REB Engine V1.2${2}")
$sInhalt = StringRegExpReplace($sInhalt, "(<ProgName>)[^<]*(</ProgName>)", "${1}AutoIt REB X31 Export${2}")
; =========================================================================
; SCHRITT 5: PrjInfo anpassen (nur wenn Parameter übergeben)
; =========================================================================
If $sRefPrjName <> "" Then
$sInhalt = StringRegExpReplace($sInhalt, "(<RefPrjName>)[^<]*(</RefPrjName>)", "${1}" & $sRefPrjName & "${2}")
EndIf
If $sRefPrjID <> "" Then
$sInhalt = StringRegExpReplace($sInhalt, "(<RefPrjID>)[^<]*(</RefPrjID>)", "${1}" & $sRefPrjID & "${2}")
EndIf
; =========================================================================
; SCHRITT 6: QtyDetermInfo GUID ersetzen
;
; BUG-FIX 1: Chr(34) statt " im Regex → kein String-Terminierungs-Problem
; BUG-FIX 2: ${1} und ${2} statt $1/$2 → GUID kann mit Ziffer beginnen!
; Beispiel: GUID "3a4b..." → "$13a4b..." → AutoIt liest "$13" = Gruppe 13!
; =========================================================================
Local $sNeueGUID = _GenerateGUID()
Local $sChr34 = Chr(34)
Local $sGUIDMuster = "(QtyDetermInfo\s+ID=" & $sChr34 & ")[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}(" & $sChr34 & ")"
$sInhalt = StringRegExpReplace($sInhalt, $sGUIDMuster, "${1}" & $sNeueGUID & "${2}")
; =========================================================================
; SCHRITT 7: OWN-Name anpassen (optional)
; =========================================================================
If $sOwnerName <> "" Then
Local $aOWN = StringRegExp($sInhalt, "(<OWN>[\s\S]*?</OWN>)", 1)
If Not @error Then
Local $sOWNAlt = $aOWN[0]
Local $sOWNNeu = StringRegExpReplace($sOWNAlt, "(<Name1>)[^<]*(</Name1>)", "${1}" & $sOwnerName & "${2}")
$sInhalt = StringReplace($sInhalt, $sOWNAlt, $sOWNNeu)
EndIf
EndIf
; =========================================================================
; SCHRITT 8: CtlgAssignType entfernen
; =========================================================================
$sInhalt = StringRegExpReplace($sInhalt, "\s*<CtlgAssignType\s*/>", "")
$sInhalt = StringRegExpReplace($sInhalt, "\s*<CtlgAssignType>[^<]*</CtlgAssignType>", "")
; =========================================================================
; SCHRITT 9: BVBS:Explanation entfernen
; =========================================================================
$sInhalt = StringRegExpReplace($sInhalt, "<BVBS:Explanation>[^<]*</BVBS:Explanation>", "")
; =========================================================================
; SCHRITT 10: Leere Items entfernen (Qty=0.000 ohne Mengennachweis)
; =========================================================================
Local $iMax = 30
While $iMax > 0
Local $sVorher = $sInhalt
$sInhalt = StringRegExpReplace($sInhalt, _
"<Item\s[^>]+>\s*<QtyDeterm>\s*<Qty>0[,.]000</Qty>\s*</QtyDeterm>\s*</Item>", "")
If $sInhalt = $sVorher Then ExitLoop
$iMax -= 1
WEnd
; =========================================================================
; SCHRITT 11: Leere Container bereinigen
; =========================================================================
$iMax = 10
While $iMax > 0
Local $sVorher = $sInhalt
$sInhalt = StringRegExpReplace($sInhalt, "<Itemlist>\s*</Itemlist>", "")
$sInhalt = StringRegExpReplace($sInhalt, "<BoQBody>\s*</BoQBody>", "")
$sInhalt = StringRegExpReplace($sInhalt, "<BoQCtgy[^>]*>\s*</BoQCtgy>", "")
If $sInhalt = $sVorher Then ExitLoop
$iMax -= 1
WEnd
; =========================================================================
; SCHRITT 12: IDs neu nummerieren (sequenziell ab DF_1000001)
; =========================================================================
$sInhalt = _NummeriereIDs($sInhalt)
; =========================================================================
; SCHRITT 13: Zeilen-IDs neu vergeben
; PROBLEM: Dataflor vergibt Zeilen-IDs in der ERFASSUNGSREIHENFOLGE,
; nicht in der POSITIONS-Reihenfolge. California sortiert die Anzeige
; nach Zeilen-ID → Positionen erscheinen durcheinander.
; FIX: Alle Zeilen-IDs sequenziell neu vergeben in der Reihenfolge
; wie sie im XML stehen (= Reihenfolge der Positionen).
; =========================================================================
$sInhalt = _RenummeriereZeilenIDs($sInhalt)
; =========================================================================
; SCHRITT 14: XML formatieren
; =========================================================================
$sInhalt = _FormatXML($sInhalt)
; =========================================================================
; SCHRITT 15: Ausgabedatei mit UTF-8 BOM schreiben
; =========================================================================
Local $hDatei = FileOpen($sAusgabeDatei, 2 + 128) ; 2=ueberschreiben, 128=UTF-8 BOM
If $hDatei = -1 Then
MsgBox(16, "Fehler", "Konnte Ausgabedatei nicht erstellen:" & @CRLF & $sAusgabeDatei)
Return False
EndIf
FileWrite($hDatei, $sInhalt)
FileClose($hDatei)
;~ MsgBox(64, "Fertig", "Konvertierung abgeschlossen!" & @CRLF & @CRLF & "Ausgabe:" & @CRLF & $sAusgabeDatei)
Return True
EndFunc
; =============================================================================
; Zeilen-IDs in QTakeoff-Rows neu vergeben
; FORMAT: BBBBZZ (6 Zeichen, REB 23.003 Standard)
; BBBB = Blattnummer 0001-9999 (wird hochgezählt)
; ZZ = Zeilennummer A0 (fest) - gültiges Buchstabe+Ziffer-Format
;
; Ergebnis: 0001A0, 0002A0, 0003A0, ... streng aufsteigend
; ✓ 100% gültiges REB-Adressfeld (kein "unzulässig"-Fehler)
; ✓ Streng aufsteigend → California zeigt Positionen in richtiger Reihenfolge
; ✓ Eindeutig → keine Kollisionen
; ✓ Bis zu 9999 Zeilen pro Datei
; =============================================================================
Func _RenummeriereZeilenIDs($sXML)
Local $iBlatt = 1 ; Startet bei 0001, wird pro Zeile um 1 erhöht
Local $iPos = 1
While True
; Nächste QTakeoff Row finden
Local $iStart = StringInStr($sXML, 'QTakeoff Row="', 0, 1, $iPos)
If $iStart = 0 Then ExitLoop
Local $iRowStart = $iStart + 14
Local $iRowEnd = StringInStr($sXML, '"', 0, 1, $iRowStart)
If $iRowEnd = 0 Then ExitLoop
; Nur Standard-Rows mit 80 Zeichen verarbeiten
If ($iRowEnd - $iRowStart) = 80 Then
; Neue ID: Blattnummer vierstellig + "A0"
; Zeichen 70-75 (StringMid: 1-basiert, Position 70, Länge 6)
Local $sNeueID = StringFormat("%04d", $iBlatt) & "A0"
Local $sRow = StringMid($sXML, $iRowStart, 80)
Local $sRowNeu = StringLeft($sRow, 69) & $sNeueID & StringMid($sRow, 76)
; Zeile im XML ersetzen
$sXML = StringLeft($sXML, $iRowStart - 1) & $sRowNeu & StringMid($sXML, $iRowEnd)
$iBlatt += 1
EndIf
$iPos = $iRowStart + 1
WEnd
Return $sXML
EndFunc
; =============================================================================
; IDs sequenziell neu nummerieren
; =============================================================================
Func _NummeriereIDs($sXML)
Local $aAlleIDs = StringRegExp($sXML, 'ID="(DF_[0-9]+)"', 3)
If @error Then Return $sXML
Local $aEindeutig[0]
For $i = 0 To UBound($aAlleIDs) - 1
Local $bGefunden = False
For $j = 0 To UBound($aEindeutig) - 1
If $aEindeutig[$j] = $aAlleIDs[$i] Then
$bGefunden = True
ExitLoop
EndIf
Next
If Not $bGefunden Then
ReDim $aEindeutig[UBound($aEindeutig) + 1]
$aEindeutig[UBound($aEindeutig) - 1] = $aAlleIDs[$i]
EndIf
Next
For $i = 0 To UBound($aEindeutig) - 1
Local $sNeu = "DF_" & $g_iIdCounter
$g_iIdCounter += 1
$sXML = StringReplace($sXML, 'ID="' & $aEindeutig[$i] & '"', 'ID="' & $sNeu & '"')
Next
Return $sXML
EndFunc
; =============================================================================
; XML formatieren
; =============================================================================
Func _FormatXML($sXML)
$sXML = StringRegExpReplace($sXML, ">\s+<", ">" & @CRLF & "<")
$sXML = StringReplace($sXML, "<BoQBody>", "<BoQBody>" & @CRLF)
$sXML = StringReplace($sXML, "<Itemlist>", "<Itemlist>" & @CRLF)
$sXML = StringRegExpReplace($sXML, "(<BoQCtgy[^>]*>)", "${1}" & @CRLF)
$sXML = StringRegExpReplace($sXML, "(<Item [^>]*>)", "${1}" & @CRLF)
Local $aClose[5] = ["</BoQBody>", "</Itemlist>", "</BoQCtgy>", "</Item>", "</QtyDeterm>"]
For $i = 0 To 4
$sXML = StringReplace($sXML, $aClose[$i], @CRLF & $aClose[$i] & @CRLF)
Next
$sXML = StringReplace($sXML, "<QtyDeterm>", @CRLF & "<QtyDeterm>" & @CRLF)
While StringInStr($sXML, @CRLF & @CRLF & @CRLF)
$sXML = StringReplace($sXML, @CRLF & @CRLF & @CRLF, @CRLF & @CRLF)
WEnd
While StringLeft($sXML, 2) = @CRLF
$sXML = StringMid($sXML, 3)
WEnd
Return $sXML
EndFunc
; =============================================================================
; GUID generieren
; =============================================================================
Func _GenerateGUID()
Local $aTeile[5] = [8, 4, 4, 4, 12]
Local $sGUID = ""
For $i = 0 To 4
If $i > 0 Then $sGUID &= "-"
For $j = 1 To $aTeile[$i]
$sGUID &= StringLower(Hex(Random(0, 15, 1), 1))
Next
Next
Return $sGUID
EndFunc