#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Run_AU3Check=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;*****************************************
;AufmassCreaterV2.au3 by kra88
;Erstellt mit ISN AutoIt Studio v. 1.08
;*****************************************

;Versions Info
Global $VersionBuild = "20260401" ;YEAR|MON|DAY
Global $Studioversion = "v2.36"
Global $ERSTELLUNGSTAG = $Studioversion & " (" & $VersionBuild & ")"


;Includes AutoStandart
#include <GuiListView.au3>
#include <GuiEdit.au3>
#include <GuiComboBox.au3>
#include <GUIConstantsEx.au3>
#include <GuiDateTimePicker.au3>
#include <GuiMonthCal.au3>
#include <File.au3>
#include <Array.au3>
#include <Debug.au3>
#include <Excel.au3>
#include <WinAPISys.au3>
#include <winhttp.au3>
#include <WindowsConstants.au3>
#include <GuiMenu.au3>
#include <ButtonConstants.au3>
#include <GuiTab.au3>
#include <GuiStatusBar.au3>


;include HardwareID
#include <Crypt.au3>
#include <StringConstants.au3>

;Includes Exteren AppFolder
#include "includes\GUIListViewEx-Melba.au3"
#include "includes\ListViewColorsFonts.au3"
#include "includes\LV_Eingabe_func.au3"
#include "includes\EVergabe.au3"
#include "includes\Lizens.au3"
#include "includes\inc_AVRB.au3"
#include "includes\EV-Hilfe.au3"
#include "includes\EVvergabeWebobj.au3"
#include "includes\x31_txt2Dataflor.au3"


#include "includes\Aufmasshelferv2neu.au3"
;AufmaßHelper Includes
#include "includes\aHelper\ahelper_gf.au3"
#include "includes\aHelper\ahelper_FTTH.au3"
#include "includes\aHelper\ahelper_gruben.au3"
#include "includes\aHelper\ahelper_Kabelzug.au3"
#include "includes\aHelper\ahelper_absperrung.au3"
#include "includes\aHelper\ahelper_sasmecka.au3"
#include "includes\aHelper\ahelper_neffachberg.au3"

#include "Forms\GUI_Aufmacreater_BIG.au3"
#include "Forms\GUI_AufmHilfe_BIG.au3"
#include "Forms\GUI_PosFensterBIG_BIG.au3"
#include "Forms\GUI_Grubentool.au3"
#include "Forms\GUI_EVAufm.au3"
#include "Forms\GUI_AVRB.au3"
#include "Forms\GUI_frm_extern_Buttons.au3"
#include "Forms\GUI_EV_Hilfe.au3"

#include "includes\inc_amh.au3"

WinSetTitle($hGui_AufmCreater, "", "Aufmaß Creater: " & $ERSTELLUNGSTAG)
Opt("GUICloseOnESC", 0)

Global $sPfadIni = @ScriptDir & "\daten\conf.ini"
Global $g_bDebug = IniRead(@ScriptDir & "\daten\conf.ini", "Setup", "debug", "False") = "True"
Global $iLV_Aufma_Index = ""
Global $iLV_PosList_Index = ""
Global $sEinheit
Global $idMarkPreis, $idSave
Global $statusBar
Global $g_iIDCnt = 1000000
Global $g_iIdCounter = 1000001

Global $hLV = GUICtrlGetHandle($LV_Aufm)
ListViewColorsFonts_Init($hLV, 7)

Global Enum $idEdit = 1000, $idCopy, $idCalc, $idDel, $idleereZ, $idlvListAktu

GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") ;only used for EN_CHANGE so far
GUIRegisterMsg($WM_SIZE, "WM_SIZE")

; Listview Melba

Global $iLV_Aufma_Index = _GUIListViewEx_Init($LV_Aufm, "", 0, 0xFF0000, True, 2)
Global $iLV_PosList_Index = _GUIListViewEx_Init($lve_tab_lv_posliste, "", 0, 0, False, 1 + 512)

_GUIListViewEx_MsgRegister()

Global $iEditMode = 1
Global $sPfad_Conf = @ScriptDir & "\daten\conf.ini"
Global $sPfad_Conf_GP = @ScriptDir & "\daten\gp.ini"
HotKeySet("{F7}", "_search_posList")
HotKeySet("{F5}", "_klick_ListAktu")

_Lizens_GET_UserID()

_formload()

GUISetState(@SW_SHOW, $hGui_AufmCreater)

Local $aMsg
Global $aLVListe[1][13]

Global $tab1_bt_add, $tab1_bt_zurucksetz
Global $tab2_bt_add, $tab2_bt_zurucksetz
Global $tab7_bt_add, $tab7_bt_zuru, $tab7_bt_import_csv
Global $tab4_bt_lv_clear, $tab4_bt_adSplei, $tab4_bt_hinzuf, $tab4_bt_zurucksetz
Global $tab6_bt_add, $tab6_bt_zuruck
Global $tab_ab_bt_aktu, $tab_ab_bt_add_Pos
Global $tab1_txt_leange = ""
Global $iFolderCreate = IniRead(@ScriptDir & "\daten\conf.ini", "Setup", "createFolder", "NA")

If IniRead(@ScriptDir & "\daten\conf.ini", "Setup", "textedit", "False") = "True" Then
	GUICtrlSetState($chb_text_edit, $GUI_CHECKED)
Else
	GUICtrlSetState($chb_text_edit, $GUI_UNCHECKED)
EndIf
If IniRead(@ScriptDir & "\daten\conf.ini", "Setup", "lastcell", "False") = "True" Then
	GUICtrlSetState($chb_letzteZeile, $GUI_CHECKED)
Else
	GUICtrlSetState($chb_letzteZeile, $GUI_UNCHECKED)
EndIf


While 1
	$nMsg = GUIGetMsg(1)
	Switch $nMsg[1]
		Case $hGui_AufmCreater
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE
					_WinAPI_DestroyIcon($hIcon)
					Exit
					;Gui Menü Datei
				Case $mDatei_Exit
					Exit
				Case $mDatei_listaktu
					_klick_ListAktu()
				Case $mDatei_listimport
					_klick_Listimport()
				Case $mDatei_Listdelete
					_klick_ListDelete()
				Case $mDatei_exportExel
					_Export_Optionen()
				Case $mDatei_openOrdner
					ShellExecute(@ScriptDir & "\_Aufmaße")

					$aVertragsPos = _read_VertragsPositionen2Array()
;~ 					_grabenbreite($aVertragsPos) +


					; GUI Menu Einstellungen
				Case $mEinFenstPosBigEin
					_ShowGui_PosFensterBig()
				Case $mEinFenstPosBigAus
					GUISetState(@SW_HIDE, $frm_PosBig)
				Case $nEinEVergabe
					MsgBox(64, "", "")
				Case $mShow_Extern_Buttons
					_ShowGui_Extern_Buttons()
					;Gui Tools
				Case $mAufmh
					_ShowGui_Aufmhilfe()
				Case $mDatei_Listsave
					_LV_LVAufMa_save2temp()
					_LV_LVAufMa_save2txt()
				Case $mtgruben
					_ShowGui_Grubentool()
				Case $mtEVaufm
					_ShowGui_EVAufm()

				Case $mtAVRB
					_ShowGui_AVRB()

				Case $mtEVH
					_ShowGui_Extern_EVH()


					; Gui Sonstige Buttons
				Case $bt_lveingabe_open_folder
					ShellExecute(@ScriptDir & "\_Aufmaße")
				Case $bt_lveingabe_listimport
					_klick_Listimport()
					_klick_ListAktu()
				Case $bt_lveingabe_liste_aktu

					_klick_ListAktu()
					_LV_Farben()
		
				Case $bt_LVEingabe_Listedelete
					_klick_ListDelete()
				Case $bt_lveingabe_exportexcel
					_Export_Optionen()
				Case $bt_in_EV
;~ 					_start_Evergabe_Neu()
					$aInhalt = _GUIListViewEx_ReadToArray($LV_Aufm, 1)
					If IsArray($aInhalt) Then

						If GUICtrlRead($kopf_TAB_txt_detailsID) = "" Then
							; Positionen nach SM Eintragen
							_EV_Pos_eintragen_obj($aInhalt)
						Else
							; Positionen nach DetailsID eintragen
;~ 							_EV_Pos_eintragen_Bestellung($aInhalt)
						EndIf

					Else
						_Write_to_Console("AufmaßListe ist leer")
					EndIf

				Case $bt_lveingabe_listsave
					_LV_LVAufMa_save2temp()
					_LV_LVAufMa_save2txt()
				Case $bt_LVEingabe_markdelete
					_LV_LVAufMa_save2temp()
					_GUIListViewEx_DeleteSpec($iLV_Aufma_Index)
					_LV_LVAufMa_save2temp()

					;Gui Tab LV-Eingabe
				Case $lve_tab_bt_suche
					_search_posList()
				Case $lve_tab_bt_vertrag_laden
					_GUIListViewEx_Close($iLV_PosList_Index)
					_Load_LV_From_Chb()
				Case $lve_tab_bt_leerezeile
					_LV_LVAufMa_save2temp()
					_LV_LVaufMa_add_empty_zeile()
				Case $lve_tab_bt_hinzupos
					
					_LV_LVaufMa_add_Zeile()
					_LV_LVAufMa_save2temp()
					
;~ 					MsgBox(64, "",  _GUIListViewEx_GetActive())
					GUICtrlSetState($LVE_TAB_LV_PosListe, $GUI_FOCUS)
				Case $bt_lveingabe_markcopy
					_LV_LVAufMA_mark_copy()
					_LV_LVAufMa_save2temp()

				Case $LVE_TAB_bt_gpsuche
					_GroupSearch()
				Case $Label_SM
					ClipPut(GUICtrlRead($kopf_TAB_txt_smnr))
					GUICtrlSetData($txt_sm_EVH, GUICtrlRead($kopf_TAB_txt_smnr))


				Case $chb_text_edit
					If GUICtrlRead($chb_text_edit) = $GUI_CHECKED Then
						_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;1;2;3;4;5;6;9;11")
					Else
						_chb_bemerkung_from_ini()
						_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;1:2;3;4;5;6;11")
						_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, 9, 2, $cDatab, True)
					EndIf
				Case $frm_extern_chb_txtedit
					If GUICtrlRead($chb_letztezeile) = $GUI_CHECKED Then
						IniWrite($sPfadIni, "Setup", "addmarkpos", "False")

					Else
						IniWrite($sPfadIni, "Setup", "addmarkpos", "True")

					EndIf


					;Gui Tab Kopfdaten
				Case $kopf_TAB_bt_holedaten
					If GUICtrlRead($kopf_tab_txt_smnr) = "" Then
						_Write_to_Console("Feld SM-Nr darf nicht leer sein!")
						MsgBox(64, "Fehler SMnr", "Feld SM-Nr darf nicht leer sein!")
					Else
						_EV_Hole_Kopfdaten_obj()
					EndIf
				Case $lve_tab_bt_vertrag_laden
					_GUIListViewEx_Close($iLV_PosList_Index)
					_Load_LV_From_Chb()
				Case $kopf_tab_bt_laden
					_kopf_load_from_ini()
					$sKopf = GUICtrlRead($kopf_tab_chb_vertrag)
					_GUICtrlComboBox_SelectString($lve_tab_chb_vertrag, StringReplace($sKopf, "Vertrag=", ""))
					_GUIListViewEx_Close($iLV_PosList_Index)
					_Load_LV_From_Chb()
				Case $kopf_tab_datumfeld_start
					GUICtrlSetData($kopf_tab_datum_start, GUICtrlRead($kopf_tab_datumfeld_start))

				Case $kopf_tab_datumfeld_ende
					GUICtrlSetData($kopf_tab_txt_datum_ende, GUICtrlRead($kopf_tab_datumfeld_ende))

				Case $kopf_tab_bt_heute
					GUICtrlSetData($kopf_tab_txt_datum, @MDAY & "." & @MON & "." & @YEAR)

				Case $kopf_TAB_bt_speichern
					_kopf_save_2_ini()
				Case $kopf_tab_bt_laden
					_kopf_load_from_ini()
				Case $kopf_TAB_bt_open_Evergabe
					ShellExecute("https://www.evergabe.telekom.de/sheet/index?c=1&importId=" & GUICtrlRead($kopf_TAB_txt_detailsID) & "&c=1")
				Case $kopf_TAB_bt_feldzuruck
					_felder_Kopfdaten_zurucksetzen()

				Case $kopf_TAB_bt_change_Vertrag
					_LV_Change_VertragsDaten()

				Case $kopf_TAB_bt_clearLite
					GUICtrlSetData($kopf_TAB_txt_abrufnr, "")
					GUICtrlSetData($kopf_tab_txt_smnr, "")
					GUICtrlSetData($kopf_TAB_txt_detailsID, "")
			EndSwitch

			;############### Gui Aufmaßhilfe
		Case $hGui_AufmH
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE
					GUISetState(@SW_HIDE, $hGui_AufmH)
				Case $frmdatei_exit
					GUISetState(@SW_HIDE, $hGui_AufmH)
				Case $frmdatei_zu_alle
					_felder_tab1_zurucksetzen()
					_felder_tab2_zurucksetzen()
					_felder_tab4_zurucksetzen()
					_felder_tab6_zurucksetzen()
					_felder_tab7_zurucksetzen()
				Case $tab1_bt_add
					_add_Graben()
;~ 					_ReadInputs2Array_graben()
				Case $tab2_bt_add
					_add_Gruben()
				Case $tab1_bt_zurucksetz
					_felder_tab1_zurucksetzen()
				Case $tab2_bt_zurucksetz
					_felder_tab2_zurucksetzen()
				Case $tab4_bt_zurucksetz
					_felder_tab4_zurucksetzen()
				Case $tab7_bt_zuru
					_felder_tab7_zurucksetzen()
				Case $tab6_bt_zuruck
					_felder_tab6_zurucksetzen()
				Case $tab4_bt_hinzuf
					_add_GF_Montage()
				Case $tab6_bt_add
					_add_Kabelzug()
				Case $tab7_bt_import_csv
					_Aufmass_Bestuckungsplan()
				Case $tab7_bt_add
					_add_ftth()
				Case $tab4_bt_adSplei
;~ 					_GUICtrlListView_AddArray($tab4_lv_verb, $aItems)
					_add_spleiss_LV()
				Case $tab4_bt_lv_clear
					_GUICtrlListView_DeleteAllItems($tab4_lv_verb)
				Case $frm_aufmh_emptyRow
					_LV_LVAufMa_save2temp()
					_LV_LVaufMa_add_empty_zeile()
				Case $tab_ab_bt_aktu
					_absperrungsPosAktu()
				Case $tab_ab_bt_add_Pos
					_add_Absperrung()
				Case $tab_sto_bt_hinzu
					_add_STO_Pos()
				Case $tab_tvum_bt_add
					_add_TVUM_Pos()
				Case $tab_plan_bt_add
					_add_Plan_Pos()

				Case $tab_zw_rv_bt_add
					_add_zw_rv_Pos()
				Case $tab_zw_rv_bt_import
					_ProcessDataFromFile()
;~ 					_ZW_RV_HS_CSV_Import()
				Case $tab_zw_rv_bt_zuruck
					_clear_zw_rv_gui()
				Case $tab_sto_sam_bt_add
					_STOE_Sammler_AddPositionen()
				Case $tab_sas_bt_ha_add
					_add_Mecka_HA()
				Case $tab_sas_bt_tb_add
					_add_Mecka_TB()

				Case $tab_sas_bt_ha_feldback
					_feld_back_ha()
				Case $tab_sas_bt_tb_feldback
					_feld_back_tb()

				Case $tab_neff_ach_bt_add_pos
					_add_nett_achberg_HA()
				Case $tab_neff_ach_bt_feld_delete
					_feld_back_neff_HA()

				Case $tab_neff_ach_tb_bt_add_pos
					_add_nett_achberg_TB()
				Case $tab_neff_ach_tb_bt_feld_delete
					_feld_back_neff_TB()
			EndSwitch

		Case $frm_PosBig
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE
					GUISetState(@SW_HIDE, $frm_PosBig)
				Case $frm_PosBig_bt_save
;~ 					MsgBox(64, "test", "asdfadf")
					_txt_save_Langtext()
				Case $frm_PosBig_bt_c_posnr
;~ 					MsgBox(64, "test", "Posnr")
					ClipPut(GUICtrlRead($frm_posfenst_posnr))
				Case $frm_PosBig_bt_c_kurztext
;~ 					MsgBox(64, "test", "kurztext")
					ClipPut(GUICtrlRead($frm_posfenst_ltex))
				Case $frm_PosBig_bt_c_langtext
;~ 					MsgBox(64, "test", "langtext")
					ClipPut(GUICtrlRead($frm_posfenst_ltext))
			EndSwitch

		Case $formGT
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE
					GUISetState(@SW_HIDE, $formGT)
				Case $bt_gf_rechne
					_berechneFaktor()
				Case $bt_gt_leeren
					GUICtrlSetData($ed_gf_ausgabe, "")
			EndSwitch

		Case $frm_ev_aufm
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE
					GUISetState(@SW_HIDE, $frm_ev_aufm)
				Case $frm_evaufm_bt_get_aufm
					_EV_GET_AufmPositioinen()
				Case $frm_evaufm_bt_lv_loeschen

					If MsgBox(3, "Liste Löschen???", "Wollen Sie die Liste wirklich löschen?") = 6 Then
						_GUICtrlListView_DeleteAllItems($frm_lv_evaufm)

					EndIf

				Case $frm_evaufm_bt_lvAktu
					_ListviewAutoWidthHeader($frm_lv_evaufm)
					_Summe_Aktuallisieren_EVAufm()
				Case $frm_evaufm_bt_export_excel
					_EVAufmLV_Export_Exel()
				Case $frm_evaufm_bt_mark_einf
					_EVAufmLV_mark_copi()
				Case $frm_evaufm_bt_import_txt
					_EVAufmLV_import_txt()

			EndSwitch

		Case $frm_Main_AVRB
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE
					GUISetState(@SW_HIDE, $frm_Main_AVRB)
					;Tab Lokal
				Case $bt_tab_lokal_load
					$sPfad_NC_L_Auftrage = GUICtrlRead($txt_pfad_Lokal)
					_GUICtrlListView_DeleteAllItems($lv_AVRB_lokal)
					_Load_LV_Pfad_txt($lv_AVRB_lokal, $sPfad_NC_L_Auftrage)
					$iSum1 = _PriceRound(_Summe_LV_Liste($lv_AVRB_lokal))
					GUICtrlSetData($lbl_tab_NC_L_summe, _StringAddThousandsSepEx($iSum1) & " €")
				Case $bt_tab_NC_L_add
					_klick_Import_from_Liste($lv_AVRB_lokal)
				Case $bt_tab_lokal_suche
					$sSuche = GUICtrlRead($txt_tab_lokal_suche)
					_SearchLV_Liste($lv_AVRB_lokal, $sSuche)

					; Tab Robert
				Case $bt_tab_NC_R_load
					$sPfad_NC_R_Auftrage = GUICtrlRead($txt_pfad_NC_R)
					_GUICtrlListView_DeleteAllItems($lv_AVRB_NC_R)
					_Load_LV_Pfad_txt($lv_AVRB_NC_R, $sPfad_NC_R_Auftrage)

					$iSum1 = _PriceRound(_Summe_LV_Liste($lv_AVRB_NC_R))
					GUICtrlSetData($lbl_tab_NC_R_summe, _StringAddThousandsSepEx($iSum1) & " €")
				Case $bt_tab_NC_R_add
					_klick_Import_from_Liste($lv_AVRB_NC_R)

				Case $bt_tab_NC_R_suche
					$sSuche = GUICtrlRead($txt_tab_NC_R_suche)
					_SearchLV_Liste($lv_AVRB_NC_R, $sSuche)

					; Tab Server in E-Vergabe
				Case $bt_tab_NC_E_load
					$sPfad_NC_EV_Auftrage = GUICtrlRead($txt_pfad_NC_E)
					_GUICtrlListView_DeleteAllItems($lv_AVRB_NC_E)
					_Load_LV_Pfad_txt($lv_AVRB_NC_E, $sPfad_NC_EV_Auftrage)

					$iSum1 = _PriceRound(_Summe_LV_Liste($lv_AVRB_NC_E))
					GUICtrlSetData($lbl_tab_NC_E_summe, _StringAddThousandsSepEx($iSum1) & " €")
				Case $bt_tab_NC_E_add
					_klick_Import_from_Liste($lv_AVRB_NC_E)

				Case $bt_tab_NC_E_suche
					$sSuche = GUICtrlRead($txt_tab_NC_E_suche)
					_SearchLV_Liste($lv_AVRB_NC_E, $sSuche)

					; Tab Server Freigegeben
				Case $bt_tab_NC_F_load
					$sPfad_NC_F_Auftrage = GUICtrlRead($txt_pfad_NC_F)
					_GUICtrlListView_DeleteAllItems($lv_AVRB_NC_F)
					_Load_LV_Pfad_txt($lv_AVRB_NC_F, $sPfad_NC_F_Auftrage)
					$iSum1 = _PriceRound(_Summe_LV_Liste($lv_AVRB_NC_F))
					GUICtrlSetData($lbl_tab_NC_F_summe, _StringAddThousandsSepEx($iSum1) & " €")
				Case $bt_tab_NC_F_add
					_klick_Import_from_Liste($lv_AVRB_NC_F)

				Case $bt_tab_local_massEVImport
					_MassImportEV()
				Case $bt_tab_NC_F_suche
					$sSuche = GUICtrlRead($lv_AVRB_NC_F)
					_SearchLV_Liste($lv_AVRB_NC_F, $sSuche)

				Case $bt_tab_Ein_load
					_load_PFade_from_ini()

				Case $bt_tab_Ein_save
					_Save_Pfade_to_ini()

				Case $AVRB_bt_lv_delete
					_klick_ListDelete()
			EndSwitch
		Case $frm_extern_buttons
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE
					GUISetState(@SW_HIDE, $frm_extern_buttons)
				Case $frm_extern_bt_lv_import
					_klick_Listimport()
					_klick_ListAktu()
				Case $frm_extern_bt_export_Excel
					_klick_exportCSV()
					_LV_LVAufMa_export2Excel()
				Case $frm_extern_bt_open_ordner
					ShellExecute(@ScriptDir & "\_Aufmaße")
				Case $frm_extern_bt_lv_save
					_LV_LVAufMa_save2temp()
					_LV_LVAufMa_save2txt()
				Case $frm_extern_bt_mark_copy
					_LV_LVAufMA_mark_copy()
					_LV_LVAufMa_save2temp()
				Case $frm_extern_bt_mark_delete
					_LV_LVAufMa_save2temp()
					_GUIListViewEx_DeleteSpec($iLV_Aufma_Index)
					_LV_LVAufMa_save2temp()
				Case $frm_extern_bt_lv_akt
					_klick_ListAktu()
				Case $frm_extern_bt_inEV
					_start_Evergabe_Neu()
				Case $frm_extern_bt_lv_delete
					_klick_ListDelete()
			EndSwitch
		Case $frm_Main_EVH
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE
					GUISetState(@SW_HIDE, $frm_Main_EVH)
				Case $bt_sm_copy_EVH
					ClipPut(GUICtrlRead($txt_sm_EVH))
				Case $bt_beleg_copy_EVH
					ClipPut(GUICtrlRead($txt_beleg_EVH))
				Case $bt_beleg_ein_copy_EVH
					ClipPut(GUICtrlRead($txt_beleg_eingang_EVH))
				Case $bt_ausfu_copy_EVH
					ClipPut(GUICtrlRead($txt_ausfuehrungsfrist_EVH))
				Case $bt_ausgabe01_copy_EVH
					ClipPut(GUICtrlRead($txt_ausgabe01_EVH))
				Case $bt_ausgabe02_copy_EVH
					ClipPut(GUICtrlRead($txt_ausgabe02_EVH))
				Case $bt_ppreis_copy_EVH
					ClipPut(GUICtrlRead($bt_ppreis_copy_EVH))
				Case $bt_start_EVH
					_EVH_start()
					_EVH_open_NC()
					_EVH_ausgabe1()
					_EVH_ausgabe2()
					_Write_to_Console_EVH("Fertig!")
				Case $bt_NC_open_EVH
					_EVH_open_NC()
				Case $bt_abruf_details_open_EVH
					ShellExecute(GUICtrlRead($txt_abruf_details_ev_EVH))
				Case $bt_leistugnserfassung_open_EVH
					ShellExecute(GUICtrlRead($txt_Leistungserfassung_EVH))
				Case $bt_lv_geab_open_EVH
					ShellExecute(GUICtrlRead($txt_lv_geab_EVH))
				Case $bt_rv_copy_EVH
					ClipPut(GUICtrlRead($txt_rv_EVH))
				Case $bt_nc_ordner_copy_EVH
					ClipPut(GUICtrlRead($txt_nc_ordner_EVH))
				Case $bt_copy_ncpfad_EVH
					ClipPut(GUICtrlRead($txt_ncpfad_EVH))
				Case $bt_ort_copy_EFH
					ClipPut(GUICtrlRead($txt_ort_EVH))
				Case $bt_strasse_copy_EVH
					ClipPut(GUICtrlRead($txt_strasse_EVH))
				Case $bt_hsnr_copy_EVH
					ClipPut(GUICtrlRead($txt_hsnr_EVH))
			EndSwitch
	EndSwitch

	$state = WinGetState($frm_extern_buttons, "")
	; Is the "minimized" value set?
	If BitAND($state, 2) Then
		If GUICtrlRead($frm_extern_chb_txtedit) = $GUI_CHECKED Then
			_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;1;2;3;4;5;6;9;11")
		Else
			_chb_bemerkung_from_ini()
			_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, "0;1:2;3;4;5;6;11")
			_GUIListViewEx_SetEditStatus($iLV_Aufma_Index, 9, 2, $cDatab, True)
		EndIf
		If GUICtrlRead($frm_extern_chb_lastrow) = $GUI_CHECKED Then
			IniWrite($sPfadIni, "Setup", "addmarkpos", "False")

		Else
			IniWrite($sPfadIni, "Setup", "addmarkpos", "True")

		EndIf
	EndIf

	Global $vRet = _GUIListViewEx_EventMonitor($iEditMode)
	If @error Then
		If @error = 3 Then
;~ ;_ArrayDisplay($vRet)
;~ ;MsgBox($MB_SYSTEMMODAL, "Fehler", "Spalteninhalt kann nicht verändert werden!" & @CRLF & $vRet)
		Else
			;MsgBox($MB_SYSTEMMODAL, "Error", "Event error: " & @error)
		EndIf

	EndIf
	Switch @extended
		Case 0
			; No event detected
		Case 1
			If $vRet = "" Then
				MsgBox($MB_SYSTEMMODAL, "Ändern abgebrochen", "Die Änderung wurde nicht übernommen" & @CRLF)
				$stest1234 = "False"
			Else
;~ ;_ArrayDisplay($vRet, "ListView " & _GUIListViewEx_GetActive() & " content edited", Default, 8)
				$stest1234 = "False"
			EndIf
		Case 2
			If $vRet = "" Then
				MsgBox($MB_SYSTEMMODAL, "Header edit", "Header edit aborted" & @CRLF)
			Else
				_ArrayDisplay($vRet, "ListView " & _GUIListViewEx_GetActive() & " header edited", Default, 8)
			EndIf
		Case 3
;~ ;MsgBox($MB_SYSTEMMODAL, "Sorted", "ListView: " & $vRet & @CRLF)
			GUICtrlSetData($lbl_status, "PositionsListe wurde sortiert...")
		Case 4
;~ ;Local $aRet = StringSplit($vRet, ":")
;~ ;MsgBox($MB_SYSTEMMODAL, "Dragged", "From ListView " & $aRet[1] & @CRLF & "To ListView " & $aRet[2])
		Case 9
;~ ;_DebugArrayDisplay($vRet)
;~ ;_GUIListViewEx_SetActive($iLV_PosList_Index)
			;_GUIListViewEx_EventMonitor ziemlich unten auf Komentar achten

	EndSwitch
WEnd

Func _chb_group_from_ini()
	_GUICtrlComboBox_ResetContent($LVE_TAB_LV_txt_gpsuche)
	
	$sData = FileRead($sPfad_Conf) ;Datei einlesen
	$hFile = FileOpen($sPfad_Conf, $FO_OVERWRITE + $FO_UNICODE) ;im richtigen Format ein Handle zum schreiben eröffnen
	FileWrite($hFile, $sData) ;in Datei schreiben
	FileClose($hFile) ;Handle schliessen

	Local $aKV = IniReadSection($sPfad_Conf, "Groups")
	_ArrayDelete($aKV, 0)
	_ArraySort($aKV)
;~ 	_ArrayDisplay($aKV)

	For $i = 0 To UBound($aKV) - 1
		_GUICtrlComboBox_AddString($LVE_TAB_LV_txt_gpsuche, $aKV[$i][1])
	Next
EndFunc   ;==>_chb_group_from_ini

Func _chb_templateExport_from_ini()
	_GUICtrlComboBox_ResetContent($kopf_TAB_chb_exportvorl)

	$sData = FileRead($sPfad_Conf) ;Datei einlesen
	$hFile = FileOpen($sPfad_Conf, $FO_OVERWRITE + $FO_UNICODE) ;im richtigen Format ein Handle zum schreiben eröffnen
	FileWrite($hFile, $sData) ;in Datei schreiben
	FileClose($hFile) ;Handle schliessen

	Local $aKV = IniReadSection($sPfad_Conf, "Template")
	_ArrayDelete($aKV, 0)
;~ 	_ArraySort($aKV)
;~ 	_ArrayDisplay($aKV)

	For $i = 0 To UBound($aKV) - 1
		_GUICtrlComboBox_AddString($kopf_TAB_chb_exportvorl, $aKV[$i][0])
	Next
EndFunc   ;==>_chb_templateExport_from_ini

Func _GroupSearch()
	$sText = GUICtrlRead($LVE_TAB_LV_txt_gpsuche)

	If $sText = "" Then
		_LV_load_from_txt()
	Else
		Local $aKV = IniReadSection($sPfad_Conf_GP, $sText)
		_ArrayDelete($aKV, 0)
;~ 		_ArraySort($aKV)
;~ 		_ArrayDisplay($aKV)
		Dim $aArrayLV[1][4]
		For $i = 0 To UBound($aKV) - 1
			$sTemp = StringSplit($aKV[$i][0], "|")
;~ 			_DebugArrayDisplay($sTemp)
			If IsArray($sTemp) Then
				_ArrayAdd($aArrayLV, $sTemp[1] & "|" & $sTemp[2] & "|" & $sTemp[3] & "|" & $sTemp[4])
			EndIf
		Next
		_GUICtrlListView_DeleteAllItems($LVE_TAB_LV_PosListe)
		_GUIListViewEx_Close($LVE_TAB_LV_PosListe)
		_ArrayDelete($aArrayLV, 0)
		_GUICtrlListView_AddArray($LVE_TAB_LV_PosListe, $aArrayLV)
		_ListviewAutoWidthHeader($LVE_TAB_LV_PosListe)
		Global $aArrayRead = _GUIListViewEx_ReadToArray($LVE_TAB_LV_PosListe, 1)
		$iLV_LVE_LV = _GUIListViewEx_Init($LVE_TAB_LV_PosListe, $aArrayRead, 0, 0, True, 1 + 2 + 8)
	EndIf
EndFunc   ;==>_GroupSearch

Func _klick_ListDelete()
	_LV_LVAufMa_clear()
	_GUIListViewEx_ReadToArray($LV_Aufm)
	$iLV_Aufma_Index = _GUIListViewEx_Init($LV_Aufm, "", 0, 0xFF0000, True, 2)
EndFunc   ;==>_klick_ListDelete

Func _klick_ListAktu()
	_ListviewAutoWidthHeader($LV_Aufm)
	_Aufma_Listview_werte_aktu()
	_Check_Positionen_ImVertrag()
	_GUIListViewEx_ReadToArray($LV_Aufm)
	$aitem = _GUIListViewEx_GetLastSelItem()
	$aTempslit = StringSplit($aitem, "|")
	If UBound($aTempslit) > 3 Then
		_GUICtrlListView_ScrollToItem($LV_Aufm, $aTempslit[2])
		_GUICtrlListView_EnsureVisible($LV_Aufm, $aTempslit[2])
	EndIf
EndFunc   ;==>_klick_ListAktu

Func _klick_mark_delete()
	_LV_LVAufMa_save2temp()
	_GUIListViewEx_DeleteSpec($iLV_Aufma_Index)
	_LV_LVAufMa_save2temp()
EndFunc   ;==>_klick_mark_delete

Func _klick_Listimport()
	_GUIListViewEx_Close($iLV_Aufma_Index)
	$iDatei = _LV_LVAaufMa_List_import_from_TXT()
	If $iDatei = "No Datei" Then
	Else
		_GUIListViewEx_Close($iLV_PosList_Index)
		_Load_LV_From_Chb()
		_GUIListViewEx_ReadToArray($LV_Aufm)
		_Aufma_Listview_werte_aktu()
	EndIf
EndFunc   ;==>_klick_Listimport

Func _ConvertGermanDateToISO($sDate)
	; Überprüfen, ob das Eingabeformat korrekt ist (TT.MM.JJJJ)
	If StringRegExp($sDate, "^\d{2}\.\d{2}\.\d{4}$") Then
		; Datum in Teile zerlegen
		Local $aParts = StringSplit($sDate, ".")
		; Teile in umgekehrter Reihenfolge zusammenfügen
		Return $aParts[3] & "-" & $aParts[2] & "-" & $aParts[1]
	Else
		; Fehlermeldung oder leeren String zurückgeben, wenn das Format nicht passt
		Return ""
	EndIf
EndFunc   ;==>_ConvertGermanDateToISO

Func _klick_exportCSV()

	Local $po_number = GUICtrlRead($kopf_TAB_txt_abrufnr)
	Local $po_item = "00010"
	Local $finalMark = "No"
	Local $lzvon = _ConvertGermanDateToISO(GUICtrlRead($kopf_TAB_datum_start))
	Local $lzbis = _ConvertGermanDateToISO(GUICtrlRead($kopf_TAB_txt_datum_ende))
	Local $txz01 = GUICtrlRead($kopf_TAB_txt_bauabschnitt)
	Local $sbnaman = IniRead($sPfadIni, "EVergabe", "Sub", "FK")
	Local $dlort = GUICtrlRead($kopf_TAB_txt_baustelle)

	$sBaustelle = GUICtrlRead($kopf_tab_txt_baustelle)
	$sAbrufNr = GUICtrlRead($kopf_tab_txt_abrufnr)
	$sBauabschnitt = GUICtrlRead($kopf_tab_txt_bauabschnitt)
	$sSMnr = GUICtrlRead($kopf_tab_txt_smnr)

	$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, "__", "_")

	; Längenbegrenzungen anwenden
	$txz01 = StringLeft($txz01, 40)
	$sbnaman = StringLeft($sbnaman, 12)
	$dlort = StringLeft($dlort, 25)

	$aData = ""
;~ 	$aGLVEx_Data[$iLV_Left_Index][19] = 1
	_GUIListViewEx_SetActive($iLV_Aufma_Index)
	$aData = _GUIListViewEx_ReturnArray($iLV_Aufma_Index, 3)
	$S_srvpos = ""
	$S_sectionText = ""
	$S_longText = ""
	$S_menge = ""
	For $i = 0 To UBound($aData) - 1
		If $aData[$i][2] <> "" Then
			$S_srvpos &= $aData[$i][1] & ";"
			$S_sectionText &= $aData[$i][0] & ";"
			$S_longText &= $aData[$i][9] & ";"

			; Anpassung der Zeichenkette für $S_menge ohne Berechnung, nur Ausdruck
			Local $expr = ""
			Switch $aData[$i][7]
				Case "ST"
					$expr = $aData[$i][2] & "*" & $aData[$i][6]
				Case "M"
					$expr = $aData[$i][2] & "*" & $aData[$i][3]
				Case "M2"
					$expr = $aData[$i][2] & "*" & $aData[$i][3] & "*" & $aData[$i][4]
				Case "M3"
					$expr = $aData[$i][2] & "*" & $aData[$i][3] & "*" & $aData[$i][4] & "*" & $aData[$i][5]
			EndSwitch
			$S_menge &= $expr & ";"
		EndIf
	Next
	; Entfernen des letzten Semikolons von jeder Variable, um Übereinstimmung zu gewährleisten
	$S_srvpos = StringTrimRight($S_srvpos, 1)
	$S_sectionText = StringTrimRight($S_sectionText, 1)
	$S_longText = StringTrimRight($S_longText, 1)
	$S_menge = StringTrimRight($S_menge, 1)

	; Ausgabe generieren
	$sFirst = "po_number;po_item;finalMark;lzvon;lzbis;txz01;sbnaman;dlort;srvpos;menge;longText;sectionText"
	$dataLine = $po_number & ";" & $po_item & ";" & $finalMark & ";" & $lzvon & ";" & $lzbis & ";" & _
			$txz01 & ";" & $sbnaman & ";" & $dlort & ';"' & $S_srvpos & '";"' & $S_menge & '";"' & _
			$S_longText & '";"' & $S_sectionText

	; Ausgabe in Konsole
	_DebugLog($sFirst & @CRLF & $dataLine)

	If $iFolderCreate = "True" Then
		DirCreate(@ScriptDir & "\_Aufmaße\" & $sDateiname & "\")
		$sOutputFilePath = @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & ".csv"
	Else
		$sOutputFilePath = @ScriptDir & "\_Aufmaße\" & $sDateiname & ".csv"
	EndIf

	; Ausgabedateipfad definieren


	; Datei im Schreibmodus öffnen, UTF-8 ohne BOM
	$hFile = FileOpen($sOutputFilePath, $FO_OVERWRITE + $FO_UTF8_NOBOM)

	If $hFile = -1 Then
		MsgBox($MB_SYSTEMMODAL, "Fehler", "Konnte die Ausgabedatei nicht öffnen.")
		Exit
	EndIf

	; Kopfzeile und Datenzeile schreiben
	FileWrite($hFile, $sFirst & @CRLF & $dataLine & @CRLF)

	; Datei schließen
	FileClose($hFile)
EndFunc   ;==>_klick_exportCSV

Func _klick_Import_from_Liste($hLV_LV)
	$array = _GUICtrlListView_GetSelectedIndices($hLV_LV, True)
	$spfad = _GUICtrlListView_GetItemText($hLV_LV, Int($array[1]), 2)
	_GUIListViewEx_Close($iLV_Aufma_Index)
	_LV_LVAaufMa_List_import_from_TXT_Pfad($spfad)
	_GUIListViewEx_Close($iLV_PosList_Index)
	_Load_LV_From_Chb()
	_GUIListViewEx_ReadToArray($LV_Aufm)
	_Aufma_Listview_werte_aktu()
EndFunc   ;==>_klick_Import_from_Liste

Func _ShowGui_Aufmhilfe()
	WinActivate($hGui_AufmH)
	GUISetState(@SW_SHOW, $hGui_AufmH)
EndFunc   ;==>_ShowGui_Aufmhilfe

Func _ShowGui_PosFensterBig()
	WinActivate($frm_PosBig)
	GUISetState(@SW_SHOW, $frm_PosBig)
EndFunc   ;==>_ShowGui_PosFensterBig

Func _ShowGui_Grubentool()
	WinActivate($formGT)
	GUISetState(@SW_SHOW, $formGT)
EndFunc   ;==>_ShowGui_Grubentool

Func _ShowGui_EVAufm()
	WinActivate($frm_ev_aufm)
	GUISetState(@SW_SHOW, $frm_ev_aufm)
EndFunc   ;==>_ShowGui_EVAufm

Func _ShowGui_AVRB()
	_load_PFade_from_ini()
	WinActivate($frm_Main_AVRB)
	GUISetState(@SW_SHOW, $frm_Main_AVRB)
EndFunc   ;==>_ShowGui_AVRB

Func _ShowGui_Extern_Buttons()
	WinActivate($frm_extern_buttons)
	GUISetState(@SW_SHOW, $frm_extern_buttons)
EndFunc   ;==>_ShowGui_Extern_Buttons

Func _ShowGui_Extern_EVH()
	WinActivate($frm_Main_EVH)
	GUISetState(@SW_SHOW, $frm_Main_EVH)
EndFunc   ;==>_ShowGui_Extern_EVH

Func _formload()
	_chb_bemerkung_from_ini()
	_chb_vertragsnr_from_ini()
	_chb_group_from_ini()

	_chb_templateExport_from_ini()

	$hiDate_start = GUICtrlGetHandle($kopf_tab_datumfeld_start)
	$hiDate_ende = GUICtrlGetHandle($kopf_tab_datumfeld_ende)
	_GUICtrlDTP_SetFormat($hiDate_start, "dd.MM.yyyy")
	_GUICtrlDTP_SetFormat($hiDate_ende, "dd.MM.yyyy")

	_formload_Aufmh()
	_GUICtrlCreateStatusBar($hGui_AufmCreater, 260)

	_Rules()
	
	;Template Ini wenn eins vorhanden direkt laden
	Local $aKV = IniReadSection($sPfad_Conf, "Template")
	_ArrayDelete($aKV, 0)
;~ 	_ArraySort($aKV)
;~ 	_ArrayDisplay($aKV)
	
	If UBound($aKV) = 1 Then 
;~ 		_GUICtrlComboBox_AddString($kopf_TAB_chb_exportvorl, $aKV[0][0])
		_GUICtrlComboBox_SetCurSel ($kopf_TAB_chb_exportvorl,0)
	Else 
		_GUICtrlComboBox_SetCurSel ($kopf_TAB_chb_exportvorl,0)
	EndIf
	
	GUICtrlSetImage($bt_LVEingabe_open_folder, @ScriptDir & "\daten\ico\29_House.ico")
	GUICtrlSetImage($LVE_TAB_bt_suche, @ScriptDir & "\daten\ico\search.ico")
	GUICtrlSetImage($LVE_TAB_bt_hinzuPos, @ScriptDir & "\daten\ico\add.ico")
	GUICtrlSetImage($LVE_TAB_bt_leereZeile, @ScriptDir & "\daten\ico\leer.ico")
	GUICtrlSetImage($bt_lveingabe_exportexcel, @ScriptDir & "\daten\ico\table.ico")

	GUICtrlSetImage($bt_LVEingabe_ListSave, @ScriptDir & "\daten\ico\04_Save.ico")
	GUICtrlSetImage($bt_LVEingabe_markcopy, @ScriptDir & "\daten\ico\16_Copy.ico")
	GUICtrlSetImage($bt_LVEingabe_liste_aktu, @ScriptDir & "\daten\ico\sync.ico")
	GUICtrlSetImage($bt_LVEingabe_Listedelete, @ScriptDir & "\daten\ico\müll.ico")

	Global $bt_LVEingabe_markdelete

	GUICtrlSetImage($bt_LVEingabe_markdelete, @ScriptDir & "\daten\ico\14_Delete.ico")
	GUICtrlSetImage($bt_in_EV, @ScriptDir & "\daten\ico\magic.ico")
	GUICtrlSetImage($bt_LVEingabe_ListImport, @ScriptDir & "\daten\ico\fold.ico")
	GUICtrlSetImage($kopf_TAB_bt_heute, @ScriptDir & "\daten\ico\date.ico")

EndFunc   ;==>_formload

Func ListView_RClick()
	$hMenu = _GUICtrlMenu_CreatePopup()
	_GUICtrlMenu_AddMenuItem($hMenu, "Mark Pos berechnen", $idCalc)
	_GUICtrlMenu_AddMenuItem($hMenu, "Mark Pos kopieren", $idCopy)
	_GUICtrlMenu_AddMenuItem($hMenu, "leere Zeile hinzufügen", $idleereZ)
	_GUICtrlMenu_AddMenuItem($hMenu, "Liste aktualisieren", $idlvListAktu)
	_GUICtrlMenu_AddMenuItem($hMenu, "")
	_GUICtrlMenu_AddMenuItem($hMenu, "Mark Pos löschen", $idDel)
	; ========================================================================
	; Shows how to capture the context menu selections
	; ========================================================================
	Switch _GUICtrlMenu_TrackPopupMenu($hMenu, $hLV, -1, -1, 1, 1, 2)
		Case $idCalc
			_Calc_Mark_Pos()
		Case $idCopy
			_LV_LVAufMA_mark_copy()
			_LV_LVAufMa_save2temp()
		Case $idDel
			_GUIListViewEx_DeleteSpec($iLV_Aufma_Index)
			_LV_LVAufMa_save2temp()
		Case $idleereZ
			_LV_LVaufMa_add_empty_zeile()
			_LV_LVAufMa_save2temp()
		Case $idlvListAktu
			_klick_ListAktu()

	EndSwitch
	_GUICtrlMenu_DestroyMenu($hMenu)
EndFunc   ;==>ListView_RClick

Func _Calc_Mark_Pos()
	Local $iGesamtsumme
	$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]

		$iMengeHinten = _replaceKom2Punkt($aListAufmass[0][10])
		$iGesamtsumme = $iGesamtsumme + $iMengeHinten * _replaceKom2Punkt($aListAufmass[0][11])
	Next

	$iGesamtsumme = _replacePunkt2Koma($iGesamtsumme) & " €"
	_Write_to_Console("Summe mark. Positionen = " & _replacePunkt2Koma($iGesamtsumme))
	MsgBox(64, "Preis für mark Pos", $iGesamtsumme)
EndFunc   ;==>_Calc_Mark_Pos

Func _testlistclick()
	$sEinklickPostext = IniRead($sPfadIni, "Setup", "Einklickpostext", "")
	If $sEinklickPostext = "True" Then
		;_GUIListViewEx_WM_NOTIFY_Handler in der Funktion udf von Melba
		;kein Arraydisplay verwenden Programm hängt sich dann auf.
		$iLastItem = _GUIListViewEx_GetLastSelItem()
		$aCordList = StringSplit($iLastItem, "|")
		If UBound($aCordList) = 4 Then
			If IsArray($aCordList) Then
				$iZeile = $aCordList[2]
				$iSpalte = $aCordList[1]     ; PositionNr
				$iPosNr = _GUICtrlListView_GetItemText($lv_aufm, Int($iZeile), Int($iSpalte))
				$iKurztext = _GUICtrlListView_GetItemText($lv_aufm, Int($iZeile), 8)

				;Fenster PosBig
				GUICtrlSetData($frm_posfenst_posnr, $iPosNr)
				GUICtrlSetData($frm_posfenst_ltex, $iKurztext)

				_txt_load_Liste_Langtxt($iPosNr)     ;fenster Big in funktion integriert.
			EndIf
		EndIf
	EndIf

EndFunc   ;==>_testlistclick

Func _createtxt($spfad, $stxt)
	Local Const $sFilePath = $spfad

	; Erstellt eine temporäre Datei in die Daten geschrieben werden sollen.

	; Öffnet die Datei zum schreiben (hängt den Text an das Ende der Datei) und speichert das Handle in einer Variable.
	Local $hFileOpen = FileOpen($sFilePath, 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 = StringReplace($stxt, @LF, @CR & @LF)
	; Schreibt durch die Verwendung des von FileOpen zurückgegebenen Handles Daten in die Datei.
	FileWrite($hFileOpen, $stxt)

	; Schließt das Handle welches von FileOpen zurückgegeben wurde.
	FileClose($hFileOpen)

EndFunc   ;==>_createtxt

Func _StringBetween($sString, $sStart, $sEnd, $iMode = $STR_ENDISSTART, $bCase = False)
	; If starting from beginning of string
	$sStart = $sStart ? "\Q" & $sStart & "\E" : "\A"

	; Set mode
	If $iMode <> $STR_ENDNOTSTART Then $iMode = $STR_ENDISSTART

	; If ending at end of string
	If $iMode = $STR_ENDISSTART Then
		; Use lookahead
		$sEnd = $sEnd ? "(?=\Q" & $sEnd & "\E)" : "\z"
	Else
		; Capture end string
		$sEnd = $sEnd ? "\Q" & $sEnd & "\E" : "\z"
	EndIf

	; Set correct case sensitivity
	If $bCase = Default Then
		$bCase = False
	EndIf

	Local $aReturn = StringRegExp($sString, "(?s" & (Not $bCase ? "i" : "") & ")" & $sStart & "(.*?)" & $sEnd, $STR_REGEXPARRAYGLOBALMATCH)
	If @error Then Return SetError(1, 0, 0)
	Return $aReturn
EndFunc   ;==>_StringBetween

Func _DebugLog($s_text)
	If Not $g_bDebug Then Return
	ConsoleWrite("[DEBUG] " & $s_text & @LF)
EndFunc   ;==>_DebugLog

Func _DebugPrint($s_text, $line = @ScriptLineNumber)
	If Not $g_bDebug Then Return
	ConsoleWrite( _
			"!===========================================================" & @LF & _
			"+======================================================" & @LF & _
			"-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
			"+======================================================" & @LF)
EndFunc   ;==>_DebugPrint

Func _berechneFaktor()
	$sLeange = GUICtrlRead($txt_gf_l)
	$sBreite = GUICtrlRead($txt_gf_b)
	$sFaktor = _grubenfaktorrechner($sLeange, $sBreite)
	$sText = "Faktor = " & $sFaktor & " bei Grubenmaß (l x b) " & $sLeange & " x " & $sBreite
	GUICtrlSetData($ed_gf_ausgabe, GUICtrlRead($ed_gf_ausgabe) & @CRLF & $sText)
	_GUICtrlEdit_LineScroll($ed_gf_ausgabe, 0, _GUICtrlEdit_GetLineCount($ed_gf_ausgabe))
EndFunc   ;==>_berechneFaktor

Func _Auftragsliste2Array2EVergabe($sPfad_EV, $sAusgabetxt)
	Dim $aReturn
	Dim $aArray
	$sPfadE_Vergabe = $sPfad_EV
	$aReturn = _FileListToArrayRec($sPfadE_Vergabe, "*.txt", 1, 0, 1)
	For $iix = 1 To UBound($aReturn) - 1
		_FileReadToArray($sPfadE_Vergabe & $aReturn[$iix], $aArray)
		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
		For $ix = 0 To UBound($aListeImport) - 1
			Select
				Case $aListeImport[$ix][7] = "M"
					;ändere meter Zeile 3 mit Menge
					$aListeImport[$ix][6] = $aListeImport[$ix][3]
				Case $aListeImport[$ix][7] = "M2"
					;Länge x Breite = Menge vorne
					$sMengeM2 = _replaceKom2Punkt($aListeImport[$ix][3]) * _replaceKom2Punkt($aListeImport[$ix][4])
					$aListeImport[$ix][6] = _replacePunkt2Koma($sMengeM2)     ;Menge neu Berechnen;
				Case $aListeImport[$ix][7] = "M3"
					;länge x Breite x Tiefe = Menge
					$sMengeM3 = _replaceKom2Punkt($aListeImport[$ix][3]) * _replaceKom2Punkt($aListeImport[$ix][4]) * _replaceKom2Punkt($aListeImport[$ix][5])
					$aListeImport[$ix][6] = _replacePunkt2Koma($sMengeM3)
				Case $aListeImport[$ix][7] = "LE"
;~ 					$aListeImport[$ix][6] = $aListeImport[$ix][3]
				Case $aListeImport[$ix][7] = "ST"
;~ 					$aListeImport[$ix][6] = $aListeImport[$ix][3]
				Case $aListeImport[$ix][7] = "STD"
;~ 					$aListeImport[$ix][6] = $aListeImport[$ix][3]
			EndSelect
			;ändere Menge hinten mit Mengevorne * Faktor
			$ixMengeVorne = _replaceKom2Punkt($aListeImport[$ix][6])
			$ixFakotr = _replaceKom2Punkt($aListeImport[$ix][2])
			$ixMengeHinten = $ixMengeVorne * $ixFakotr
			$aListeImport[$ix][10] = _replacePunkt2Koma($ixMengeHinten)
			;ändere Gesamtpreishinten (MengeHinten*Einzellpreis)
			$ixGesamtsumme = $ixMengeHinten * _replaceKom2Punkt($aListeImport[$ix][11])
			$aListeImport[$ix][12] = _replacePunkt2Koma($ixGesamtsumme)

		Next

		$iSummeset = 0
		For $iii = 0 To UBound($aListeImport) - 1
			; Menge * Faktor = G-Menge
			$sMenge = _replaceKom2Punkt($aListeImport[$iii][6]) * _replaceKom2Punkt($aListeImport[$iii][2])
			$aListeImport[$iii][10] = _replacePunkt2Koma($sMenge)     ; Menge (Menge * Faktor)

			;G-Menge * Einzellspreis = Summe
			$iSumme = _replaceKom2Punkt($aListeImport[$iii][10]) * _replaceKom2Punkt($aListeImport[$iii][11])     ;Menge hinten  * Faktor)
			$aListeImport[$iii][12] = _replacePunkt2Koma($iSumme)

			$iSummeset = _replacePunkt2Koma($iSummeset + $iSumme)
		Next
		_DebugLog($aReturn[$iix] & "|" & $iSummeset)
		FileWrite(@ScriptDir & "\" & $sAusgabetxt, $aReturn[$iix] & "|" & $iSummeset & @CRLF)
	Next

EndFunc   ;==>_Auftragsliste2Array2EVergabe

Func _Rules()

;~ 	$sUserID = _license_userid()
;~ 	$sReturn = _GetServerRules($sUserID)
	;Aufmaßhilfe + Tabs
	If IniRead($sPfadIni, "Rules", "E-Vergabe", "False") = "True" Then
		GUICtrlSetState($bt_in_EV, $GUI_ENABLE)
		GUICtrlSetState($bt_in_EV, $GUI_SHOW)

		; AVRB Massen in EV
		GUICtrlSetState($bt_tab_local_massEVImport, $GUI_ENABLE)
		GUICtrlSetState($bt_tab_local_massEVImport, $GUI_SHOW)
	Else
		GUICtrlSetState($bt_in_EV, $GUI_DISABLE)
		GUICtrlSetState($bt_in_EV, $GUI_HIDE)

		;AVRB Massen in EV
		GUICtrlSetState($bt_tab_local_massEVImport, $GUI_DISABLE)
		GUICtrlSetState($bt_tab_local_massEVImport, $GUI_HIDE)
	EndIf

	If IniRead($sPfadIni, "Rules", "Aufmashilfe", "False") = "True" Then
		GUICtrlSetState($mAufmh, $GUI_ENABLE)
	Else
		GUICtrlSetState($mAufmh, $GUI_DISABLE)
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_Graben", "False") = "True" Then
		_add_Tab_graben()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_Gruben", "False") = "True" Then
		_add_Tab_gruben()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_GF", "False") = "True" Then
		_add_Tab_GF()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_FTTH", "False") = "True" Then
		_add_Tab_FTTH()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_Kabelzug", "False") = "True" Then
		_add_Tab_Kabelzug()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_Absperrung", "False") = "True" Then
		_add_Tab_Absperrung()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_STO", "False") = "True" Then
		_add_Tab_Stoerung()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_TVUM", "False") = "True" Then
		_add_Tab_TVUM()
	EndIf

	If IniRead($sPfadIni, "Rules", "AddTAB_Planung", "False") = "True" Then
		_add_Tab_Planung()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_ZW_RV", "False") = "True" Then
		_add_Tab_ZW_RV()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_Doku", "False") = "True" Then
		_add_Tab_Doku()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_StoSam", "False") = "True" Then
		_add_Tab_sto_sammler()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_SASMeck", "False") = "True" Then
		_add_SAS_Meck()
	EndIf
	If IniRead($sPfadIni, "Rules", "AddTAB_NeffAchberg", "False") = "True" Then
		_add_NEFF_Achberg()
	EndIf


EndFunc   ;==>_Rules

Func _GetServerRules($sUser)
	Global $hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0")

	Global $aHosts[2][2]
	$aHosts[1][0] = "creater.fk-coding.de"
	$aHosts[1][1] = _WinHttpConnect($hSession, $aHosts[1][0])
	Global $sHeader = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & @CRLF & "Accept-Language: de,en-US;q=0.7,en;q=0.3" & @CRLF & "Accept-Encoding: gzip, deflate, br" & @CRLF

	$sLink = IniRead(@ScriptDir & "\daten\conf.ini", "Firma", "Data", "xxx")
	$sUser = IniRead(@ScriptDir & "\daten\conf.ini", "Firma", "User", "xxx")

	$sHTML = _send_Winhttp_GET_low($aHosts[1][1], "/FA/" & $sLink & "/user/" & $sUser & "/" & "Rules.dat", "https://local-Tool/")

	Return $sHTML

EndFunc   ;==>_GetServerRules

Func _add_Tab_graben()

	GUISwitch($hGui_AufmH, $Tab1)

;~ 	Global $hGui_AufmH = GUICreate("Aufmaßhilfe v1", 991, 517, 771, 633, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_TABSTOP))
	Global $frmdatei_zu_akttan = GUICtrlCreateMenuItem("Aktueller Tab", $frmdatei_zu)
	Global $frmdatei_zu_alle = GUICtrlCreateMenuItem("Alle Tabs / Felder", $frmdatei_zu)
	Global $frmdatei_exit = GUICtrlCreateMenuItem("Beenden", $frmdatei)
	Global $Tab1 = GUICtrlCreateTab(8, 32, 969, 449)
	Global $graeben = GUICtrlCreateTabItem("Gräben")
	Global $tab1_gb_ob = GUICtrlCreateGroup("Oberfläche", 8, 250, 425, 209)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab1_chb_wiese = GUICtrlCreateCheckbox("Wiese", 12, 271, 49, 17)
	Global $tab1_chb_kies = GUICtrlCreateCheckbox("Kies", 76, 271, 41, 17)
	Global $tab1_chb_asphalt = GUICtrlCreateCheckbox("Asphalt", 12, 295, 57, 17)
	Global $tab1_chb_pflaster = GUICtrlCreateCheckbox("Pflaster", 76, 295, 57, 17)
	Global $tab1_chb_fels = GUICtrlCreateCheckbox("Fels", 288, 271, 49, 17)
	Global $tab1_chb_winterbau = GUICtrlCreateCheckbox("Winterbau", 352, 271, 73, 17)
	Global $tab1_chb_mosaik = GUICtrlCreateCheckbox("Mosaik", 140, 271, 49, 17)
	Global $tab1_chb_bodentausch = GUICtrlCreateCheckbox("Bodentausch", 200, 271, 85, 17)
	Global $tab1_chb_pflaster_gr = GUICtrlCreateCheckbox("Groß/Natursteinpfl", 140, 295, 129, 17)
	Global $tab1_chb_inBeton = GUICtrlCreateCheckbox("in Beton Pflaster/Moasik", 288, 295, 137, 17)
	Global $Label7 = GUICtrlCreateLabel("Reststreifen: (l x b)", 16, 362, 91, 17)
	Global $Label8 = GUICtrlCreateLabel("länge:", 16, 386, 33, 17)
	Global $Label9 = GUICtrlCreateLabel("breite:", 16, 418, 33, 17)
	Global $tab1_txt_rest_laenge = GUICtrlCreateInput("", 64, 386, 49, 22)
	Global $tab1_txt_rest_breite = GUICtrlCreateInput("", 64, 418, 49, 22)
	Global $Label18 = GUICtrlCreateLabel("Asphaltstärke:", 16, 330, 71, 17)
	Global $tab1_txt_asphaltstark = GUICtrlCreateInput("", 88, 330, 57, 22)
	Global $Label19 = GUICtrlCreateLabel("Anzahl Einzeiler:", 176, 370, 81, 17)
	Global $tab1_txt_anz_einz = GUICtrlCreateInput("", 264, 370, 25, 22)
	Global $tab1_txt_lm_bre = GUICtrlCreateInput("", 176, 394, 25, 22)
	Global $Label = GUICtrlCreateLabel("m Borad/Rinne/Einzeiler", 208, 394, 120, 17)

	Global $tab1_chb_liefern = GUICtrlCreateCheckbox("Bord/Rinne/Einzeiler liefern", 176, 426, 153, 17)
	Global $tab1_chb_bord = GUICtrlCreateCheckbox("Boardstein", 176, 346, 73, 17)
	Global $tab1_chb_kante = GUICtrlCreateCheckbox("Kantenstein", 352, 346, 73, 17)
	Global $tab1_chb_rinne = GUICtrlCreateCheckbox("Einzeiler/Rinne", 256, 346, 89, 17)


	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $tab1_gb_medien = GUICtrlCreateGroup("Medien", 448, 58, 513, 209)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab1_chb_cu_kabel = GUICtrlCreateCheckbox("6-100 DA CU-Kabel", 456, 82, 121, 17)
	Global $tab1_chb_anz_g_100CU = GUICtrlCreateCheckbox("> 100 DA CU-Kabel", 584, 82, 97, 17)
	Global $tab1_txt_anz_cu_kabel = GUICtrlCreateInput("", 696, 82, 41, 22)
	Global $Label10 = GUICtrlCreateLabel("Anzahl Kupfer", 752, 82, 124, 17)
	Global $tab1_chb_dn50 = GUICtrlCreateCheckbox("1xDN 50", 456, 146, 65, 17)
	Global $tab1_txt_anz_dn50 = GUICtrlCreateInput("", 528, 146, 41, 22)
	Global $Label11 = GUICtrlCreateLabel("Anzahl 1xDN 50", 584, 146, 81, 17)
	Global $tab1_chb_snrve7x12 = GUICtrlCreateCheckbox("SNRVe 7x12", 696, 178, 81, 17)
	Global $tab1_txt_anz_snrve712 = GUICtrlCreateInput("", 792, 178, 41, 22)
	Global $tab1_chb_dn110 = GUICtrlCreateCheckbox("DN110", 456, 114, 57, 17)
	Global $tab1_txt_anz_dn110 = GUICtrlCreateInput("", 528, 114, 41, 22)
	Global $Label12 = GUICtrlCreateLabel("Anzahl DN110", 584, 114, 73, 17)
	Global $tab1_chb_snrve22x7 = GUICtrlCreateCheckbox("SNRVe 22x7", 696, 146, 81, 17)
	Global $tab1_txt_anz_snrve22x7 = GUICtrlCreateInput("", 792, 146, 41, 22)
	Global $Label13 = GUICtrlCreateLabel("Anzahl SNRVe 22x7", 848, 146, 101, 17)
	Global $Label14 = GUICtrlCreateLabel("Anzahl SNRVe 7x12", 848, 178, 101, 17)
	Global $tab1_chb_snrve8x7 = GUICtrlCreateCheckbox("SNRVe 8x7", 696, 210, 81, 17)
	Global $tab1_txt_anz_snrve_8x7 = GUICtrlCreateInput("", 792, 210, 41, 22)
	Global $Label15 = GUICtrlCreateLabel("Anazhl SNRVe 8x7", 848, 210, 95, 17)
	Global $tab1_chb_2xdn50 = GUICtrlCreateCheckbox("2xDN50", 456, 178, 65, 17)
	Global $tab1_txt_anz_2xdn50 = GUICtrlCreateInput("", 528, 178, 41, 22)
	Global $Label16 = GUICtrlCreateLabel("Anzahl 2xDN50", 584, 178, 78, 17)
	Global $tab1_chb_3xdn50 = GUICtrlCreateCheckbox("3xDN50", 456, 210, 57, 17)
	Global $tab1_txt_anz_3xdn50 = GUICtrlCreateInput("", 528, 210, 41, 22)
	Global $Label17 = GUICtrlCreateLabel("Anzahl 3xDN50", 584, 210, 78, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $tab1_bt_add = GUICtrlCreateButton("hinzufügen", 448, 330, 123, 41)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab1_bt_zurucksetz = GUICtrlCreateButton("zurücksetzen", 576, 330, 83, 41)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab1_chb_trasseeinmessen = GUICtrlCreateCheckbox("Trasse einmessen", 448, 306, 105, 17)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab1_chb_stahplatte = GUICtrlCreateCheckbox("Stahlplatte", 448, 282, 81, 17)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab1_txt_stahplatteBemerk = GUICtrlCreateInput("", 536, 274, 225, 22)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	$Group1 = GUICtrlCreateGroup("Graben", 12, 53, 425, 193)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	$Label1 = GUICtrlCreateLabel("Abschnitt:", 16, 67, 51, 17)
	Global $tab1_txt_abschnitt = GUICtrlCreateInput("", 18, 87, 401, 22)
	$Label2 = GUICtrlCreateLabel("Länge:", 20, 113, 37, 17)
	$Label3 = GUICtrlCreateLabel("Breite:", 76, 113, 34, 17)
	$Label4 = GUICtrlCreateLabel("Tiefe:", 132, 113, 31, 17)
	Global $tab1_txt_leange = GUICtrlCreateInput("", 20, 137, 33, 22)
	Global $tab1_txt_breite = GUICtrlCreateInput("", 76, 137, 33, 22)
	Global $tab1_txt_tiefe = GUICtrlCreateInput("", 132, 137, 33, 22)
	$Label6 = GUICtrlCreateLabel("Bemerkung:", 20, 185, 61, 17)
	Global $tab1_txt_bemerkung = GUICtrlCreateInput("", 20, 209, 401, 22)
	Global $gp_mindertiefe = GUICtrlCreateGroup("Mindertiefe Breite: 0,15-0,30  |  Tiefe: 0,3-0,45", 180, 113, 241, 65)
	Global $chb_g_mind_L = GUICtrlCreateCheckbox("Längstrasse", 188, 137, 97, 17)
	Global $chb_g_mind_ftth = GUICtrlCreateCheckbox("FTTH Hausanschluss", 188, 153, 137, 17)
	Global $tab1_chb_1x7 = GUICtrlCreateCheckbox("SNRVe 1x7", 696, 240, 89, 17)
	Global $tab1_txt_anz_1x7 = GUICtrlCreateInput("", 792, 240, 41, 21)
	Global $Label72 = GUICtrlCreateLabel("Anzahl SNRVE 1x7", 848, 240, 96, 17)

;~ 	GUISwitch($hGui_AufmCreater)
EndFunc   ;==>_add_Tab_graben

Func _add_Tab_gruben()
	GUISwitch($hGui_AufmH, $Tab1)
	Global $Gruben = GUICtrlCreateTabItem("Gruben")
	Global $Label20 = GUICtrlCreateLabel("Abschnitt:", 24, 72, 51, 17, 0)
	Global $tab2_txt_abschnitt = GUICtrlCreateInput("", 24, 96, 265, 21, $GUI_SS_DEFAULT_INPUT)
	Global $Label21 = GUICtrlCreateLabel("Länge:", 24, 128, 37, 17, 0)
	Global $Label22 = GUICtrlCreateLabel("Breite:", 72, 128, 34, 17, 0)
	Global $Label23 = GUICtrlCreateLabel("Tiefe:", 120, 128, 31, 17, 0)
	Global $tab2_txt_leange = GUICtrlCreateInput("", 24, 152, 33, 21, $GUI_SS_DEFAULT_INPUT)
	Global $tab2_txt_breite = GUICtrlCreateInput("", 72, 152, 33, 21, $GUI_SS_DEFAULT_INPUT)
	Global $tab2_txt_tiefe = GUICtrlCreateInput("", 120, 152, 33, 21, $GUI_SS_DEFAULT_INPUT)
	Global $Label24 = GUICtrlCreateLabel("Bemerkung:", 24, 184, 61, 17, 0)
	Global $tab2_txt_bemerkung = GUICtrlCreateInput("", 24, 208, 249, 21, $GUI_SS_DEFAULT_INPUT)
	Global $Group1 = GUICtrlCreateGroup("Oberfläche", 304, 64, 521, 209)
	Global $tab2_chb_wiese = GUICtrlCreateCheckbox("Wiese", 312, 88, 49, 17)
	Global $tab2_chb_kies = GUICtrlCreateCheckbox("Kies", 375, 88, 49, 17)
	Global $tab2_chb_asphalt = GUICtrlCreateCheckbox("Asphalt", 312, 112, 57, 17)
	Global $tab2_chb_pflaster = GUICtrlCreateCheckbox("Pflaster", 440, 88, 57, 17)
	Global $tab2_chb_mosaik = GUICtrlCreateCheckbox("Mosaik", 375, 112, 49, 17)
	Global $tab2_chb_bodentausch = GUICtrlCreateCheckbox("Bodentausch", 505, 88, 80, 17)
	Global $tab2_chb_fels = GUICtrlCreateCheckbox("Fels", 600, 88, 49, 17)
	Global $tab2_chb_grnaturpfl = GUICtrlCreateCheckbox("Groß/Natursteinplfaster", 440, 112, 137, 17)
	Global $tab2_chb_inBeton = GUICtrlCreateCheckbox("in Beton Pflaster/Moasik", 600, 109, 137, 17)
	Global $tab2_chb_winterbau = GUICtrlCreateCheckbox("Winterbau", 680, 88, 73, 17)
	Global $Label25 = GUICtrlCreateLabel("Reststreifen: (l x b)", 312, 184, 91, 17, 0)
	Global $Label26 = GUICtrlCreateLabel("länge:", 312, 216, 33, 17, 0)
	Global $Label27 = GUICtrlCreateLabel("breite:", 312, 240, 33, 17, 0)
	Global $tab2_txt_rest_laenge = GUICtrlCreateInput("", 360, 208, 49, 21, $GUI_SS_DEFAULT_INPUT)
	Global $tab2_txt_rest_breite = GUICtrlCreateInput("", 360, 240, 49, 21, $GUI_SS_DEFAULT_INPUT)
	Global $Label28 = GUICtrlCreateLabel("Asphaltstärke:", 312, 136, 71, 17, 0)
	Global $tab2_txt_asphaltstark = GUICtrlCreateInput("", 384, 136, 57, 21, $GUI_SS_DEFAULT_INPUT)
	Global $Label29 = GUICtrlCreateLabel("Anzahl Einzeiler:", 472, 168, 81, 17, 0)
	Global $tab2_txt_anz_einz = GUICtrlCreateInput("", 560, 168, 33, 21, $GUI_SS_DEFAULT_INPUT)
	Global $tab2_txt_lm_bre = GUICtrlCreateInput("", 472, 192, 25, 21, $GUI_SS_DEFAULT_INPUT)
	Global $Label30 = GUICtrlCreateLabel("m Borad/Rinne/Einzeiler", 504, 192, 120, 17, 0)
	Global $tab2_chb_liefern = GUICtrlCreateCheckbox("Bord/Rinne/Einzeiler liefern", 472, 216, 153, 17)
	Global $tab2_chb_bord = GUICtrlCreateCheckbox("Boardstein", 472, 144, 73, 17)
	Global $tab2_chb_kante = GUICtrlCreateCheckbox("Kantenstein", 656, 144, 73, 17)
	Global $tab2_chb_rinne = GUICtrlCreateCheckbox("Einzeiler/Rinne", 552, 144, 97, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $tab2_bt_add = GUICtrlCreateButton("hinzufügen", 24, 256, 123, 41)
	Global $tab2_chb_einmessengr = GUICtrlCreateCheckbox("Grube/Muffe einmessen", 304, 280, 137, 17)
	Global $tab2_txt_einmessengr = GUICtrlCreateInput("", 448, 280, 289, 21)
	Global $tab2_bt_zurucksetz = GUICtrlCreateButton("zurücksetzen", 152, 256, 123, 41)
	Global $tab2_chb_kugelmarker = GUICtrlCreateCheckbox("Kugelmarker", 304, 304, 97, 17)
	Global $tab2_chb_Rohrinstand = GUICtrlCreateCheckbox("Punktuelle Rohrinstansetzung", 304, 328, 169, 17)
	Global $Group2 = GUICtrlCreateGroup("Vorlagen Gruben", 16, 352, 321, 145)
	Global $chb_gr_gfm = GUICtrlCreateCheckbox("GF-Muffe", 24, 368, 89, 25)
	Global $chb_gr_mfg12 = GUICtrlCreateCheckbox("MFG 12", 176, 368, 97, 17)
	Global $chb_gr_mfg15 = GUICtrlCreateCheckbox("MFG 15", 176, 384, 97, 17)
	Global $chb_gr_mfg18 = GUICtrlCreateCheckbox("MFG 18", 176, 400, 97, 17)
	Global $chb_gr_enas = GUICtrlCreateCheckbox("ENAS", 176, 416, 97, 17)
EndFunc   ;==>_add_Tab_gruben

Func _add_Tab_GF()
	GUISwitch($hGui_AufmH, $Tab1)
	Global $GFMontage = GUICtrlCreateTabItem("GF-Montage")
	Global $Label62 = GUICtrlCreateLabel("NVT Bezeichnung:", 24, 72, 94, 17)
	Global $tab4_txt_nvtbez = GUICtrlCreateInput("", 136, 72, 121, 21)
	Global $Label31 = GUICtrlCreateLabel("Muffen Bezeichnung:", 24, 96, 105, 17)
	Global $tab4_txt_Muffbz = GUICtrlCreateInput("", 136, 96, 121, 21)
	Global $Label32 = GUICtrlCreateLabel("Anzahl Fasern A1:", 22, 120, 90, 17)
	Global $Label33 = GUICtrlCreateLabel("Anzahl Fasern G1:", 228, 121, 91, 17)
	Global $Label34 = GUICtrlCreateLabel("Anzahl Fasern G2:", 20, 143, 91, 17)
	Global $Label35 = GUICtrlCreateLabel("Anzahl Fasern G3:", 228, 145, 91, 17)
	Global $Label36 = GUICtrlCreateLabel("Anzahl Fasern G4:", 23, 172, 91, 17)
	Global $Label37 = GUICtrlCreateLabel("Anzahl Fasern G5:", 228, 169, 91, 17)
	Global $tab4_txt_AF_A1 = GUICtrlCreateInput("", 122, 120, 57, 21)
	Global $tab4_txt_AF_G1 = GUICtrlCreateInput("", 324, 121, 57, 21)
	Global $tab4_txt_AF_G2 = GUICtrlCreateInput("", 122, 144, 57, 21)
	Global $tab4_txt_AF_G3 = GUICtrlCreateInput("", 324, 145, 57, 21)
	Global $tab4_txt_AF_G4 = GUICtrlCreateInput("", 122, 168, 57, 21)
	Global $tab4_txt_AF_G5 = GUICtrlCreateInput("", 324, 169, 57, 21)
	Global $tab4_bt_hinzuf = GUICtrlCreateButton("hinzufügen", 24, 376, 83, 33)
	Global $tab4_bt_zurucksetz = GUICtrlCreateButton("zurücksetzen", 112, 376, 83, 33)
	Global $tab4_chb_indoor = GUICtrlCreateCheckbox("Indoor", 24, 200, 49, 17)
	Global $tab4_chb_outdoor = GUICtrlCreateCheckbox("Outdoor", 80, 200, 65, 17)
	Global $Label38 = GUICtrlCreateLabel("Anzahl Fasern Verbinden:", 32, 224, 125, 17)
	Global $tab4_txt_anz_Fasern_verb = GUICtrlCreateInput("", 160, 224, 41, 21)
	Global $Label39 = GUICtrlCreateLabel("Anzahl Fasern Messen:", 432, 64, 114, 17)
	Global $tab4_txt_anz_fasern_mess = GUICtrlCreateInput("", 560, 64, 41, 21)
	Global $tab4_chb_A1_neu = GUICtrlCreateCheckbox("neu", 184, 120, 41, 17)
	Global $tab4_chb_G2_neu = GUICtrlCreateCheckbox("neu", 184, 147, 41, 17)
	Global $tab4_chb_G4_neu = GUICtrlCreateCheckbox("neu", 184, 173, 41, 17)
	Global $tab4_chb_G1_neu = GUICtrlCreateCheckbox("neu", 384, 128, 41, 17)
	Global $tab4_chb_G3_neu = GUICtrlCreateCheckbox("neu", 384, 151, 41, 17)
	Global $tab4_chb_G5_neu = GUICtrlCreateCheckbox("neu", 384, 171, 41, 17)
	Global $Label234 = GUICtrlCreateLabel("Anzahl Pigtails Ein. IN:", 432, 96, 110, 17)
	Global $tab4_txt_anz_pig_e_in = GUICtrlCreateInput("", 560, 96, 41, 21)
	Global $Label40 = GUICtrlCreateLabel("Anzahl Pigtails Ein. OUT:", 432, 120, 122, 17)
	Global $tab4_txt_anz_pig_e_out = GUICtrlCreateInput("", 560, 120, 41, 21)
	Global $Label41 = GUICtrlCreateLabel("Anzahl GruppPigtails:", 432, 144, 104, 17)
	Global $tab4_txt_anz_g_pig = GUICtrlCreateInput("", 560, 144, 41, 21)
	Global $tab4_chb_mess_mass = GUICtrlCreateCheckbox("Masse", 616, 64, 57, 17)
	Global $tab4_chb_mess_indi = GUICtrlCreateCheckbox("Individual", 680, 64, 65, 17)
	Global $tab4_chb_mess_gpon = GUICtrlCreateCheckbox("GPON FTTH", 752, 64, 81, 17)
	Global $tab4_chb_s_bau_ein = GUICtrlCreateCheckbox("Spleiß Baugruppe einbauen", 616, 120, 161, 17)
	Global $tab4_chb_p_bau_ein = GUICtrlCreateCheckbox("Patch Baugruppe einbauen", 616, 136, 177, 17)
	Global $tab4_chb_sp_bau_ein = GUICtrlCreateCheckbox("Spleiß / Patch Baugr. einbauen", 616, 152, 177, 17)
	Global $tab4_txt_m_verl = GUICtrlCreateInput("", 616, 192, 41, 21)
	Global $tab4_chb_GFInnen = GUICtrlCreateCheckbox("GF-Innenkabel befestiegen/ einziehen", 664, 184, 201, 17)
	Global $tab4_chb_kanSNr = GUICtrlCreateCheckbox("Install. Kanäle / SNR befestiegen", 664, 200, 185, 17)
	Global $tab4_chb_ausenbe = GUICtrlCreateCheckbox("Außenkabel befestiegen", 664, 216, 193, 17)
	Global $tab4_chb_mess_kontro = GUICtrlCreateCheckbox("Kontrol (FTTH Bayern)", 840, 64, 129, 17)
	Global $tab4_chb_mess_pegel = GUICtrlCreateCheckbox("Pegel (Bayern)", 840, 80, 97, 17)
	Global $tab4_chb_Muffe_neu = GUICtrlCreateCheckbox("neu", 264, 96, 41, 17)
	Global $tab4_chb_MuffeKsch = GUICtrlCreateCheckbox("Muffe im Ksch", 152, 200, 89, 17)
	Global $tab4_lv_verb = GUICtrlCreateListView("Kabel|Spleiß", 248, 200, 114, 150)
	GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
	GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 50)
	Global $tab4_bt_lv_clear = GUICtrlCreateButton("Liste löschen", 272, 352, 75, 25)
	Global $tab4_cb_kabel = GUICtrlCreateCombo("", 32, 272, 49, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
	GUICtrlSetData(-1, "A1|G1|G2|G3|G4|G5")
	Global $labe = GUICtrlCreateLabel("Kabel:", 32, 248, 34, 17)
	Global $Label43 = GUICtrlCreateLabel("Spleiße:", 96, 248, 42, 17)
	Global $tab4_txt_Splei = GUICtrlCreateInput("", 96, 272, 41, 21)
	Global $tab4_bt_adSplei = GUICtrlCreateButton("hinzugügen", 144, 272, 67, 25)
	Global $tab4_chb_gfap = GUICtrlCreateCheckbox("GF-AP befestiegen", 616, 240, 105, 17)
	Global $tab4_chb_gfap_mfg = GUICtrlCreateCheckbox("GF-AP in MFG", 616, 256, 97, 17)


EndFunc   ;==>_add_Tab_GF

Func _add_Tab_CU()
	GUISwitch($hGui_AufmH, $Tab1)

	Global $CUMontage = GUICtrlCreateTabItem("CU-Montage")
	Global $tab5_chb_muffebis10 = GUICtrlCreateCheckbox("Muffe bis 10 DA montieren", 16, 88, 153, 17)
	Global $tab5_chb_aplbis10 = GUICtrlCreateCheckbox("APL bis 10 DA montieren", 16, 104, 145, 17)
	Global $Checkbox1 = GUICtrlCreateCheckbox("Anschluss-/Trennleisten einbauen", 16, 120, 185, 17)
	Global $Label57 = GUICtrlCreateLabel("Anzahl CU-Verbinden:", 16, 152, 108, 17)
	Global $tab5_txt_anz_cuverb = GUICtrlCreateInput("", 128, 152, 57, 21)
	Global $tab5_chb_CuDaVerbGr = GUICtrlCreateCheckbox("CU-DA > 0,8 mm verbinden", 16, 176, 169, 17)
	Global $tab5_chb_CuDaVerbkl = GUICtrlCreateCheckbox("CU-DA < 0,8 mm verbinden", 16, 192, 153, 17)
	Global $tab5_chb_stopfstelle = GUICtrlCreateCheckbox("Druckluftstuzen Stopfstelle einbauen", 16, 224, 193, 17)
	Global $tab5_chb_zulangeStopf = GUICtrlCreateCheckbox("Zulage Stopfstelle DLR", 16, 240, 193, 17)
	Global $tab5_chb_Muffebauen = GUICtrlCreateCheckbox("Schrumpfmuffe herstellen", 16, 264, 193, 17)
	Global $tab5_chb_klemmmuffe = GUICtrlCreateCheckbox("Klemmmuffe herstellen", 16, 280, 137, 17)
	Global $tab5_chb_GelMuffen = GUICtrlCreateCheckbox("Gel-Muffen herstellen", 16, 296, 137, 17)
	Global $tab5_chb_klemmdlr = GUICtrlCreateCheckbox("Klemmmuffen für DLR", 16, 312, 137, 17)
	Global $tab5_chb_EVseinb = GUICtrlCreateCheckbox("EVs einbauen", 272, 112, 97, 17)
	Global $Label58 = GUICtrlCreateLabel("Anzahl:", 272, 88, 39, 17)
	Global $tab5_txt_anzstk = GUICtrlCreateInput("", 312, 88, 57, 21)
	Global $tab5_chb_kanlegen = GUICtrlCreateCheckbox("Kabel anlegen EVs/TrLe", 272, 128, 145, 17)
	Global $Label59 = GUICtrlCreateLabel("Abschnitt:", 16, 72, 51, 17)
	Global $tab5_txt_abschnitt = GUICtrlCreateInput("", 72, 64, 337, 21)
EndFunc   ;==>_add_Tab_CU

Func _add_Tab_Kabelzug()
	GUISwitch($hGui_AufmH, $Tab1)
	Global $Kabelzug = GUICtrlCreateTabItem("Kabelzug")
	Global $Label53 = GUICtrlCreateLabel("Abschnit von:", 24, 64, 69, 17)
	Global $tab6_txt_abschn_von = GUICtrlCreateInput("", 104, 64, 121, 21)
	Global $Label54 = GUICtrlCreateLabel("Abschnitt bis:", 24, 88, 67, 17)
	Global $tab6_txt_abschnitt_bis = GUICtrlCreateInput("", 104, 88, 121, 21)
	Global $Label55 = GUICtrlCreateLabel("Absch. Länge:", 24, 112, 73, 17)
	Global $tab6_txt_lang = GUICtrlCreateInput("", 104, 112, 121, 21)
	Global $tab6_belegtrh = GUICtrlCreateCheckbox("in belegtes Rohr", 232, 64, 97, 17)
	Global $Medien = GUICtrlCreateGroup("Medien Rohre", 24, 168, 265, 145)
	Global $tab6_chb_3pipes = GUICtrlCreateCheckbox("3 Pipes in MFR kl.", 32, 184, 105, 17)
	Global $tab6_chb_5pipes = GUICtrlCreateCheckbox("5 Pipes in MFR gr.", 32, 200, 105, 17)
	Global $tab6_chb_7pipes = GUICtrlCreateCheckbox("7 Pipes in DN 50", 32, 216, 113, 17)
	Global $tab6_chb_7x12 = GUICtrlCreateCheckbox("SNRVe 7x12 einziehen", 32, 232, 145, 17)
	Global $tab6_chb_8x7 = GUICtrlCreateCheckbox("SNRVe 8x7", 32, 248, 89, 17)
	Global $tab6_chb_22x7 = GUICtrlCreateCheckbox("SNRVe 22x7", 32, 264, 97, 17)
	Global $Label56 = GUICtrlCreateLabel("VerbandFarbe:", 128, 248, 74, 17)
	Global $tab6_dl_verbfarbe = GUICtrlCreateCombo("", 208, 248, 57, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
	GUICtrlSetData(-1, "or|or/ws|or/sw|or/rt", "or")
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group4 = GUICtrlCreateGroup("Median Kabel", 304, 168, 233, 145)
	Global $tab6_chb_12gf = GUICtrlCreateCheckbox("12 GF-Kabel", 312, 184, 81, 17)
	Global $tab6_chb_24gf = GUICtrlCreateCheckbox("24 GF-Kabel", 312, 200, 81, 17)
	Global $tab6_chb_36gf = GUICtrlCreateCheckbox("36 GF-Kabel", 312, 216, 81, 17)
	Global $tab6_chb_48gf = GUICtrlCreateCheckbox("48 GF-Kabel", 312, 232, 81, 17)
	Global $tab6_chb_72gf = GUICtrlCreateCheckbox("72 GF-Kabel", 312, 248, 81, 17)
	Global $tab6_chb_96gf = GUICtrlCreateCheckbox("96 GF-Kabel", 312, 264, 81, 17)
	Global $tab6_chb_cukl = GUICtrlCreateCheckbox("6-100 DA CU", 424, 184, 97, 17)
	Global $tab6_chb_cugr = GUICtrlCreateCheckbox("> 100 DA CU", 424, 200, 97, 17)
	Global $tab6_cb_pipefarbe = GUICtrlCreateCombo("", 376, 288, 81, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
	GUICtrlSetData(-1, "rt|gn|bl|ge|ws|gr|br|vi|tk|sw|or|rs")
	Global $Label63 = GUICtrlCreateLabel("Pipe Farbe:", 312, 288, 58, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $tab6_bt_add = GUICtrlCreateButton("hinzufügen", 24, 328, 75, 25)
	Global $tab6_bt_zuruck = GUICtrlCreateButton("zurücksetzten", 104, 328, 75, 25)
	Global $Label60 = GUICtrlCreateLabel("Anzahl Ksch öffnen", 24, 144, 96, 17)
	Global $tab6_txt_anzksch = GUICtrlCreateInput("", 128, 144, 41, 21)
	Global $Label61 = GUICtrlCreateLabel("Bezeichnung Ksch:", 176, 144, 96, 17)
	Global $tab6_txt_bezeichKsch = GUICtrlCreateInput("", 280, 144, 257, 21)
EndFunc   ;==>_add_Tab_Kabelzug

Func _add_Tab_FTTH()
	GUISwitch($hGui_AufmH, $Tab1)
	Global $FTTH = GUICtrlCreateTabItem("FTTH")

	Global $Group2 = GUICtrlCreateGroup("GF-Montage", 328, 55, 297, 353)

	Global $tab7_chb_adGFMontage = GUICtrlCreateCheckbox("GF-Montage hinzufügen", 331, 71, 153, 17)
	Global $tab7_chb_GFAP_mon = GUICtrlCreateCheckbox("GF-AP Montieren", 448, 191, 105, 17)
	Global $tab7_txt_nvtname = GUICtrlCreateInput("", 384, 143, 121, 22)
	Global $Label42 = GUICtrlCreateLabel("NVT:", 336, 143, 29, 17)
	Global $tab7_bt_import_csv = GUICtrlCreateButton("Import CVS", 544, 343, 75, 25)
	Global $Label46 = GUICtrlCreateLabel("AP-Nr:", 336, 167, 35, 17)
	Global $tab7_txt_apnr = GUICtrlCreateInput("", 384, 167, 121, 22)
	Global $label12324 = GUICtrlCreateLabel("Anzahl Mess.:", 336, 199, 60, 17)
	Global $tab7_txt_anzWE = GUICtrlCreateInput("", 400, 191, 41, 22)
	Global $Label47 = GUICtrlCreateLabel("Straße:", 336, 223, 38, 17)
	Global $tab7_txt_str = GUICtrlCreateInput("", 384, 223, 121, 22)
	Global $Label48 = GUICtrlCreateLabel("Hs Nr:", 512, 223, 34, 17)
	Global $tab7_txt_hsnr = GUICtrlCreateInput("", 552, 223, 41, 22)
	Global $Label49 = GUICtrlCreateLabel("GF-Kabel", 336, 247, 48, 17)
	Global $tab7_dl_gfkabel = GUICtrlCreateCombo("", 400, 247, 57, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
	GUICtrlSetData(-1, "4E|12E")
	Global $Label50 = GUICtrlCreateLabel("Einblas Länge:", 336, 271, 74, 17)
	Global $tab7_txt_einblang = GUICtrlCreateInput("", 416, 271, 41, 22)
	Global $Label51 = GUICtrlCreateLabel("Instal Rohr:", 336, 295, 58, 17)
	Global $tab7_txt_instrohr = GUICtrlCreateInput("", 416, 295, 41, 22)
	Global $tab7_chb_koordinationp = GUICtrlCreateCheckbox("Koordinationspauschale", 336, 319, 137, 17)
	Global $Label52 = GUICtrlCreateLabel("Ausgabe:", 336, 351, 49, 17)
	Global $tab7_txt_ausgabe = GUICtrlCreateInput("", 336, 375, 281, 22)
	Global $tab7_chb_b_kAbl = GUICtrlCreateCheckbox("Bayern kein Fasern Ablegen", 332, 122, 169, 17)
	Global $tab7_chb_einblge = GUICtrlCreateCheckbox("Einblas Gerät vorhalten", 490, 70, 127, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	$Group3 = GUICtrlCreateGroup("Tiefbau", 16, 58, 297, 81)
	Global $Label44 = GUICtrlCreateLabel("Abschnitt:", 24, 82, 51, 17)
	Global $tab7_txt_abschnitt = GUICtrlCreateInput("", 80, 82, 225, 22)
	Global $tab7_txt_lang_privat = GUICtrlCreateInput("", 96, 106, 57, 22)
	Global $Label45 = GUICtrlCreateLabel("länge Privat:", 24, 106, 63, 17)
	Global $tab7_chb_oO = GUICtrlCreateCheckbox("o.O", 160, 106, 49, 17)
	Global $tab7_chb_ring_gg = GUICtrlCreateCheckbox("Ring GG", 216, 106, 65, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $tab7_bt_add = GUICtrlCreateButton("Hinzufügen", 12, 149, 75, 25)
	Global $tab7_bt_zurucksetz = GUICtrlCreateButton("zurücksetzten", 92, 149, 75, 25)
	Global $tab7_chb_gponmess_konv = GUICtrlCreateCheckbox("GPON Mess konventionial", 330, 90, 167, 17)
	Global $tab7_chb_gponmess_ein = GUICtrlCreateCheckbox("GPON Mess vereinfacht", 330, 105, 142, 17)

	GUICtrlSetData($tab7_dl_gfkabel, "4E|12E", "4E") ; vorauswahl bei 4E
EndFunc   ;==>_add_Tab_FTTH

Func _add_Tab_Absperrung()
	GUISwitch($hGui_AufmH, $Tab1)
	Global $Absperrung = GUICtrlCreateTabItem("Absperrung")

	Global $Group5 = GUICtrlCreateGroup("Absperrung", 11, 57, 480, 200)
	Global $tab_ab_txt_abschnitt = GUICtrlCreateInput("tab_ab_txt_abschnitt", 70, 85, 321, 22)
	Global $tab_ab_txt_Meter = GUICtrlCreateInput("", 16, 117, 66, 22)
	Global $tab_ab_txt_m_rpo_st = GUICtrlCreateInput("10", 16, 142, 66, 22)
	Global $tab_ab_txt_anz_tage = GUICtrlCreateInput("", 321, 117, 66, 22)
	Global $tab_ab_txt_anz_tag = GUICtrlCreateInput("5", 351, 142, 36, 22)
	Global $tab_ab_ePreis = GUICtrlCreateInput("", 36, 172, 36, 22)
	Global $tab_ab_txt_anzTGe = GUICtrlCreateInput("", 201, 172, 46, 22)
	Global $tab_ab_txt_GP = GUICtrlCreateInput("", 301, 172, 121, 22)
	Global $tab_ab_txt_bemerkung = GUICtrlCreateInput("", 36, 202, 306, 22)
	Global $tab_ab_bt_aktu = GUICtrlCreateButton("aktualisieren", 36, 227, 75, 25)
	Global $tab_ab_bt_add_Pos = GUICtrlCreateButton("hinzufügen", 121, 227, 75, 25)
	Global $Label64 = GUICtrlCreateLabel("Asperrung in Meter", 86, 122, 93, 17)
	Global $Label65 = GUICtrlCreateLabel("Meter Pro Stück", 86, 147, 81, 17)
	Global $Label66 = GUICtrlCreateLabel("Anzahl Tage:", 251, 122, 67, 17)
	Global $Label67 = GUICtrlCreateLabel("Abzug Tage lt Pos:", 256, 147, 94, 17)
	Global $Label68 = GUICtrlCreateLabel("E-Preis", 76, 177, 37, 17)
	Global $Label69 = GUICtrlCreateLabel("M Pro Tag:", 126, 177, 67, 17)
	Global $Label70 = GUICtrlCreateLabel("Preis:", 256, 177, 30, 17)
	Global $Label71 = GUICtrlCreateLabel("Bemerkung", 346, 207, 58, 17)
	Global $Label1 = GUICtrlCreateLabel("Abschnitt:", 15, 85, 53, 18)
EndFunc   ;==>_add_Tab_Absperrung

Func _add_Tab_Stoerung()
	GUISwitch($hGui_AufmH, $Tab1)
	Global $STo = GUICtrlCreateTabItem("Störung")
	Global $Group1 = GUICtrlCreateGroup("CU-Messung", 14, 80, 313, 57)
	Global $tab_sto_chb_fehlerortun = GUICtrlCreateCheckbox("Fehlerortung von Kabelfehlern an Cu-Kabel", 22, 96, 297, 17)
	Global $tab_sto_chb_zul_instan = GUICtrlCreateCheckbox("Zulage lnstandsetzung v. Kabelfehlern", 22, 112, 297, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group2 = GUICtrlCreateGroup("CU-Kabelabriss", 14, 141, 313, 57)
	Global $tab_sto_chb_schaden_bewe = GUICtrlCreateCheckbox("Schadens-/Beweissicherung an TK-Anlagen", 22, 157, 297, 17)
	Global $tab_sto_chb_instan_beweis = GUICtrlCreateCheckbox("lnstands. nach Schadensbeweis", 22, 173, 297, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group3 = GUICtrlCreateGroup("CU-Kabel", 13, 203, 313, 73)
	Global $Label1 = GUICtrlCreateLabel("Kabel bis 30mm auslegen in Meter:", 21, 219, 168, 17)
	Global $tab_sto_txt_kabelkl30 = GUICtrlCreateInput("", 213, 219, 57, 22)
	Global $Label2 = GUICtrlCreateLabel("Kabel größer 30mm auslegen in Meter:", 21, 243, 185, 17)
	Global $tab_sto_txt_kabelgr30 = GUICtrlCreateInput("", 213, 243, 57, 22)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group4 = GUICtrlCreateGroup("Sonstiges", 14, 362, 313, 73)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_sto_chb_anfahrt_mon = GUICtrlCreateCheckbox("Anfahrt Montagestelle", 22, 378, 185, 17)
	Global $Label3 = GUICtrlCreateLabel("VAO mit Preis von:", 22, 402, 92, 17)
	Global $tab_sto_txt_vao_preis = GUICtrlCreateInput("", 126, 402, 73, 22)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $tab_sto_bt_zuruck = GUICtrlCreateButton("zurücksetzen", 95, 443, 75, 25)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_sto_bt_hinzu = GUICtrlCreateButton("hinzufügen", 12, 443, 75, 25)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $Group5 = GUICtrlCreateGroup("CU-Montage", 12, 281, 313, 73)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $Label4 = GUICtrlCreateLabel("Cu-DA> 0,8mm verbinden:", 20, 297, 130, 18)
	Global $tab_sto_txt_cu_da_kl = GUICtrlCreateInput("", 156, 321, 73, 22)
	Global $Label6 = GUICtrlCreateLabel("Cu-DA< 0,8mm verbinden :", 20, 321, 133, 18)
	Global $tab_sto_txt_cu_da_gr = GUICtrlCreateInput("", 156, 297, 73, 22)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group6 = GUICtrlCreateGroup("GF-Messung", 336, 80, 305, 57)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_sto_chb_fehlor_gf = GUICtrlCreateCheckbox("Fehlerortung v. Kabelfehlern an Gf-Kabel", 344, 96, 241, 17)
	Global $tab_sto_chb_inst_n_fehl_gf = GUICtrlCreateCheckbox("Instands. v. Gf- Kabel nach Fehlerortung", 344, 112, 233, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group7 = GUICtrlCreateGroup("GF-Kabelabriss", 336, 141, 305, 57)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_sto_chb_beweis_gf = GUICtrlCreateCheckbox("Schadens-/Beweissicherung an TK?Anlagen", 344, 157, 273, 17)
	Global $tab_sto_instand_ohne_mess_gf = GUICtrlCreateCheckbox("Instands. v. Gf- Kabel ohne Fehlerortung", 344, 173, 241, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group8 = GUICtrlCreateGroup("GF-Kabel", 336, 203, 305, 73)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_sto_txt_ausblm = GUICtrlCreateInput("", 344, 219, 41, 22)
	Global $Label5 = GUICtrlCreateLabel("Meter ausblaen GF-Kabel", 392, 221, 126, 18)
	Global $tab_sto_txt_einblm = GUICtrlCreateInput("", 344, 243, 41, 22)
	Global $Label7 = GUICtrlCreateLabel("Meter einblasen GF-Kabel", 392, 245, 128, 18)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group9 = GUICtrlCreateGroup("GF-Montage", 336, 281, 305, 153)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_sto_txt_unge_Kas_abl = GUICtrlCreateInput("", 344, 296, 41, 22)
	Global $Label8 = GUICtrlCreateLabel("Gf ungeschweißt in Kassetten ablegen", 392, 300, 193, 18)
	Global $tab_sto_txt_anz_gf_schw_indoor = GUICtrlCreateInput("", 344, 320, 41, 22)
	Global $Label9 = GUICtrlCreateLabel("Glasfasern vorb. u. verbinden Indoor", 392, 323, 182, 18)
	Global $tab_sto_txt_anz_gf_schw_outdoor = GUICtrlCreateInput("", 344, 344, 41, 22)
	Global $Label10 = GUICtrlCreateLabel("Glasfasern vorb. und verbinden Outdoor", 392, 346, 200, 18)
	Global $Checkbox1 = GUICtrlCreateCheckbox("Neue  GF-Muffe öffnen", 344, 368, 193, 17)
	Global $Checkbox2 = GUICtrlCreateCheckbox("Bestandsmuffe öffnen", 344, 384, 153, 17)

EndFunc   ;==>_add_Tab_Stoerung

Func _add_Tab_TVUM()
	GUISwitch($hGui_AufmH, $Tab1)
	$TVUM = GUICtrlCreateTabItem("TVUM")
	Global $Group1 = GUICtrlCreateGroup("TVUM GF-AP", 16, 80, 265, 145)
	Global $tab_tvum_chb_tvumap_mont = GUICtrlCreateCheckbox("TVUM-AP montieren Wand", 24, 96, 193, 17)
	Global $tab_tvum_txt_instsnr_bef = GUICtrlCreateInput("", 24, 120, 41, 21)
	Global $Label1 = GUICtrlCreateLabel("Inst. Kanäle / SNR befestiegen", 72, 122, 152, 17)
	Global $tab_tvum_txt_gfinnen_bef = GUICtrlCreateInput("", 24, 144, 41, 21)
	Global $Label2 = GUICtrlCreateLabel("GF-Innenkabel befestiegen / einziehen", 72, 146, 188, 17)
	Global $tab_tvum_txt_TVumAP_anz_spl = GUICtrlCreateInput("", 24, 168, 41, 21)
	Global $Label4 = GUICtrlCreateLabel("Anzahl Spleiße", 72, 170, 74, 17)
	Global $tab_tvum_anz_mess = GUICtrlCreateInput("", 24, 192, 41, 21)
	Global $Label6 = GUICtrlCreateLabel("Anzahl Messungen", 72, 194, 94, 17)
	Global $Group2 = GUICtrlCreateGroup("FTTH GF-Spleißbox", 16, 232, 265, 49)
	Global $tab_tvum_txt_ftthap_anz_spl = GUICtrlCreateInput("", 24, 250, 41, 21)
	Global $Label3 = GUICtrlCreateLabel("Anzahl Spleiße", 72, 253, 74, 17)
	Global $Group3 = GUICtrlCreateGroup("NVT", 16, 288, 265, 49)
	Global $tab_tvum_nvt_anz_spl = GUICtrlCreateInput("", 24, 304, 41, 21)
	Global $Label5 = GUICtrlCreateLabel("Abzahl Spleiße", 72, 307, 74, 17)
	Global $Group4 = GUICtrlCreateGroup("Kabelzug", 16, 344, 265, 73)
	Global $tab_tvum_txt_ausblm = GUICtrlCreateInput("", 24, 360, 41, 21)
	Global $Label7 = GUICtrlCreateLabel("Meter ausblasen", 72, 362, 82, 17)
	Global $tab_tvum_txt_einblm = GUICtrlCreateInput("", 24, 384, 41, 21)
	Global $Label8 = GUICtrlCreateLabel("Meter einblasen", 72, 387, 79, 17)
	Global $tab_tvum_bt_add = GUICtrlCreateButton("hinzufügen", 16, 456, 75, 25)
	Global $tab_tvum_bt_zuru = GUICtrlCreateButton("zurücksetzen", 104, 456, 75, 25)

EndFunc   ;==>_add_Tab_TVUM

Func _add_Tab_Planung()
	GUISwitch($hGui_AufmH, $Tab1)
	Global $Planung = GUICtrlCreateTabItem("Planung")
	Global $Group1 = GUICtrlCreateGroup("Planung S", 542, 59, 401, 225)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_plan_ed_SListe = GUICtrlCreateEdit("", 550, 75, 385, 177)
	GUICtrlSetData(-1, "")
	Global $tab_plan_chb_05 = GUICtrlCreateCheckbox("S-Planung 0,5", 552, 256, 97, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group2 = GUICtrlCreateGroup("Planung M/L", 540, 287, 409, 201)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_plan_chb_ap_sgs = GUICtrlCreateCheckbox("GF.AP + Patchfeld", 546, 307, 97, 17)
	Global $tab_plan_txt_gfminik = GUICtrlCreateInput("", 546, 327, 36, 22)
	Global $Label1 = GUICtrlCreateLabel("m GF-Kabel einbl.verlegen gesamt", 586, 330, 168, 18)
	Global $tab_plan_txt_ivk = GUICtrlCreateInput("", 546, 352, 36, 22)
	Global $Label2 = GUICtrlCreateLabel("m IVK", 586, 355, 32, 18)
	Global $tab_plan_zulage_kl_baum = GUICtrlCreateInput("", 546, 397, 36, 22)
	Global $Label3 = GUICtrlCreateLabel("m zulage kl. Baumaßnahme (neue Anlage Rohr or TB", 586, 400, 258, 18)
	Global $tab_plan_chb_proj_kl_baum = GUICtrlCreateCheckbox("Proj. kl. Baumaßnahme", 546, 377, 257, 17)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $Group3 = GUICtrlCreateGroup("Planung FTTH/NBG", 12, 59, 520, 427)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_plan_proj_n_struk_mTB = GUICtrlCreateCheckbox("Projektierung nach Strukturplanung mit TB bis 100m bis 4", 16, 76, 482, 17)
	Global $tab_plan_txt_proj_n_struk_mTB = GUICtrlCreateInput("", 16, 96, 36, 22)
	Global $Label4 = GUICtrlCreateLabel("m Zulage ab 101m bis 4", 56, 98, 310, 18)
	Global $tab_plan_zu_proj_n_struk_oTB = GUICtrlCreateCheckbox("Projektierung nach Strukturplanung ohne TB bis 100m bis 4", 16, 121, 502, 17)
	Global $tab_plan_proj_n_struk_oTB = GUICtrlCreateInput("", 16, 141, 36, 22)
	Global $Label5 = GUICtrlCreateLabel("m Zulage ab 101m bis 4", 56, 144, 307, 18)
	Global $tab_plan_mpp_gfk_nvt_ap = GUICtrlCreateCheckbox("MP.Proj. FTTH-Gf-Kabel v. NVT- GF-AP", 16, 166, 212, 17)
	Global $tab_plan_txt_mpp_gfk_ZN = GUICtrlCreateInput("", 16, 186, 36, 22)
	Global $Label6 = GUICtrlCreateLabel("m MP- Proj. Gf-Kabel im ZN-Netz", 56, 189, 159, 18)
	Global $tab_plan_chb_mpp_gfap = GUICtrlCreateCheckbox("MP-Proj.Gf-AP", 16, 211, 97, 17)
	Global $tab_plan_txt_mpp_kr = GUICtrlCreateInput("", 16, 231, 36, 22)
	Global $Label7 = GUICtrlCreateLabel("m MP-Proj. KR-Anlagen", 56, 236, 115, 18)
	Global $tab_plan_txt_mpp_snrv = GUICtrlCreateInput("", 16, 256, 36, 22)
	Global $Label8 = GUICtrlCreateLabel("m MP-Proj.", 56, 259, 97, 18)
	GUICtrlCreateGroup("", -99, -99, 1, 1)
	Global $tab_plan_bt_add = GUICtrlCreateButton("Hinzufügen", 12, 493, 75, 25)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")
	Global $tab_plan_bt_zuruck = GUICtrlCreateButton("Zurücksetzten", 100, 493, 75, 25)
	GUICtrlSetFont(-1, 8, 400, 0, "Arial")

EndFunc   ;==>_add_Tab_Planung


Func _add_Tab_ZW_RV()
	GUISwitch($hGui_AufmH, $Tab1)
	; Neues Tab "ZW-RV" erstellen
	Global $zw_rv_tab = GUICtrlCreateTabItem("ZW-RV")

	; Groupbox "Hausanschluss" erstellen
	$grpHausanschluss = GUICtrlCreateGroup("Hausanschluss", 20, 60, 440, 290)

	; Label "Abschnitt" und Textfeld erstellen
	GUICtrlCreateLabel("Abschnitt:", 30, 75, 50, 20)
	Global $tab_zw_rv_txt_abschnitt = GUICtrlCreateInput("", 85, 75, 100, 20)

	; Checkboxen in einer Zeile mit 5px Abstand
	Global $tab_zw_rv_chb_vegetation = GUICtrlCreateCheckbox("Vegetation", 30, 100, 100, 20)
	Global $tab_zw_rv_chb_pflaster = GUICtrlCreateCheckbox("Pflaster", 135, 100, 100, 20)
	Global $tab_zw_rv_chb_asphalt = GUICtrlCreateCheckbox("Asphalt", 240, 100, 100, 20)

	; Inputfelder unter den Checkboxen
	Global $tab_zw_rv_txt_vegetation_meter = GUICtrlCreateInput("", 30, 125, 100, 20)
	Global $tab_zw_rv_txt_pflaster_meter = GUICtrlCreateInput("", 135, 125, 100, 20)
	Global $tab_zw_rv_txt_asphalt_meter = GUICtrlCreateInput("", 240, 125, 100, 20)

	; Weitere Checkboxen untereinander
	Global $tab_zw_rv_chb_kopfloch_gebaeude = GUICtrlCreateCheckbox("Kopfloch Gebäude", 30, 150, 150, 20)
	Global $tab_zw_rv_chb_kopfloch_haupttrasse = GUICtrlCreateCheckbox("Kopfloch Haupttrasse", 30, 175, 150, 20)
	Global $tab_zw_rv_chb_koordinieren_hausanschluss = GUICtrlCreateCheckbox("Koordinieren Hausanschluss", 30, 200, 180, 20)

	; Neue Checkboxen unter "Koordinieren Hausanschluss"
	Global $tab_zw_rv_chb_md1 = GUICtrlCreateCheckbox("MD1-FttH", 30, 225, 100, 20)
	Global $tab_zw_rv_chb_kernb = GUICtrlCreateCheckbox("Kernbohrung", 30, 250, 100, 20)

	GUICtrlCreateGroup("", -99, -99) ; Groupbox schließen

	; Buttons erstellen
	Global $tab_zw_rv_bt_add = GUICtrlCreateButton("Hinzufügen", 30, 360, 120, 30)
	Global $tab_zw_rv_bt_zuruck = GUICtrlCreateButton("Zurücksetzen", 170, 360, 120, 30)
	Global $tab_zw_rv_bt_import = GUICtrlCreateButton("Import CSV", 310, 360, 120, 30)

EndFunc   ;==>_add_Tab_ZW_RV

Func _add_Tab_Doku()
	GUISwitch($hGui_AufmH, $Tab1)
	; Neues Tab "Doku" hinzufügen
	GUICtrlCreateTabItem("Doku")
	$hGroup = GUICtrlCreateGroup("Dokumentation", 16, 67, 420, 176)
	GUICtrlCreateLabel("MP- Einarbeitung von Gelände/Gebäude:", 26, 87, 200, 20)
	Global $tab_doku_txt_lang = GUICtrlCreateInput("", 236, 87, 44, 22)
	Global $tab_doku_txt_breit = GUICtrlCreateInput("", 290, 87, 44, 22)
	GUICtrlCreateLabel("Dokumentation von Cu/Gf HK-Trassen:", 26, 119, 200, 20)
	Global $tab_doku_txt_m_hktr = GUICtrlCreateInput("", 236, 119, 44, 22)
	GUICtrlCreateLabel("Dokumentation von Cu/Gf VzK-Trassen:", 26, 151, 200, 20)
	Global $tab_doku_txt_m_vzktr = GUICtrlCreateInput("", 236, 151, 44, 22)
	Global $tab_doku_chb_dokGeh = GUICtrlCreateCheckbox("Dokumentation von Gehäusen", 26, 215, 200, 20)
	GUICtrlCreateLabel("Dokumentation Gf-Hausanschluss:", 26, 183, 200, 20)
	Global $tab_doku_txt_anzGFHaus = GUICtrlCreateInput("", 236, 183, 44, 22)
	$Label1 = GUICtrlCreateLabel("Länge x Breite", 344, 88, 74, 18)
	$Label2 = GUICtrlCreateLabel("Meter", 288, 120, 31, 18)
	$Label3 = GUICtrlCreateLabel("Meter", 289, 151, 31, 18)
	$Label4 = GUICtrlCreateLabel("Stück", 290, 183, 31, 18)
	Global $tab_doku_bt_add = GUICtrlCreateButton("Hinzufügen", 14, 279, 100, 30)
	Global $tab_doku_bt_zuruck = GUICtrlCreateButton("Zurücksetzen", 120, 279, 100, 30)

EndFunc   ;==>_add_Tab_Doku


Func _add_Tab_sto_sammler()
	GUISwitch($hGui_AufmH, $Tab1)
	$tab_sto_sam = GUICtrlCreateTabItem("STÖ-Sammler")
	Global $tab_sto_sam_ed_ssliste = GUICtrlCreateEdit("", 16, 64, 481, 305)
	Global $tab_sto_sam_bt_add = GUICtrlCreateButton("hinzufügen", 16, 376, 75, 25)

EndFunc   ;==>_add_Tab_sto_sammler

Func _add_SAS_Meck()
	GUISwitch($hGui_AufmH, $Tab1)
	Global $sasMeck = GUICtrlCreateTabItem("SAS Mecka")
	Global $Group6 = GUICtrlCreateGroup("Hausanschluss", 8, 58, 393, 345)
	Global $tab_sas_chb_ha = GUICtrlCreateCheckbox("HA Herstellen", 12, 74, 97, 17)
	Global $Label84 = GUICtrlCreateLabel("Scan Name:", 12, 97, 62, 18)
	Global $tab_sas_txtscanname = GUICtrlCreateInput("", 81, 97, 311, 22)
	Global $Label76 = GUICtrlCreateLabel("Trassenmeter:", 12, 123, 74, 17)
	Global $tab_sas_txt_trmeter = GUICtrlCreateInput("", 93, 123, 45, 22)
	Global $Label78 = GUICtrlCreateLabel("Kabelsichern Meter:", 12, 151, 98, 17)
	Global $tab_sas_txt_kabelm = GUICtrlCreateInput("", 110, 151, 45, 22)
	Global $Label79 = GUICtrlCreateLabel("Anzahl Q Kabel Rohre:", 146, 125, 112, 17)
	Global $tab_sas_txt_anz_qkr = GUICtrlCreateInput("", 263, 123, 45, 22)
	Global $Label85 = GUICtrlCreateLabel("Anzahl Querungs Stellen:", 160, 152, 127, 18)
	Global $tab_sas_txt_anzqst = GUICtrlCreateInput("", 288, 151, 45, 22)
	Global $Label89 = GUICtrlCreateLabel("Straßenquerung Meter:", 12, 176, 116, 18)
	Global $tab_sas_txt_strqm = GUICtrlCreateInput("", 136, 176, 45, 22)
	Global $Label90 = GUICtrlCreateLabel("Anzahl Suchgrube:", 192, 176, 97, 18)
	Global $tab_sas_txt_anzsuchgr = GUICtrlCreateInput("", 296, 176, 45, 22)
	Global $tab_sas_chb_einzug10 = GUICtrlCreateCheckbox("Einzug 10er Pipes", 12, 200, 113, 17)
	Global $tab_sas_bt_ha_add = GUICtrlCreateButton("HA hinfügen", 12, 219, 75, 25)
	Global $tab_sas_bt_ha_feldback = GUICtrlCreateButton("Felder zurücksetzen", 276, 365, 115, 25)
	

	Global $Group7 = GUICtrlCreateGroup("Tiefbau", 408, 58, 553, 345)
	Global $Label77 = GUICtrlCreateLabel("Scan Name:", 411, 72, 62, 18)
	Global $tab_sas_txt_scantb = GUICtrlCreateInput("", 476, 72, 401, 22)
	Global $tab_sas_chb_unbe = GUICtrlCreateCheckbox("unbefestiegt (Wiese, Kies, Schotter)", 416, 97, 192, 17)
	Global $tab_sas_chb_be = GUICtrlCreateCheckbox("befestiegt (Pflaster, Asphalt, Beton)", 611, 97, 197, 17)
	Global $Label80 = GUICtrlCreateLabel("Länge:", 420, 124, 37, 17)
	Global $Label81 = GUICtrlCreateLabel("Tiefe:", 510, 123, 31, 17)
	Global $Label82 = GUICtrlCreateLabel("Anzahl Rohre 12x10:", 415, 152, 103, 17)
	Global $Label83 = GUICtrlCreateLabel("Anzahl Rohre 4x12", 415, 176, 94, 17)
	Global $tab_sas_txt_tb_lang = GUICtrlCreateInput("", 460, 119, 45, 22)
	Global $tab_sas_txt_tb_tief = GUICtrlCreateInput("", 545, 118, 45, 22)
	Global $tab_sas_txt_tb_anz_12x10 = GUICtrlCreateInput("", 524, 147, 57, 22)
	Global $tab_sas_txt_tb_anz_4x20 = GUICtrlCreateInput("", 524, 171, 57, 22)
	Global $tab_sas_chb_kg2 = GUICtrlCreateCheckbox("Kabelgraben 2", 600, 120, 97, 17)
	Global $tab_sas_chb_kg4 = GUICtrlCreateCheckbox("Kabelgraben 4", 600, 136, 97, 17)
	Global $tab_sas_chb_kg6 = GUICtrlCreateCheckbox("Kabelgraben 6", 600, 152, 97, 17)
	Global $Label86 = GUICtrlCreateLabel("Anzahl Q Kabel Rohre:", 698, 120, 120, 17)
	Global $tab_sas_txt_tbanzqk = GUICtrlCreateInput("", 827, 116, 45, 22)
	Global $Label87 = GUICtrlCreateLabel("Anzahl Querungs Stellen:", 698, 145, 127, 18)
	Global $tab_sas_txt_tb_anzqs = GUICtrlCreateInput("", 827, 142, 45, 22)
	Global $Label88 = GUICtrlCreateLabel("Kabelsichern Meter:", 697, 173, 98, 17)
	Global $tab_sas_txt_tb_kabelm = GUICtrlCreateInput("", 803, 170, 45, 22)
	Global $Label91 = GUICtrlCreateLabel("Anzahl Suchgrube:", 413, 200, 97, 18)
	Global $tab_sas_txt_tb_anzsuchgr = GUICtrlCreateInput("", 521, 200, 45, 22)
	Global $tab_sas_bt_tb_add = GUICtrlCreateButton("TB hinzfügen", 411, 251, 75, 25)
	Global $tab_sas_bt_tb_feldback = GUICtrlCreateButton("Felder zurücksetzen", 839, 373, 115, 25)

EndFunc   ;==>_add_SAS_Meck

Func _add_NEFF_Achberg()
GUISwitch($hGui_AufmH, $Tab1)
	Global $FTThNeff = GUICtrlCreateTabItem("FTTX Achberg")
	Global $Group8 = GUICtrlCreateGroup("Hausanschluss", 16, 56, 425, 400)
	Global $Label89 = GUICtrlCreateLabel("ScanName:", 24, 96, 60, 17)
	Global $tab_neff_ach_txt_scanname = GUICtrlCreateInput("", 88, 96, 345, 21)
	Global $tab_neff_ach_chb_ha = GUICtrlCreateCheckbox("HA herstellen", 24, 72, 97, 17)
	Global $Group10 = GUICtrlCreateGroup("vorh. Leitungen Unterfahren", 24, 224, 193, 121)
	Global $tab_neff_ach_chb_unt_kabel = GUICtrlCreateCheckbox("Kabel u. Rohre", 32, 264, 89, 17)
	Global $tab_neff_ach_chb_unt_Vers = GUICtrlCreateCheckbox("Versorgungsleitungen", 32, 288, 121, 17)
	Global $tab_neff_ach_chb_unt_Abwas = GUICtrlCreateCheckbox("Abwasserleitungen", 32, 312, 121, 17)
	Global $Label91 = GUICtrlCreateLabel("Anzahl stellen:", 136, 240, 72, 17)
	Global $tab_neff_ach_txt_anz_st_kabel = GUICtrlCreateInput("", 160, 264, 45, 21)
	Global $tab_neff_ach_txt_anz_st_verso = GUICtrlCreateInput("", 160, 288, 45, 21)
	Global $tab_neff_ach_txt_anz_st_abw = GUICtrlCreateInput("", 161, 311, 45, 21)

	Global $Group11 = GUICtrlCreateGroup("vorh. LTG sichern Längs", 224, 224, 209, 121)
	Global $label122 = GUICtrlCreateLabel("Meter:", 360, 240, 34, 17)
	Global $tab_neff_ach_txt_m_kabel = GUICtrlCreateInput("", 368, 264, 45, 21)
	Global $tab_neff_ach_chb_sichern_l_KabRohr = GUICtrlCreateCheckbox("Kabel u. Rohr", 232, 264, 97, 17)
	Global $tab_neff_ach_chb_sichern_l_Vers = GUICtrlCreateCheckbox("Versorgungsleitungen", 232, 288, 129, 17)
	Global $tab_neff_ach_chb_sichern_l_Abwas = GUICtrlCreateCheckbox("Abwasserleitungen", 232, 320, 121, 17)
	Global $tab_neff_ach_txt_m_verso = GUICtrlCreateInput("", 368, 290, 45, 21)
	Global $tab_neff_ach_txt_m_abw = GUICtrlCreateInput("", 368, 319, 45, 21)

	Global $Group12 = GUICtrlCreateGroup("Kabelgraben", 24, 120, 177, 97)
	Global $tab_neff_ach_chb_kg_Gruen = GUICtrlCreateCheckbox("Grünflächen", 30, 140, 89, 17)
	Global $tab_neff_ach_txt_kg_gr_m = GUICtrlCreateInput("", 136, 136, 45, 21)
	Global $tab_neff_ach_chb_kg_as = GUICtrlCreateCheckbox(" Asphaltflächen", 30, 160, 97, 17)
	Global $tab_neff_ach_txt_kg_as_m = GUICtrlCreateInput("", 136, 160, 45, 21)
	Global $tab_neff_ach_chb_kg_Pflaster = GUICtrlCreateCheckbox("Pflasterflächen", 30, 184, 105, 17)
	Global $tab_neff_ach_txt_kg_Pf_m = GUICtrlCreateInput("", 136, 184, 45, 21)

	Global $Group13 = GUICtrlCreateGroup("Kopfloch", 208, 120, 73, 57)
	Global $tab_neff_ach_chb_kopfl_ha = GUICtrlCreateCheckbox("Gebäude", 216, 136, 65, 17)
	Global $tab_neff_ach_chb_kopfl_tr = GUICtrlCreateCheckbox("Trasse", 216, 152, 65, 17)

	Global $Group14 = GUICtrlCreateGroup("Sonstiges", 288, 120, 145, 81)
	Global $tab_neff_ach_chb_HA_koor = GUICtrlCreateCheckbox("HA Koordinieren", 296, 136, 97, 17)
	Global $tab_neff_ach_chb_Kernb = GUICtrlCreateCheckbox("Kernbohrung herstellen", 296, 152, 129, 17)
	Global $tab_neff_ach_chb_MD1 = GUICtrlCreateCheckbox("MD1 FttH herstellen", 296, 168, 129, 17)
	
	Global $Group19 = GUICtrlCreateGroup("Rohrverbinder", 22, 348, 185, 43)
	Global $tab_neff_ach_chb_ha_dop10 = GUICtrlCreateCheckbox("Doppelsteckverb 10", 30, 364, 120, 17)
	Global $tab_ach_ha_txt_anz_dop10 = GUICtrlCreateInput("", 155, 364, 45, 21)

	Global $tab_neff_ach_bt_add_pos = GUICtrlCreateButton("hinzufügen", 24, 424, 75, 25)
	Global $tab_neff_ach_bt_feld_delete = GUICtrlCreateButton("Felder zurücksetzten", 312, 424, 123, 25)

	Global $Group9 = GUICtrlCreateGroup("Tiefbau", 448, 56, 521, 400)
	Global $Label90 = GUICtrlCreateLabel("ScanName:", 451, 71, 60, 17)
	Global $tab_neff_ach_tb_txt_scanname = GUICtrlCreateInput("", 514, 66, 345, 21)
	Global $tab_neff_ach_tb_bt_add_pos = GUICtrlCreateButton("hinzufügen", 459, 376, 75, 25)
	Global $tab_neff_ach_tb_bt_feld_delete = GUICtrlCreateButton("Felder zurücksetzten", 837, 376, 123, 25)
	Global $Group15 = GUICtrlCreateGroup("Kabelgraben", 460, 96, 257, 209)
	Global $tab_neff_ach_tb_chb_kg_Gruen = GUICtrlCreateCheckbox("Grünflächen", 466, 138, 89, 17)
	Global $tab_neff_ach_tb_chb_kg_as = GUICtrlCreateCheckbox(" Asphaltflächen", 466, 160, 97, 17)
	Global $tab_neff_ach_tb_chb_kg_pfl = GUICtrlCreateCheckbox("Pflasterflächen", 466, 184, 97, 17)
	Global $tab_neff_ach_tb_txt_kg_gr_m = GUICtrlCreateInput("", 572, 136, 45, 21)
	Global $tab_neff_ach_tb_txt_kg_guen_b = GUICtrlCreateInput("", 623, 135, 40, 21)
	Global $tab_neff_ach_tb_txt_kg_as_m = GUICtrlCreateInput("", 572, 160, 45, 21)
	Global $tab_neff_ach_tb_txt_kg_as_b = GUICtrlCreateInput("", 624, 160, 40, 21)
	Global $tab_neff_ach_tb_txt_kg_pf_m = GUICtrlCreateInput("", 572, 184, 45, 21)
	Global $tab_neff_ach_tb_txt_kg_pf_b = GUICtrlCreateInput("", 624, 184, 40, 21)
	Global $Label93 = GUICtrlCreateLabel("Meter", 576, 112, 31, 17)
	Global $Label94 = GUICtrlCreateLabel("Breite", 632, 112, 31, 17)
	
	
	Global $tab_neff_ach_tb_chb_ltgT070_090 = GUICtrlCreateCheckbox("Leitungsgraben (T) >0,70 m bis 0,90 m", 464, 216, 217, 17)
	Global $tab_neff_ach_tb_chb_ltgT090_100 = GUICtrlCreateCheckbox("Leitungsgraben (T) >0,90 m bis 1,00 m", 464, 232, 209, 17)

	Global $Label96 = GUICtrlCreateLabel("Anzahl Rohre 12x10:", 464, 254, 103, 17)
	Global $tab_ach_tb_txt_tb_anz_12x10 = GUICtrlCreateInput("", 576, 251, 40, 21)
	Global $Label97 = GUICtrlCreateLabel("Anzahl Rohre 4x20:", 464, 279, 103, 17)
	Global $tab_ach_tb_txt_tb_anz_4x20 = GUICtrlCreateInput("", 577, 276, 40, 21)

	Global $Group16 = GUICtrlCreateGroup("Kopfloch", 461, 304, 73, 57)
	Global $tab_neff_ach_tb_chb_kopfl_tr = GUICtrlCreateCheckbox("Trasse", 469, 320, 57, 17)

	Global $Group17 = GUICtrlCreateGroup("vorh. Leitungen Unterfahren", 738, 96, 201, 121)
	Global $tab_neff_ach_tb_chb_unt_kabel = GUICtrlCreateCheckbox("Kabel u. Rohre", 746, 136, 89, 17)
	Global $tab_neff_ach_tb_chb_unt_Vers = GUICtrlCreateCheckbox("Versorgungsleitungen", 746, 160, 121, 17)
	Global $tab_neff_ach_tb_chb_unt_Abwas = GUICtrlCreateCheckbox("Abwasserleitungen", 746, 184, 121, 17)
	Global $Label92 = GUICtrlCreateLabel("Anzahl stellen:", 850, 112, 72, 17)
	Global $tab_neff_ach_tb_txt_anz_st_kabel = GUICtrlCreateInput("", 874, 136, 45, 21)
	Global $tab_neff_ach_tb_txt_anz_st_verso = GUICtrlCreateInput("", 874, 160, 45, 21)
	Global $tab_neff_ach_tb_txt_anz_st_abw = GUICtrlCreateInput("", 874, 183, 45, 21)

	Global $Group18 = GUICtrlCreateGroup("vorh. LTG sichern Längs", 736, 220, 201, 129)
	Global $Label95 = GUICtrlCreateLabel("Meter:", 872, 236, 34, 17)
	Global $tab_neff_ach_tb_txt_m_kabel = GUICtrlCreateInput("", 880, 260, 45, 21)
	Global $tab_neff_ach_tb_chb_sichern_l_KabRohr = GUICtrlCreateCheckbox("Kabel u. Rohr", 744, 260, 97, 17)
	Global $tab_neff_ach_tb_chb_sichern_l_Vers = GUICtrlCreateCheckbox("Versorgungsleitungen", 744, 284, 129, 17)
	Global $tab_neff_ach_tb_chb_sichern_l_Abwas = GUICtrlCreateCheckbox("Abwasserleitungen", 744, 316, 121, 17)
	Global $tab_neff_ach_tb_txt_m_verso = GUICtrlCreateInput("", 880, 286, 45, 21)
	Global $tab_neff_ach_tb_txt_m_abw = GUICtrlCreateInput("", 880, 315, 45, 21)

	Global $tab_neff_ach_chb_tb_dop10 = GUICtrlCreateCheckbox("Doppelsteckverb 10", 546, 321, 120, 17)
	Global $tab_ach_tb_txt_tb_anz_dop10 = GUICtrlCreateInput("", 670, 315, 40, 21)
	Global $tab_neff_ach_chb_tb_dop20 = GUICtrlCreateCheckbox("Doppelsteckverb 20", 546, 339, 116, 17)
	Global $tab_ach_tb_txt_tb_anz_dop20 = GUICtrlCreateInput("", 670, 340, 40, 21)
EndFunc   ;==>_add_NEFF_Achberg

; Function Name:   _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
; Description::    gibt Verzeichnisse und/oder Dateien (rekursiv) zurück, die
;                  einem RegExp-Pattern entsprechen
; Parameter(s):    $sPath = Startverzeichnis
;                  $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
;                  $iFlag = Auswahl
;                           0 = Dateien & Verzeichnisse
;                           1 = nur Dateien
;                           2 = nur Verzeichnisse
;                  $iFormat = Rückgabeformat
;                             0 = String
;                             1 = Array mit [0] = Anzahl
;                             2 = Nullbasiertes Array
;                  $sDelim = Trennzeichen für die String-Rückgabe
Func _RecursiveFileListToArray($sPath, $sPattern, $iFlag = 0, $iFormat = 1, $sDelim = @CRLF)
	Local $hSearch, $sFile, $sReturn = ''
	If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
	$hSearch = FileFindFirstFile($sPath & '*.*')
	If @error Or $hSearch = -1 Then Return SetError(0, 0, $sReturn)
	While True
		$sFile = FileFindNextFile($hSearch)
		If @error Then ExitLoop
		If StringInStr(FileGetAttrib($sPath & $sFile), 'D') Then
			If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
			$sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0)
			ContinueLoop
		EndIf
		If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
	WEnd
	FileClose($hSearch)
	If $iFormat Then Return StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat)
	Return $sReturn
EndFunc   ;==>_RecursiveFileListToArray

;~ $aFiles = _FileListToArrayRecursiv($sPath_Src, "*.*", 1)

;~ _ArrayDisplay($atest)

Func _FileListToArrayRecursiv($sPath, $sFilter = "*", $iFlag = 0)
	Local $aFiles = _FileListToArray($sPath, $sFilter, $iFlag)
	If Not IsArray($aFiles) Then
		Local $aFiles[1]
		$aFiles[0] = 0
	EndIf

	Local $aFolders = _FileListToArray($sPath, "*", 2)
	If Not IsArray($aFolders) Then
		If $aFiles[0] = 0 Then Return 0
	Else
		$bResult = False
		For $i = 1 To $aFolders[0]
			$aSearchTmp = _FileListToArrayRecursiv($sPath & "\" & $aFolders[$i], $sFilter, $iFlag)
			If IsArray($aSearchTmp) Then
				$bResult = True
				ReDim $aFiles[$aFiles[0] + $aSearchTmp[0] + 1]
				For $j = 1 To $aSearchTmp[0]
					$aFiles[$aFiles[0] + $j] = $aFolders[$i] & "\" & $aSearchTmp[$j]
				Next
				$aFiles[0] += $aSearchTmp[0]
			EndIf
		Next
	EndIf

	Return $aFiles
EndFunc   ;==>_FileListToArrayRecursiv

Func _PriceRound($iZa)
	$iZa = _replaceKom2Punkt($iZa)
	$iZa = Round($iZa, 3)
	$iZa = _replacePunkt2Koma($iZa)
	Return $iZa
EndFunc   ;==>_PriceRound



; Name...........: _StringAddThousandsSepEx
; Description ...: Returns the original numbered string with the Thousands delimiter inserted.
; Syntax.........: _StringAddThousandsSep($sString[, $sThousands = -1[, $sDecimal = -1]])
; Parameters ....: $sString - The string to be converted.
; $sThousands - Optional: The Thousands delimiter
; $sDecimal - Optional: The decimal delimiter
; Return values .: Success - The string with Thousands delimiter added.
; Author ........: SmOke_N (orignal _StringAddComma

Func _StringAddThousandsSepEx($sString, $sThousands = -1, $sDecimal = -1)
	Local $sResult = ""     ; Force string
	Local $rKey = "HKCU\Control Panel\International"
	If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
	If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
;~ Local $aNumber = StringRegExp($sString, "(\d+)\D?(\d*)", 1)
	Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1)     ; This one works for negatives.
	If UBound($aNumber) = 2 Then
		Local $sLeft = $aNumber[0]
		While StringLen($sLeft)
			$sResult = $sThousands & StringRight($sLeft, 3) & $sResult
			$sLeft = StringTrimRight($sLeft, 3)
		WEnd
;~ $sResult = StringTrimLeft($sResult, 1) ; Strip leading thousands separator
		$sResult = StringTrimLeft($sResult, StringLen($sThousands))     ; Strip leading thousands separator
		If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
	EndIf
	Return $sResult
EndFunc   ;==>_StringAddThousandsSepEx

Func _GUICtrlCreateStatusBar($gui, $space = 280, $text = 'Developed by Florian Kramer', $copyright = 'FK-Coding')
	$sUser = IniRead(@ScriptDir & "\daten\conf.ini", "Firma", "User", "NA")
	$sUser = StringReplace($sUser, ".dat", "")
	Global $statusBar = _GUICtrlStatusBar_Create($gui)
	Local $aParts[3] = [180, 350, -1]

	_GUICtrlStatusBar_SetParts($statusBar, $aParts)
	_GUICtrlStatusBar_SetText($statusBar, $text, 0)
	_GUICtrlStatusBar_SetText($statusBar, 'Copyright ' & Chr(169) & ' ' & @YEAR & ' ' & $copyright, 1)
	_GUICtrlStatusBar_SetText($statusBar, 'Version; ' & $ERSTELLUNGSTAG & ' Lizens: ' & $sUser, 2)
;~ 	_GUICtrlStatusBar_SetText($statusBar, 'Lizens: ' & $sUser, 3)
	_GUICtrlStatusBar_SetMinHeight($statusBar, 2)
	Global $hIcon = _WinAPI_LoadShell32Icon(13)

	_GUICtrlStatusBar_SetIcon($statusBar, 0, $hIcon)
	Return $statusBar
EndFunc   ;==>_GUICtrlCreateStatusBar

; Resize the status bar when GUI size changes
Func WM_SIZE($hWnd, $iMsg, $wParam, $lParam)
	#forceref $hWnd, $iMsg, $wParam, $lParam
	_GUICtrlStatusBar_Resize($statusBar)
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_SIZE

Func _felder_tab1_zurucksetzen()
	GUICtrlSetData($tab1_txt_abschnitt, "")
	GUICtrlSetData($tab1_txt_leange, "")
	GUICtrlSetData($tab1_txt_breite, "")
	GUICtrlSetData($tab1_txt_tiefe, "")
	GUICtrlSetData($tab1_txt_bemerkung, "")
	GUICtrlSetData($tab1_txt_rest_laenge, "")
	GUICtrlSetData($tab1_txt_rest_breite, "")
	GUICtrlSetData($tab1_txt_asphaltstark, "")
	GUICtrlSetData($tab1_txt_anz_einz, "")
	GUICtrlSetData($tab1_txt_lm_bre, "")
	GUICtrlSetData($tab1_txt_anz_cu_kabel, "")
	GUICtrlSetData($tab1_txt_anz_dn50, "")
	GUICtrlSetData($tab1_txt_anz_snrve712, "")
	GUICtrlSetData($tab1_txt_anz_dn110, "")
	GUICtrlSetData($tab1_txt_anz_snrve22x7, "")
	GUICtrlSetData($tab1_txt_anz_snrve_8x7, "")
	GUICtrlSetData($tab1_txt_anz_2xdn50, "")
	GUICtrlSetData($tab1_txt_anz_3xdn50, "")
	GUICtrlSetData($tab1_txt_stahplatteBemerk, "")

	GUICtrlSetState($tab1_chb_wiese, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_kies, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_asphalt, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_pflaster, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_mosaik, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_inBeton, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_winterbau, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_liefern, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_bord, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_kante, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_rinne, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_fels, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_cu_kabel, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_anz_g_100CU, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_dn50, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_snrve7x12, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_dn110, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_snrve22x7, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_snrve8x7, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_2xdn50, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_3xdn50, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_trasseeinmessen, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_stahplatte, $GUI_UNCHECKED)
	GUICtrlSetState($tab1_chb_bodentausch, $GUI_UNCHECKED)
EndFunc   ;==>_felder_tab1_zurucksetzen


func _Export_Optionen()
	
	If IniRead($sPfadIni, "Exports", "x31", "") = "x"Then
		local $sRefPrjName = ""
		local $sRefPrjID = ""
		local $sOwnerName = ""
		If GUICtrlRead($kopf_TAB_chb_exportvorl) <> "" Then
			$sDateiname = _CheckDateiname()
			If $iFolderCreate = "True" Then
				DirCreate(@ScriptDir & "\_Aufmaße\" & $sDateiname & "\")
				$sImportTxt = @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & ".txt"
				$ausgabePfadX31 = @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & "_x31.x31"
				$ausgabe =  @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & "_California_x31.x31"
				_X31_Export($sImportTxt, $ausgabePfadX31)
				Dataflor_Zu_California($ausgabePfadX31, $ausgabe, $sRefPrjName = "", $sRefPrjID = "", $sOwnerName = "")
			Else
				$sImportTxt = @ScriptDir & "\_Aufmaße\" & $sDateiname & ".txt"
				$ausgabePfadX31 = @ScriptDir & "\_Aufmaße\" & $sDateiname & "_x31.x31"
				$ausgabe = @ScriptDir & "\_Aufmaße\" & $sDateiname & "_California_x31.x31"
				_X31_Export($sImportTxt, $ausgabePfadX31)
				Dataflor_Zu_California($ausgabePfadX31, $ausgabe, $sRefPrjName = "", $sRefPrjID = "", $sOwnerName = "")
				
			EndIf
		EndIf 
	EndIf
	

	If IniRead($sPfadIni, "Exports", "csv", "") = "x"Then 
		_klick_exportCSV()
	EndIf
	
	If IniRead($sPfadIni, "Exports", "excel", "") = "x"Then 
		_LV_LVAufMa_export2Excel()
	EndIf
	
	
	
	
	If IniRead($sPfadIni, "Exports", "excel_dlp", "") = "x"Then 
		_LV_LVAufMa_export2Excel_DLP()
	EndIf
	
	If IniRead($sPfadIni, "Exports", "excel_California", "") = "x"Then 
		If GUICtrlRead($kopf_TAB_chb_exportvorl) <> "" Then
			$sDateiname = _CheckDateiname()
			If $iFolderCreate = "True" Then
				DirCreate(@ScriptDir & "\_Aufmaße\" & $sDateiname & "\")
				$sImportTxt = @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & ".txt"
				$ausgabePfadX31 = @ScriptDir & "\_Aufmaße\" & $sDateiname & "\" & $sDateiname & "_California.xlsx"
				_REB_TXT_to_Excel($sImportTxt, $ausgabePfadX31)
			Else
				$sImportTxt = @ScriptDir & "\_Aufmaße\" & $sDateiname & ".txt"
				$ausgabePfadX31 = @ScriptDir & "\_Aufmaße\" & $sDateiname & "_California.xlsx"
				_REB_TXT_to_Excel($sImportTxt, $ausgabePfadX31)
				
			EndIf
		EndIf 
	EndIf
	
	_LV_LVAufMa_save2txt()
		
	MsgBox(64, "Export", "Export fertig.")
	
EndFunc


Func _ProcessDataFromFile()
	; Dialog zum Auswählen der Datei
	Local $sFilePath = FileOpenDialog("Bitte wählen Sie die Datei aus", "", "Textdateien (*.txt)", 1)
	If @error Then Return

	; Datei zeilenweise einlesen
	Local $hFile = FileOpen($sFilePath, $FO_READ)
	If $hFile = -1 Then
		MsgBox(16, "Fehler", "Die Datei konnte nicht geöffnet werden.")
		Return
	EndIf

	; Initialisieren der Variablen
	Local $aData
	Local $iLine = 0
	Local $iStartLine = 16
	Local $fGesamtsumme = 0.0
	Local $posDict = ObjCreate("Scripting.Dictionary")     ; Dictionary für Positionen

	; Datei Zeile für Zeile lesen
	While True
		$sLine = FileReadLine($hFile)
		If @error = -1 Then ExitLoop
		$iLine += 1

		; Beginne erst ab Zeile 16 mit der Verarbeitung
		If $iLine >= $iStartLine Then
			$aData = StringSplit($sLine, "|", $STR_NOCOUNT)

			; Prüfen, ob die Zeile genug Spalten hat (mindestens 12 Spalten, da wir bei jeder Spalte 1 abziehen)
			If IsArray($aData) And UBound($aData) >= 12 Then
				Local $sPosNummer = $aData[1]                      ; Positionnummer (Spalte 2 in der Datei, also [1] im Array)
				Local $sLeistungstext = $aData[8]                  ; Leistungskurztext (Spalte 9 in der Datei, also [8] im Array)

				; Korrigieren der Dezimaltrennzeichen von Komma zu Punkt
				Local $fMenge = Number(StringReplace($aData[10], ",", "."))                 ; Menge (Spalte 11 in der Datei, also [10] im Array)
				Local $fEinzelpreis = Number(StringReplace($aData[11], ",", "."))                 ; Einzelpreis (Spalte 12 in der Datei, also [11] im Array)
				Local $fSumme = Number(StringReplace($aData[12], ",", "."))                 ; Summe pro Zeile (Spalte 13 in der Datei, also [12] im Array)

				; Gesamtsumme aktualisieren
				$fGesamtsumme += $fSumme

				; Wenn die Position schon existiert, addiere die Werte
				If $posDict.Exists($sPosNummer) Then
					Local $aOldData = StringSplit($posDict.Item($sPosNummer), "|", $STR_NOCOUNT)
					$aOldData[0] = Number($aOldData[0]) + $fMenge
					$aOldData[1] = Number($aOldData[1]) + $fSumme
					$posDict.Item($sPosNummer) = $aOldData[0] & "|" & $aOldData[1] & "|" & $sLeistungstext & "|" & $fEinzelpreis
				Else
					$posDict.Add($sPosNummer, $fMenge & "|" & $fSumme & "|" & $sLeistungstext & "|" & $fEinzelpreis)
				EndIf
			EndIf
		EndIf
	WEnd

	FileClose($hFile)

	; Ausgabe der zusammengefassten Positionen
	ConsoleWrite("Zusammenstellung der Summen:" & @CRLF)
	For $sPosNummer In $posDict.Keys
		Local $aData = StringSplit($posDict.Item($sPosNummer), "|", $STR_NOCOUNT)
		ConsoleWrite("Position: " & $sPosNummer & " | Leistungstext: " & $aData[2] & " | Menge: " & _FormatNumber($aData[0]) & " | Einzelpreis: " & _FormatNumber($aData[3]) & " | Summe: " & _FormatNumber($aData[1]) & " EUR" & @CRLF)
	Next
	ConsoleWrite("Gesamtsumme: " & _FormatNumber($fGesamtsumme) & " EUR" & @CRLF)

	; Ausgabe in die Zwischenablage
	Local $sOutput = ""
	For $sPosNummer In $posDict.Keys
		Local $aData = StringSplit($posDict.Item($sPosNummer), "|", $STR_NOCOUNT)
		$sOutput &= "Position: " & $sPosNummer & " | Leistungstext: " & $aData[2] & " | Menge: " & _FormatNumber($aData[0]) & " | Einzelpreis: " & _FormatNumber($aData[3]) & " | Summe: " & _FormatNumber($aData[1]) & " EUR" & @CRLF
	Next
	$sOutput &= "Gesamtsumme: " & _FormatNumber($fGesamtsumme) & " EUR"
	ClipPut($sOutput)

	; Ausgabe als Array
	Local $aOutputArray = []
	For $sPosNummer In $posDict.Keys
		Local $aData = StringSplit($posDict.Item($sPosNummer), "|", $STR_NOCOUNT)
		_ArrayAdd($aOutputArray, $sPosNummer & "|" & $aData[2] & "|" & _FormatNumber($aData[0]) & "|" & _FormatNumber($aData[3]) & "|" & _FormatNumber($aData[1]))
	Next
	_ArrayDisplay($aOutputArray, "Zusammenfassung der Positionen")

EndFunc   ;==>_ProcessDataFromFile

; Hilfsfunktion zur Formatierung der Dezimalzahlen (Punkt -> Komma)
Func _FormatNumber($fNumber)
	Return StringReplace(StringFormat("%.2f", $fNumber), ".", ",")
EndFunc   ;==>_FormatNumber

