;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: -Zeilenumbrüche zu konvertieren ; Dataflor schreibt mehrzeilige Adressen direkt in den Tag → kaputtes XML ; StringRegExpReplace kann keine Callback-Funktion → manuell extrahieren ; ========================================================================= Local $aStreet = StringRegExp($sInhalt, "()([\s\S]*?)()", 1) If Not @error Then Local $sStreetAlt = $aStreet[0] & $aStreet[1] & $aStreet[2] Local $sStreetNeu = $aStreet[0] & StringReplace($aStreet[1], @CRLF, " ") & $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 = "" $sInhalt = StringRegExpReplace($sInhalt, $sKommentarMuster, "") ; ========================================================================= ; 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, "()[^<]*()", "${1}" & $sHeute & "${2}") $sInhalt = StringRegExpReplace($sInhalt, "()", "${1}" & $sZeit & "${2}") $sInhalt = StringRegExpReplace($sInhalt, "()[^<]*()", "${1}AutoIt REB Engine V1.2${2}") $sInhalt = StringRegExpReplace($sInhalt, "()[^<]*()", "${1}AutoIt REB X31 Export${2}") ; ========================================================================= ; SCHRITT 5: PrjInfo anpassen (nur wenn Parameter übergeben) ; ========================================================================= If $sRefPrjName <> "" Then $sInhalt = StringRegExpReplace($sInhalt, "()[^<]*()", "${1}" & $sRefPrjName & "${2}") EndIf If $sRefPrjID <> "" Then $sInhalt = StringRegExpReplace($sInhalt, "()[^<]*()", "${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, "([\s\S]*?)", 1) If Not @error Then Local $sOWNAlt = $aOWN[0] Local $sOWNNeu = StringRegExpReplace($sOWNAlt, "()[^<]*()", "${1}" & $sOwnerName & "${2}") $sInhalt = StringReplace($sInhalt, $sOWNAlt, $sOWNNeu) EndIf EndIf ; ========================================================================= ; SCHRITT 8: CtlgAssignType entfernen ; ========================================================================= $sInhalt = StringRegExpReplace($sInhalt, "\s*", "") $sInhalt = StringRegExpReplace($sInhalt, "\s*[^<]*", "") ; ========================================================================= ; SCHRITT 9: BVBS:Explanation entfernen ; ========================================================================= $sInhalt = StringRegExpReplace($sInhalt, "[^<]*", "") ; ========================================================================= ; SCHRITT 10: Leere Items entfernen (Qty=0.000 ohne Mengennachweis) ; ========================================================================= Local $iMax = 30 While $iMax > 0 Local $sVorher = $sInhalt $sInhalt = StringRegExpReplace($sInhalt, _ "]+>\s*\s*0[,.]000\s*\s*", "") If $sInhalt = $sVorher Then ExitLoop $iMax -= 1 WEnd ; ========================================================================= ; SCHRITT 11: Leere Container bereinigen ; ========================================================================= $iMax = 10 While $iMax > 0 Local $sVorher = $sInhalt $sInhalt = StringRegExpReplace($sInhalt, "\s*", "") $sInhalt = StringRegExpReplace($sInhalt, "\s*", "") $sInhalt = StringRegExpReplace($sInhalt, "]*>\s*", "") 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, "", "" & @CRLF) $sXML = StringReplace($sXML, "", "" & @CRLF) $sXML = StringRegExpReplace($sXML, "(]*>)", "${1}" & @CRLF) $sXML = StringRegExpReplace($sXML, "(]*>)", "${1}" & @CRLF) Local $aClose[5] = ["", "", "", "", ""] For $i = 0 To 4 $sXML = StringReplace($sXML, $aClose[$i], @CRLF & $aClose[$i] & @CRLF) Next $sXML = StringReplace($sXML, "", @CRLF & "" & @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