#include <GUIConstants.au3>
#Include <GuiTreeView.au3>

Global $GUIWidth
Global $GUIHeight

Global $oRS
Global $oConn

  $oConn = ObjCreate("ADODB.Connection")
  $oRS = ObjCreate("ADODB.Recordset")
  $oConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\MyProgs\Data\Data.mdb")

  Opt("GUIOnEventMode", 1)
  $GUIWidth = 633
  $GUIHeight = 454
  $mainwindow = GUICreate("Hauptmaske", $GUIWidth, $GUIHeight)
  $Hauptmaske_Pos = WinGetPos($mainwindow, "")   
  GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
  GUISetBkColor(0x00E0FFFF)
  GUISetFont(9, 300)

  $treeview = GUICtrlCreateTreeView (6,40,200,420,BitOr($TVS_HASBUTTONS,$TVS_HASLINES,$TVS_LINESATROOT,$TVS_DISABLEDRAGDROP,$TVS_SHOWSELALWAYS),$WS_EX_CLIENTEDGE)
  ;$Root = GUICtrlCreateTreeViewitem ("Wurzel",$treeview)

  $DialogBoxNewItem = GUICtrlCreateButton("Neues Item erstellen", 270, 250, 200)
  GUICtrlSetOnEvent($DialogBoxNewItem, "DialogBoxNewItem")

;  $ReadTree = GUICtrlCreateButton("Baum Lesen", 370, 150, 60)
;  GUICtrlSetOnEvent($ReadTree, "ReadTree")

  $ReadTxt = GUICtrlCreateButton("Baum Lesen", 270, 280, 200)
  GUICtrlSetOnEvent($ReadTxt, "ReadTxt")


  GUISwitch($mainwindow)
  GUISetState(@SW_SHOW)

  While 1
    Sleep(1000)
  WEnd

  
  
Func DialogBoxNewItem()

Global $childwin1
Global $sQuery
Global $Input88

    $childwin1 = GUICreate("Child GUI", 320, 150, $Hauptmaske_Pos[0] + 100, $Hauptmaske_Pos[1] + 100, -1, -1, $mainwindow)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

    $Label1 = GUICtrlCreateLabel("ItemName:", 25,  35,  79, 17)
    $Input88 = GUICtrlCreateInput(""    ,144,  35, 281, 21)

    ;$OKButton1 = GUICtrlCreateButton("OK", 230, 70, 80)
    ;GUICtrlSetOnEvent($OKButton1, "NewItem")
	
    $OKButton1 = GUICtrlCreateButton("OK", 230, 70, 80)
    GUICtrlSetOnEvent($OKButton1, "NewItemTXT")
	

GUISwitch($childwin1)
GUISetState(@SW_SHOW)

EndFunc



Func NewItem()
  GUISetState(@SW_SHOW)
  $CC = _GUICtrlTreeView_InsertItem($treeview,GUICtrlRead($Input88),GUICtrlSendMsg($treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0) )  
  
  ;$sQuery = "INSERT INTO Tree (`VorgängerID`,`VorgängerName`,`OrdnerName`) VALUES ('" & _GUICtrlTreeView_GetLastChild ($treeview,GUICtrlSendMsg($treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0)) & "'," & GUICtrlSendMsg($treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0) & "," & "'" & GUICtrlRead($Input88) &  "')"
  $sQuery = "INSERT INTO Tree (`VorgängerID`,`VorgängerName`,`OrdnerName`) VALUES (" & GUICtrlSendMsg($treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0) & "," & "''" &",'" & GUICtrlRead($Input88) &  "')"
   MsgBox(0,"SQLq",  $sQuery)
  $oConn.Execute($sQuery)
  _GUICtrlTreeView_Sort ($treeview)
  MsgBox(0,GUICtrlSendMsg($treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0),GUICtrlRead($Input88))
  GUISetState(@SW_HIDE)

EndFunc



Func ReadTree()
Dim $oRS
Dim $Zweig

$oConn = ObjCreate("ADODB.Connection")
$oRS = ObjCreate("ADODB.Recordset")
$oConn.Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\MyProgs\Data\Data.mdb")

  $oRS.Open("Select * FROM Tree", $oConn, 1, 3)
  $oRS.MoveFirst
  ;$Root = GUICtrlCreateTreeViewitem ("Wurzel",$treeview)
  MsgBox(0,"ROOT",$treeview)
  While Not $oRS.EOF
    If $oRS.Fields("VorgängerID").Value = 0 Then
	  $Root = GUICtrlCreateTreeViewitem ($oRS.Fields("OrdnerName").Value,3)
	Else 
      GUICtrlCreateTreeViewitem ($oRS.Fields("OrdnerName").Value,$oRS.Fields("VorgängerID").Value)
      MsgBox(0,$oRS.Fields("VorgängerID").Value,$oRS.Fields("OrdnerName").Value)
	EndIf
    $oRS.MoveNext  
  WEnd  
  $oConn.Close
  
  
EndFunc

;-----------------------------
;Funktion NewItemTXT
;-----------------------------
Func NewItemTXT()
$file = FileOpen("tree.txt", 1)

If $file = -1 Then
    MsgBox(0, "Fehler", "Datei kann nicht geöffnet werden!")
    Exit
EndIf

GUISetState(@SW_SHOW)
$CC = _GUICtrlTreeView_InsertItem($treeview,GUICtrlRead($Input88),GUICtrlSendMsg($treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0) )  
FileWriteLine($file,   FillField(GUICtrlSendMsg($treeview, $TVM_GETNEXTITEM, $TVGN_CARET, 0)) & FillField(GUICtrlRead($Input88)))

FileClose($file)
  GUISetState(@SW_HIDE)

EndFunc

;-----------------------------
;Funktion FillField
;Feste Feldlänge beim abspreichen in einer Textdatei
;-----------------------------
Func FillField($GetText)
  $i=30-StringLen($GetText)
  $Spaces=""
  For $z=1 To $i
   $Spaces=$Spaces & " "
  Next
 Return $GetText & $Spaces
EndFunc

;-----------------------------
;Funktion ReadTXT
;-----------------------------
Func ReadTXT()
$file = FileOpen("tree.txt", 0)

If $file = -1 Then
    MsgBox(0, "Fehler", "Datei kann nicht geöffnet werden!")
    Exit
EndIf

While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
	$Var1 = StringMid($Line,1,20)
	$Var2 = StringMid($Line,31,20)
	MsgBox(0,$Var1,$Var2)
Wend

FileClose($file)

EndFunc

Func CLOSEClicked()
  If @GUI_WINHANDLE = $mainwindow Then 
    MsgBox(0, "GUI Event", "Programm wird beendet!")
    Exit
  EndIf 
  If @GUI_WINHANDLE = $childwin1 Then 
    GUIDelete()
	$oConn.Close
  EndIf 
EndFunc



