#Region - TimeStamp
; 2011-10-08 22:24:40   v 1.0
#EndRegion - TimeStamp

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>

Opt('GUIOnEventMode', 1)
Local $aResult, $iRows, $iColumns
Local $sDB = @ScriptDir & '\PLZ_BuLa.db'
If Not FileExists($sDB) Then Exit MsgBox(0, 'Fehler', 'Datei: "PLZ_BuLa.db" befindet sich nicht im Skriptordner.')

$GUI = GUICreate("PLZ - Zuordnung Bundesland", 360, 111, 192, 124)
GUISetBkColor(0x4876FF)
GUISetOnEvent(-3, '_exit')
GUICtrlCreateLabel("PLZ", 80, 59, 33, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Bundesland", 24, 19, 89, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$inBuLand = GUICtrlCreateInput("", 128, 15, 200, 28, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_READONLY))
GUICtrlSetBkColor(-1, 0xFFEC8B)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$inPLZ = GUICtrlCreateInput("", 128, 54, 60, 28, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER,$ES_NUMBER))
GUICtrlSetBkColor(-1, 0xF0FFF0)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")

ToolTip('')
GUISetState()

GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

_SQLite_Startup ()
_SQLite_Open($sDB)

While True
	Sleep(50)
WEnd

Func _exit()
	_SQLite_Shutdown()
	Exit
EndFunc

Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
	Local Static $fShow = 0
    Local $iIDFrom, $iCode, $hWndEdit, $sRead, $index
    $hWndEdit = GUICtrlGetHandle($inPLZ)
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $ilParam
        Case $hWndEdit
            Switch $iCode
				Case $EN_CHANGE
					$sRead = GUICtrlRead($iIDFrom)
					If StringLen($sRead) < 5 Then
						If $fShow Then
							GUICtrlSetData($inBuLand, '')
							$fShow = 0
						EndIf
						Return $GUI_RUNDEFMSG
					ElseIf StringLen($sRead) = 5 Then
						_SQLite_GetTable(-1, "SELECT bula FROM tabelle WHERE plz = '" & $sRead & "';", $aResult, $iRows, $iColumns)
						If $iRows Then
							GUICtrlSetData($inBuLand, $aResult[2])
						Else
							GUICtrlSetData($inBuLand, 'Keine gültige Postleitzahl!')
						EndIf
						$fShow = 1
					Else
						GUICtrlSetData($iIDFrom, StringLeft($sRead, 5))
					EndIf
			EndSwitch
	EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND