#include <GUIConstants.au3>
#Include <GuiListView.au3>
Dim $type = "REG_SZ", $succ = 0, $succComp = 0
Dim $keyVersion = "HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\INIT"
Dim $valNameVersion = "VERSION"
Dim $valVersion = "4.0"
Dim $keyLang = "HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\INIT"
Dim $valNameLang = "LANGDRIVER"
Dim $valLang = "DB850DE0"
Dim $keyLevel = "HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\TABLE CREATE"
Dim $valNameLevel = "LEVEL"
Dim $valLevel = "5"
Dim $arStatusReg[3], $status
Dim $steelblue = 0xB0C4DE, $khaki = 0xF0E68C, $violet = 0x800080, $rot = 0xFF0000
Dim $txt = @LF & @LF & "Sollten sich dBase-Dateien nicht im Excel öffnen lassen"& @LF & "(..unbekanntes Datenformat..), " & _
"so ist vermutlich eine fehlerhafte Einstellung der Borland Database Engine die Ursache." & @LF & @LF & _
"Dieses Programm überprüft die Einstellungen und paßt sie ggf. an."
Dim $txtChg = "Es müssen Einstellungen geändert werden."
Dim $txtNoChg = "Die Einstellungen sind korrekt. - Keine Änderungen."

; Start GUI
$Form1 = GUICreate("AForm1", 356, 257, -1, -1, BitOR($WS_POPUP, $WS_BORDER))
GUISetBkColor($steelblue)
$Input1 = GUICtrlCreateInput("Konfiguration der Borland Database Engine", 8, 8, 340, 22, BitOR ($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlSetFont(-1, 9, 800, 0, "Verdana")
GUICtrlSetColor(-1, $violet)
GUICtrlSetBkColor(-1, $khaki)
$Label1 = GUICtrlCreateLabel($txt, 8, 45, 340, 120, BitOR($SS_CENTER,$SS_SUNKEN))
GUICtrlSetBkColor(-1, $khaki)
$ret1 = _GUICtrlCreateColorButton("Weiter", 8, 180, 90, 25, $khaki, $violet)
$btnRun = $ret1[0]
$ret2 = _GUICtrlCreateColorButton("Abbrechen", 258, 180, 90, 25, $khaki, $violet)
$btnEnd = $ret2[0]
$Input2 = GUICtrlCreateInput("© BugFix  2007  ( Colored Button by rakudave )", 8, 226, 340, 22, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))
GUICtrlSetBkColor(-1, $khaki)
GUICtrlSetFont(-1, 9, 550, 0, "Verdana")
GUICtrlSetColor(-1, $violet)
; GUI Settings
$Form2 = GUICreate("AForm2", 365, 201, -1, -1, BitOR($WS_POPUP,$WS_BORDER))
GUISetBkColor($steelblue)
$ListView1 = GUICtrlCreateListView("Parameter|IST - Wert|SOLL - Wert", 12, 11, 337, 105, -1, BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES))
GUICtrlSetBkColor(-1, $khaki)
_GUICtrlListViewSetColumnWidth(-1, 0, 111)
_GUICtrlListViewSetColumnWidth(-1, 1, 108)
_GUICtrlListViewSetColumnWidth(-1, 2, 108)
$ListView1_0 = GUICtrlCreateListViewItem("VERSION", $ListView1)
$ListView1_1 = GUICtrlCreateListViewItem("", $ListView1)
$ListView1_2 = GUICtrlCreateListViewItem("LANGDRIVER", $ListView1)
$ListView1_3 = GUICtrlCreateListViewItem("", $ListView1)
$ListView1_4 = GUICtrlCreateListViewItem("LEVEL", $ListView1)
$Label2 = GUICtrlCreateLabel("", 12, 129, 337, 20, BitOR($SS_CENTER,$SS_CENTERIMAGE,$SS_SUNKEN))
GUICtrlSetBkColor(-1, $khaki)
GUICtrlSetColor(-1, $rot)
GUICtrlSetFont(-1, 9, 550, 0, "Verdana")
$ret3 = _GUICtrlCreateColorButton("Weiter", 12, 164, 90, 25, $khaki, $violet)
$btnWeiter = $ret3[0]
$ret4 = _GUICtrlCreateColorButton("Abbrechen", 260, 164, 90, 25, $khaki, $violet)
$btnEsc = $ret4[0]
GUISetState(@SW_SHOW, $Form1)
GUICtrlSetState(8, $GUI_FOCUS)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $btnEnd
            GUICtrlSetStyle($btnEnd, $SS_ETCHEDFRAME)
            Sleep(150)
            GUICtrlSetStyle($btnEnd, $SS_NOTIFY + $SS_GRAYRECT)
			Sleep(100)
			Exit
		Case $btnRun
            GUICtrlSetStyle($btnRun, $SS_ETCHEDFRAME)
            Sleep(150)
            GUICtrlSetStyle($btnRun, $SS_NOTIFY + $SS_GRAYRECT)	
			Sleep(100)
			_readReg()
			ExitLoop
	EndSwitch
WEnd
GUIDelete($Form1)
GUISetState(@SW_SHOW, $Form2)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $btnEsc
            GUICtrlSetStyle($btnEsc, $SS_ETCHEDFRAME)
            Sleep(150)
            GUICtrlSetStyle($btnEsc, $SS_NOTIFY + $SS_GRAYRECT)	
			Sleep(100)
			Exit
		Case $btnWeiter
            GUICtrlSetStyle($btnWeiter, $SS_ETCHEDFRAME)
            Sleep(150)
            GUICtrlSetStyle($btnWeiter, $SS_NOTIFY + $SS_GRAYRECT)	
			Sleep(100)
			If $status <> 0 Then _writeReg($arStatusReg[0], $arStatusReg[1], $arStatusReg[2])
			ExitLoop			
	EndSwitch
WEnd
Exit

Func _readReg()
Dim $var
	$var = RegRead($keyVersion, $valNameVersion)
	_GUICtrlListViewSetItemText($ListView1, 0, 1, $var)
	_GUICtrlListViewSetItemText($ListView1, 0, 2, $valVersion)
	If $var = $valVersion Then
		$arStatusReg[0] = 0
	Else
		$arStatusReg[0] = 1
	EndIf
	$var = RegRead($keyLang, $valNameLang)
	_GUICtrlListViewSetItemText($ListView1, 2, 1, $var)
	_GUICtrlListViewSetItemText($ListView1, 2, 2, $valLang)
	If $var = $valLang Then
		$arStatusReg[1] = 0
	Else
		$arStatusReg[1] = 1
	EndIf
	$var = RegRead($keyLevel, $valNameLevel)
	_GUICtrlListViewSetItemText($ListView1, 4, 1, $var)
	_GUICtrlListViewSetItemText($ListView1, 4, 2, $valLevel)
	If $var = $valLevel Then
		$arStatusReg[2] = 0
	Else
		$arStatusReg[2] = 1
	EndIf
	$status = $arStatusReg[0] + $arStatusReg[1] + $arStatusReg[2]
	If $status = 0 Then
		GUICtrlSetData($Label2, $txtNoChg)
	Else
		GUICtrlSetData($Label2, $txtChg)
	EndIf
EndFunc

Func _writeReg($ver=1, $lang=1, $level=1)
	Select
		Case $ver = 1
			$succComp += 1
			If RegWrite($keyVersion, $valNameVersion, $type, $valVersion) = 1 Then $succ += 1
		Case $lang = 1
			$succComp += 1
			If RegWrite($keyLang, $valNameLang, $type, $valLang) = 1 Then $succ += 1
		Case $level = 1
			$succComp += 1
			If RegWrite($keyLevel, $valNameLevel, $type, $valLevel) = 1 Then $succ += 1
	EndSelect
	If $succ = $succComp Then
		MsgBox(262208, "Borland Database Settings", "Änderungen erfolgreich übernommen.")
	Else
		MsgBox(262160, "Borland Database Settings", "Fehler, Änderungen konnten nicht übernommen werden!" & @LF & _
		"Bitte überprüfen Sie, ob Ihr Account über ausreichende Berechtigungen zum Ändern der Registry verfügt.")
	EndIf
EndFunc

;=============================================================================
;
; Function Name:   _GUICtrlCreateColorButton()
;
; Description:     Creates a colored Button
;
; Syntax:          _GUICtrlCreateColorButton($text, $left, $top, $width, $height,$bkcolor[,$fontcolor])
;
; Parameter(s);      $text = The text of the control
;                    $left = The left side of the control
;                    $top = The top of the control
;                    $width = The width of the control
;                    $height = The height of the control
;                    $bkcolor = Backgroundcolor of the control
;                    $fontcolor = [optional] Fontcolor of the control
;
; Return Value(s):  array[1] = used to change colors
;                   array[0] = notifies GUIGetMsg if user clicks
;
; Author:            rakudave <rakudave@gmx.net>
;=============================================================================
Func _GUICtrlCreateColorButton($text, $left, $top, $width, $height, $bkcolor, $fontcolor = -1)
    Local $colbut[2]
    If $fontcolor == -1 Then $fontcolor = 0x000000
    $colbut[0] = GUICtrlCreateLabel("", $left, $top, $width, $height, $SS_BLACKRECT)
    GUICtrlCreateLabel("", $left, $top, $width - 1, $height - 1, $SS_WHITERECT)
    GUICtrlCreateLabel("", $left + 1, $top + 1, $width - 2, $height - 2, $SS_GRAYRECT)
    $colbut[1] = GUICtrlCreateLabel($text, $left + 1, $top + 1, $width - 3, $height - 3, $SS_NOTIFY & $SS_CENTER)
    GUICtrlSetBkColor(-1, $bkcolor)
    GUICtrlSetColor(-1, $fontcolor)
	GUICtrlSetFont(-1, 9, 600, 0, "Verdana")
    Return $colbut
EndFunc ;==>_GUICtrlCreateColorButton