#pragma +
// Name:						Window-Klassen
// Programmtyp:			Hilfsroutine für
//								Fakturierprogramm
//	Programmiersprache:	C++ (AT&T Standard 3.0)
// Computersystem:		Commodore AMIGA
// Betriebssystem:		AMIGA OS3.0 oder höher
// Autor:					Manfred Tremmel
// © Copyright:			1997-2000 by MT Graphic & Design
// Version:					V1.08
//
//    Copyright (C) 1997-2000 Manfred Tremmel
//
//    This program is free software; you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation; either version 2 of the License, or
//    (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program; if not, write to the Free Software
//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA

// Includes:
#include <new.h>
#include <intuition/intuition.h>
#include <iostream.h>
#include <stdio.h>

#include "MT-Rechnung.h"
#include "MTLocale.h"
#include "MTList.h"
#include "MTScreen.h"
#include "MTWindow.h"
#include "MTAuswert.h"
#include "MTWinLager.h"
#include "Datenbank.h"
#include "Einstellungen.h"
#include "Inventur.h"
#include "Adressen.h"
#include "Artikel.h"
#include "MTEditHook.h"
#include "MTWinSuch.h"
#include "MTWinNavi.h"
#include "MTWinModSel.h"
#include "MTWinSchnellDruck.h"
#include "LocaleStrings.h"

extern Prefs				*MyPrefsPTR;
extern Inventur			*MyInventurPTR;
extern Mitarbeiter		*MyMitarbeiterPTR;
extern Artikel				*MyArtikelPTR;
extern OpenLocaleClass	*MyLocalePTR;

extern FillAppStrings	*MyAppStringsPTR;

MTLager_Gadget::MTLager_Gadget(MTWindow *Win) : MTAuswert( Win )
{
	InventurList	= new ListenClass(65);

	First_LV			= 0;
	Select_LV		= 0;

	DB_Pos			= 1;
	DiesesJahr		= FALSE;

	GetIt				= ThisWindow->ThisScreen->FindWindow( NAVIGATOR_WINDOW );
	FindIt			= ThisWindow->ThisScreen->FindWindow( SUCHEN );
	SDWindow			= ThisWindow->ThisScreen->FindWindow( SCHNELLDRUCK_WIN );

	SuchTextFeld[0]	= INV_SU_TEXT1;
	SuchTextFeld[1]	= INV_SU_TEXT2;
	SuchTextFeld[2]	= INV_SU_TEXT3;

	ThisWindow->ShortCuts[0]		= 0;

	StartDaten(0);
};

MTLager_Gadget::~MTLager_Gadget()
{
	delete InventurList;
};

void MTLager_Gadget::StartDaten( UBYTE von )
{
	for( i = 0; i < 3; i++ )
	{
		SuchFeld[i]		= MyPrefsPTR->Daten->SuchFeld[(MyArtikelPTR->Such_DB_Nr)][von][i];
		SuchWert[i]		= MyPrefsPTR->Daten->SuchWert[(MyArtikelPTR->Such_DB_Nr)][von][i];
		VGLFeld[i]		= MyPrefsPTR->Daten->VGLFeld[(MyArtikelPTR->Such_DB_Nr)][von][i];
		strcpy(SuchText[i], MyPrefsPTR->Daten->SuchText[(MyArtikelPTR->Such_DB_Nr)][von][i]);
	}
	Verknuepf[0]		= MyPrefsPTR->Daten->Verknuepf[(MyArtikelPTR->Such_DB_Nr)][von][0];
	Verknuepf[1]		= MyPrefsPTR->Daten->Verknuepf[(MyArtikelPTR->Such_DB_Nr)][von][1];
};

void MTLager_Gadget::FillWindow()
{
	BOOL GadLocked = TRUE;

	Gesperrt = FALSE;

	if( ThisWindow->BezWin )
	{
		ThisWindow->BezWin->BezWin = ThisWindow;
		if( GetIt )
		{
			if( DB_Pos > 1 )
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[0] = ThisWindow->Fehler;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[1] = ThisWindow->Fehler;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[2] = ThisWindow->Fehler;
			}
			else
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[0] = TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[1] = TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[2] = TRUE;
			}

			if( MyInventurPTR->ElementeVorhanden() > 1 &&
				 MyInventurPTR->ElementeVorhanden() > DB_Pos )
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[3] = ThisWindow->Fehler;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[4] = ThisWindow->Fehler;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[5] = ThisWindow->Fehler;
			}
			else
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[3] = TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[4] = TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[5] = TRUE;
			}

			if( MyInventurPTR->ElementeVorhanden() < 2 ||
				 MyMitarbeiterPTR->UserDaten.Ber_Inventur == 0 )
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[6] = TRUE;
			else
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[6] = ThisWindow->Fehler;

			if( MyMitarbeiterPTR->UserDaten.Ber_Inventur == 2 )
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[7] = ThisWindow->Fehler;
				if( MyInventurPTR->ElementeVorhanden() == 0 )
					((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[8] = TRUE;
				else
					((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[8] = ThisWindow->Fehler;
			}
			else
			{
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[7] = TRUE;
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[8] = TRUE;
			}

			if( MyInventurPTR->UnDoUsed > 0 )
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[9] = ThisWindow->Fehler;
			else
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[9] = TRUE;

			if( MyInventurPTR->ReDoUsed > 0 )
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[10] = ThisWindow->Fehler;
			else
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[10] = TRUE;

			if( (MyInventurPTR->ElementeVorhanden()			== 0) ||
				 (MyMitarbeiterPTR->UserDaten.Ber_Inventur	== 0) )
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[11] = TRUE;
			else
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[11] = ThisWindow->Fehler;
			((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperren();
		}
	}

	if( ThisWindow->Fehler )
		return;

	if( MyInventurPTR->ElementeVorhanden() == 0 )
	{
		SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_KeineDaten], TAG_DONE );
		DB_Pos = 0;
		Gesperrt = TRUE;
		SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, (LONG)DB_Pos, GA_DISABLED, TRUE, TAG_DONE );
	}
	else
	{
		if( MyInventurPTR->AktElementNr == 0 )
			MyInventurPTR->GetFirstElement();
		else
			MyInventurPTR->GetElementNr( DB_Pos );
		MyInventurPTR->LesenGesamt();

		if( MyInventurPTR->Daten->Status == 0 ||
			 MyInventurPTR->Daten->Status == MyInventurPTR->GetUser() )
		{
			switch( MyMitarbeiterPTR->UserDaten.Ber_Inventur )
			{
				case 0:
					Gesperrt = TRUE;
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Sperre2], TAG_DONE );
					break;
				case 1:
					Gesperrt = TRUE;
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Sperre1], TAG_DONE );
					break;
				default:
					Gesperrt = FALSE;
					SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, "", TAG_DONE );
					break;
			}
		}
		else
		{
			Gesperrt = TRUE;
			if( MyInventurPTR->Daten->Status == 0xffff )
				SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Geloescht], TAG_DONE );
			else
				SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Parallelverarb], WARGSA_Arg0, (ULONG)MyInventurPTR->Daten->Status, TAG_DONE );
		}

		DB_Pos = MyInventurPTR->AktElementNr;
		SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, (LONG)DB_Pos, GA_DISABLED, FALSE, TAG_DONE );
	}

	SetGadgetAttrs( GetIt->gads[NAV_MAX], GetIt->Win, NULL, WARGSA_Format, "%lu", WARGSA_Arg0, (ULONG)MyInventurPTR->ElementeVorhanden(), TAG_DONE );

	if( MyInventurPTR->Daten->Datum_Ende.ds_Minute >= 0 )
		Gesperrt = TRUE;

	SetGadgetAttrs( ThisWindow->gads[INV_LV_ARTIKEL], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);
	InventurList->EntferneAlle();

	if( MyMitarbeiterPTR->UserDaten.Ber_Inventur == 0 ||
		 MyInventurPTR->ElementeVorhanden() 		== 0 )
	{
		Datum_Start[0]		= 0;
		Datum_Ende[0]		= 0;
		DiesesJahr			= FALSE;
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_SUCHEN],			ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_NR],				ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_BEZ],				ThisWindow->Win, NULL, WARGSA_Format, "", TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_MENGE_SYS],		ThisWindow->Win, NULL, WARGSA_Format, "", TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_MENGE_REAL],	ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_WERT],			ThisWindow->Win, NULL, WARGSA_Format, "", TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_SU_START],					ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_NEU],				ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_SORT],			ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_LOESCHEN],		ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_WAEHRUNG],					ThisWindow->Win, NULL,	WCYCLEA_Labels, "", GA_DISABLED, Gesperrt, TAG_DONE );
	}
	else
	{
		MyLocalePTR->FormatDateC( Datum_Start, &MyInventurPTR->Daten->Datum_Start );
		MyLocalePTR->FormatDateC( Datum_Ende, &MyInventurPTR->Daten->Datum_Ende );
		for(i = 0; i < MyInventurPTR->Daten->InvArtikelAnz; i++)
		{
			MyLocalePTR->FormatNumber( (STRPTR)Menge_Sys, MyInventurPTR->Daten->MengeSystem[i], MyPrefsPTR->Daten->Nachkomma);
			MyLocalePTR->FormatNumber( (STRPTR)Menge_Inv, MyInventurPTR->Daten->MengeInventur[i], MyPrefsPTR->Daten->Nachkomma);
			sprintf( Buffer, "%-20s %20s %20s", MyInventurPTR->ArtikelNrPlus[i], Menge_Sys, Menge_Inv);
			InventurList->NeuerNode( Buffer );
		}
		FillArtikel( FALSE );

		switch( MyPrefsPTR->Daten->ARechArt )
		{
			case 0:
				SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_NR], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahl_edh, TAG_DONE );
				break;
			case 1:
				SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_NR], ThisWindow->Win, NULL, WSTRINGA_Hook, &EAN_edh, TAG_DONE );
				break;
			default:
				SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_NR], ThisWindow->Win, NULL, WSTRINGA_Hook, &Dummy_edh, TAG_DONE );
				break;
		}

		SetGadgetAttrs( ThisWindow->gads[INV_WAEHRUNG],		ThisWindow->Win, NULL,	WCYCLEA_Labels, (ULONG)MyPrefsPTR->CycleWaehrung, WCYCLEA_Active, MyInventurPTR->Daten->Waehrung_KZ, GA_DISABLED, Gesperrt, TAG_DONE );
	}

	SetGadgetAttrs( ThisWindow->gads[INV_DATUM_BEGINN],	ThisWindow->Win, NULL,	WARGSA_Format, Datum_Start, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_DATUM_ENDE],		ThisWindow->Win, NULL,	WARGSA_Format, Datum_Ende, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_AKT_JAHR],			ThisWindow->Win, NULL,	WCHECKBOXA_Checked, DiesesJahr, GA_DISABLED, Gesperrt, TAG_DONE );

	FillSuchvor();

	SetGadgetAttrs( ThisWindow->gads[INV_ENDE],				ThisWindow->Win, NULL,	GA_DISABLED, Gesperrt, TAG_DONE );

	SetGadgetAttrs( ThisWindow->gads[INV_SU_VOR1],			ThisWindow->Win, NULL,	GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_VOR2],			ThisWindow->Win, NULL,	GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_VOR3],			ThisWindow->Win, NULL,	GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_VOR4],			ThisWindow->Win, NULL,	GA_DISABLED, Gesperrt, TAG_DONE );

	SetGadgetAttrs( ThisWindow->gads[INV_LV_ARTIKEL],		ThisWindow->Win, NULL,	WLISTVIEWA_List, &InventurList->MyList,
																											WLISTVIEWA_Top, First_LV,
																											WLISTVIEWA_Selected, Select_LV,
																											GA_DISABLED, Gesperrt,
																											TAG_DONE);
};

void MTLager_Gadget::FillSuchvor()
{
	for( i = 0; i < 3; i++ )
	{
		switch( MyArtikelPTR->Such_DB_Typ[(SuchFeld[i])] )
		{
			case 0:
			case 1:
			case 2:
			case 3:
				if( MyArtikelPTR->Such_DB_Feld[(SuchFeld[i])] )
				{
					SuchBezug[i]	= 1;
					SetGadgetAttrs( ThisWindow->gads[(SuchTextFeld[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &Dummy_edh, TAG_DONE );
				}
				else
					SuchBezug[i]	= 0;
				break;
			case 4:
			case 5:
			case 6:
			case 7:
			case 8:
			case 9:
			case 10:
				if( MyArtikelPTR->Such_DB_CS[(SuchFeld[i])] )
					SuchBezug[i]	= 2;
				else
				{
					SuchBezug[i]	= 1;
					SetGadgetAttrs( ThisWindow->gads[(SuchTextFeld[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegZahl_edh, TAG_DONE );
				}
				break;
			default:
				SuchBezug[i]		= 1;
					SetGadgetAttrs( ThisWindow->gads[(SuchTextFeld[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegZahlNK_edh, TAG_DONE );
				break;
		}
	}

	switch( SuchBezug[0] )
	{
		case 1:
			SetGadgetAttrs( ThisWindow->gads[INV_SU_TEXT1],	ThisWindow->Win, NULL,	WSTRINGA_String, SuchText[0], GA_DISABLED, Gesperrt, TAG_DONE );
			break;
		case 2:
			SetGadgetAttrs( ThisWindow->gads[INV_SU_CYCLE1], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)MyArtikelPTR->Such_DB_CS[(SuchFeld[0])], WCYCLEA_Active, SuchWert[0], GA_DISABLED, Gesperrt, TAG_DONE );
			break;
	}
	SetGadgetAttrs( ThisWindow->gads[INV_SU_EBENE1],		ThisWindow->Win, NULL,	WGROUPA_ActivePage, SuchBezug[0], TAG_DONE );

	switch( SuchBezug[1] )
	{
		case 1:
			SetGadgetAttrs( ThisWindow->gads[INV_SU_TEXT2],	ThisWindow->Win, NULL,	WSTRINGA_String, SuchText[1], GA_DISABLED, Gesperrt, TAG_DONE );
			break;
		case 2:
			SetGadgetAttrs( ThisWindow->gads[INV_SU_CYCLE2], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)MyArtikelPTR->Such_DB_CS[(SuchFeld[1])], WCYCLEA_Active, SuchWert[1], GA_DISABLED, Gesperrt, TAG_DONE );
			break;
	}
	SetGadgetAttrs( ThisWindow->gads[INV_SU_EBENE2],		ThisWindow->Win, NULL,	WGROUPA_ActivePage, SuchBezug[1], TAG_DONE );

	switch( SuchBezug[2] )
	{
		case 1:
			SetGadgetAttrs( ThisWindow->gads[INV_SU_TEXT3],	ThisWindow->Win, NULL,	WSTRINGA_String, SuchText[2], GA_DISABLED, Gesperrt, TAG_DONE );
			break;
		case 2:
			SetGadgetAttrs( ThisWindow->gads[INV_SU_CYCLE3], ThisWindow->Win, NULL,	WCYCLEA_Labels, (ULONG)MyArtikelPTR->Such_DB_CS[(SuchFeld[2])], WCYCLEA_Active, SuchWert[2], GA_DISABLED, Gesperrt, TAG_DONE );
			break;
	}
	SetGadgetAttrs( ThisWindow->gads[INV_SU_EBENE3],		ThisWindow->Win, NULL,	WGROUPA_ActivePage, SuchBezug[2], TAG_DONE );

	SetGadgetAttrs( ThisWindow->gads[INV_SU_FELD1],			ThisWindow->Win, NULL,	WCYCLEA_Labels, (ULONG)MyArtikelPTR->Such_DB_Felder_String, WCYCLEA_Active, SuchFeld[0], GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_FELD2],			ThisWindow->Win, NULL,	WCYCLEA_Labels, (ULONG)MyArtikelPTR->Such_DB_Felder_String, WCYCLEA_Active, SuchFeld[1], GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_FELD3],			ThisWindow->Win, NULL,	WCYCLEA_Labels, (ULONG)MyArtikelPTR->Such_DB_Felder_String, WCYCLEA_Active, SuchFeld[2], GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_VGL1],			ThisWindow->Win, NULL,	WCYCLEA_Active, VGLFeld[0], GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_VGL2],			ThisWindow->Win, NULL,	WCYCLEA_Active, VGLFeld[1], GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_VGL3],			ThisWindow->Win, NULL,	WCYCLEA_Active, VGLFeld[2], GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_UNDODER1],		ThisWindow->Win, NULL,	WMXA_Active, Verknuepf[0], GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SU_UNDODER2],		ThisWindow->Win, NULL,	WMXA_Active, Verknuepf[1], GA_DISABLED, Gesperrt, TAG_DONE );
};

void MTLager_Gadget::FillArtikel( BOOL Abhaengen )
{
	BOOL PosDar = TRUE;

	if( MyInventurPTR->Daten->InvArtikelAnz < 250 )
	{
		SetGadgetAttrs( ThisWindow->gads[INV_SU_START],		ThisWindow->Win, NULL,	GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_NEU],	ThisWindow->Win, NULL,	GA_DISABLED, Gesperrt, TAG_DONE );
	}
	else
	{
		SetGadgetAttrs( ThisWindow->gads[INV_SU_START],		ThisWindow->Win, NULL,	GA_DISABLED, TRUE, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_NEU],	ThisWindow->Win, NULL,	GA_DISABLED, TRUE, TAG_DONE );
	}

	if( MyInventurPTR->Daten->InvArtikelAnz == 0 )
	{
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_SORT],		ThisWindow->Win, NULL,	GA_DISABLED, TRUE, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_LOESCHEN],	ThisWindow->Win, NULL,	GA_DISABLED, TRUE, TAG_DONE );
		Menge_Sys[0]	= 0;
		Menge_Inv[0]	= 0;
		Wert_Inv[0]		= 0;
		Summe_Inv[0]	= 0;

		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_NR],				ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, PosDar, TAG_DONE );
	}
	else
	{
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_SORT],		ThisWindow->Win, NULL,	GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_LOESCHEN],	ThisWindow->Win, NULL,	GA_DISABLED, Gesperrt, TAG_DONE );

		MyLocalePTR->FormatNumber( (STRPTR)Menge_Sys, MyInventurPTR->Daten->MengeSystem[Select_LV], MyPrefsPTR->Daten->Nachkomma);
		MyLocalePTR->FormatNumber( (STRPTR)Menge_Inv, MyInventurPTR->Daten->MengeInventur[Select_LV], MyPrefsPTR->Daten->Nachkomma);
		MyLocalePTR->FormatMoney( (STRPTR)Wert_Inv,	MyInventurPTR->Daten->WertInventur[Select_LV],	MyPrefsPTR->WaehrungPTR[MyInventurPTR->Daten->Waehrung_KZ] );
		MyLocalePTR->FormatMoney( (STRPTR)Summe_Inv,	MyInventurPTR->InventurSumme,	MyPrefsPTR->WaehrungPTR[MyInventurPTR->Daten->Waehrung_KZ] );
		PosDar = Gesperrt;

		SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_NR],				ThisWindow->Win, NULL, WSTRINGA_String, MyInventurPTR->ArtikelNrPlus[Select_LV], GA_DISABLED, PosDar, TAG_DONE );
	}

	SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_SUCHEN],			ThisWindow->Win, NULL, GA_DISABLED, PosDar, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_BEZ],				ThisWindow->Win, NULL, WARGSA_Format, MyInventurPTR->ArtikelBezeich[Select_LV], TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_MENGE_SYS],		ThisWindow->Win, NULL, WARGSA_Format, Menge_Sys, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_MENGE_REAL],	ThisWindow->Win, NULL, WSTRINGA_String, Menge_Inv, GA_DISABLED, PosDar, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_WERT],			ThisWindow->Win, NULL, WARGSA_Format, Wert_Inv, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[INV_SUMME],						ThisWindow->Win, NULL, WARGSA_Format, Summe_Inv, TAG_DONE );

	if( Abhaengen )
	{
		SetGadgetAttrs( ThisWindow->gads[INV_LV_ARTIKEL],			ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);

		sprintf( Buffer, "%-20s %20s %20s", MyInventurPTR->ArtikelNrPlus[Select_LV], Menge_Sys, Menge_Inv);
		InventurList->ErsetzeNode( Buffer, Select_LV );

		SetGadgetAttrs( ThisWindow->gads[INV_LV_ARTIKEL],			ThisWindow->Win, NULL,	WLISTVIEWA_List, &InventurList->MyList,
																													WLISTVIEWA_Top, First_LV,
																													WLISTVIEWA_Selected, Select_LV,
																													GA_DISABLED, Gesperrt,
																													TAG_DONE);
	}
};

// Gadget-Auswertung:
WORD MTLager_Gadget::MTAuswertung( struct IntuiMessage* imsg, WORD DONE )
{
	class MTAuswert *AktAuswert = NULL;

	BOOL UpDate				= FALSE;
	BOOL PosFill			= FALSE;
	BOOL SperrePruefen	= FALSE;
	ULONG i, j;

	if( ThisWindow->BezWin )
		AktAuswert = ThisWindow->BezWin->FirstAuswert;

	switch( imsg->Class )
	{
		// ein Button wurde betätigt (genaugenommen losgelassen)
		case IDCMP_IDCMPUPDATE:
			if( imsg->Code	== 0xffff )
				IconNummer = imsg->Qualifier;
			else
				IconNummer = GetTagData(GA_ID,0,(struct TagItem *)imsg->IAddress);
			switch( IconNummer )
			{
				case INV_WAEHRUNG:
					i = MyInventurPTR->Daten->Waehrung_KZ;
					UpDate	= CycleAuswert( &MyInventurPTR->Daten->Waehrung_KZ );
					if( UpDate )
					{
						for( j = 0; j < MyInventurPTR->Daten->InvArtikelAnz; j++)
						{
							MyInventurPTR->Daten->WertInventur[j] = MyPrefsPTR->WaehrungUmrechnen(	MyPrefsPTR->Daten->MWSt[MyInventurPTR->Daten->ArtikelMWSt[j]],
																															MyInventurPTR->Daten->WertInventur[j],
																															i,
																															MyInventurPTR->Daten->Waehrung_KZ,
																															MyPrefsPTR->Daten->MWSt_Typ[MyInventurPTR->Daten->ArtikelMWSt[j]]);
						}
						FillWindow();
					}
					break;
				case INV_AKT_JAHR:
					DiesesJahr	= !DiesesJahr;
					break;
				// Suchfelder geändert
				case INV_SU_FELD1:
					if( CycleAuswert( &SuchFeld[0] ) )
					{
						SuchText[0][0]	= 0;
						SuchWert[0]		= 0;
						FillSuchvor();
					}
					break;
				case INV_SU_FELD2:
					if( CycleAuswert( &SuchFeld[1] ) )
					{
						SuchText[1][0]	= 0;
						SuchWert[1]		= 0;
						FillSuchvor();
					}
					break;
				case INV_SU_FELD3:
					if( CycleAuswert( &SuchFeld[2] ) )
					{
						SuchText[2][0]	= 0;
						SuchWert[2]		= 0;
						FillSuchvor();
					}
					break;
				// Vergleichsfunktion geändert
				case INV_SU_VGL1:
					CycleAuswert( &VGLFeld[0] );
					break;
				case INV_SU_VGL2:
					CycleAuswert( &VGLFeld[1] );
					break;
				case INV_SU_VGL3:
					CycleAuswert( &VGLFeld[2] );
					break;
				// Suchtext geändert
				case INV_SU_TEXT1:
					TextAuswert( SuchText[0] );
					break;
				case INV_SU_TEXT2:
					TextAuswert( SuchText[1] );
					break;
				case INV_SU_TEXT3:
					TextAuswert( SuchText[2] );
					break;
				// Suchwert Cycle-Gadget
				case INV_SU_CYCLE1:
					CycleAuswert( &i );
					SuchWert[0] = i;
					break;
				case INV_SU_CYCLE2:
					CycleAuswert( &i );
					SuchWert[1] = i;
					break;
				case INV_SU_CYCLE3:
					CycleAuswert( &i );
					SuchWert[2] = i;
					break;
				// Verknüpfung
				case INV_SU_UNDODER1:
					GetAttr(WMXA_Active, ThisWindow->gads[IconNummer], (ULONG *)&i );
					Verknuepf[0] = i;
					break;
				case INV_SU_UNDODER2:
					GetAttr(WMXA_Active, ThisWindow->gads[IconNummer], (ULONG *)&i );
					Verknuepf[1] = i;
					break;
				// Die vier verschiedenen Vorgaben
				case INV_SU_VOR1:
					StartDaten(0);
					FillSuchvor();
					break;
				case INV_SU_VOR2:
					StartDaten(1);
					FillSuchvor();
					break;
				case INV_SU_VOR3:
					StartDaten(2);
					FillSuchvor();
					break;
				case INV_SU_VOR4:
					StartDaten(3);
					FillSuchvor();
					break;
				case INV_SU_START:
					WZ_LockWindow( ThisWindow->WinHandle );
					{
						ULONG AnzArtikel = MyArtikelPTR->ElementeVorhanden() + 1;
						UBYTE *Artikel = new UBYTE[AnzArtikel];
						for(i = 0; i < AnzArtikel; Artikel[i++] == 0);

						if( DiesesJahr )
						{
							TEXT JahrAkt[5], JahrVgl[5];
							MyLocalePTR->FormatDateC( JahrAkt, "%Y" );
							MyLocalePTR->FormatDateC( JahrVgl, &MyInventurPTR->Daten->Datum_Start, "%Y" );
							for(i = MyInventurPTR->AktElementNr; (i > 0) && (strcmp(JahrAkt, JahrVgl) == 0); i--)
							{
								for(j = 0; j < MyInventurPTR->Daten->InvArtikelAnz; Artikel[(MyInventurPTR->Daten->ArtikelNr[j++])] = 1);
								MyInventurPTR->GetElementNr( (i-1) );
								MyLocalePTR->FormatDateC( JahrVgl, &MyInventurPTR->Daten->Datum_Start, "%Y" );
							}
							MyInventurPTR->GetElementNr(DB_Pos);
						}

						DataBaseSearch *Vergleichsfunktion	= new DataBaseSearch[3];
						MyArtikelPTR->SuchInit( &Vergleichsfunktion[0], SuchFeld[0], SuchText[0], SuchWert[0], VGLFeld[0] );
						MyArtikelPTR->SuchInit( &Vergleichsfunktion[1], SuchFeld[1], SuchText[1], SuchWert[1], VGLFeld[1] );
						MyArtikelPTR->SuchInit( &Vergleichsfunktion[2], SuchFeld[2], SuchText[2], SuchWert[2], VGLFeld[2] );
						ULONG Drucknummer_von		= 1;
						ULONG Drucknummer_bis		= MyArtikelPTR->ElementeVorhanden();
						BOOL Gefunden;
						j = MyInventurPTR->Daten->InvArtikelAnz;


						for( i = Drucknummer_von; ((i <= Drucknummer_bis) && (MyInventurPTR->Daten->InvArtikelAnz < 250)); i++ )
						{
							MyArtikelPTR->GetElementNr(i);

							Gefunden = FALSE;

							if( (MyArtikelPTR->Daten->Status != 0xffff) && (Artikel[i] == 0) )
							{
								if( SuchFeld[0] )
									Gefunden = MyArtikelPTR->SuchVergleich( Vergleichsfunktion );
								if( SuchFeld[1] )
								{
									if( Verknuepf[0] )
									{
										if( !Gefunden )
											Gefunden  |= MyArtikelPTR->SuchVergleich( &Vergleichsfunktion[1]  );
									}
									else
									{
										if( Gefunden )
											Gefunden  &= MyArtikelPTR->SuchVergleich( &Vergleichsfunktion[1] );
									}
								}
								if( SuchFeld[2] )
								{
									if( Verknuepf[1] )
									{
										if( !Gefunden )
											Gefunden  |= MyArtikelPTR->SuchVergleich( &Vergleichsfunktion[2] );
									}
									else
									{
										if( Gefunden )
											Gefunden  &= MyArtikelPTR->SuchVergleich( &Vergleichsfunktion[2] );
									}
								}
							}

							if( Gefunden )
								MyInventurPTR->Daten->ArtikelNr[MyInventurPTR->Daten->InvArtikelAnz++] = i;
						}
						if( MyInventurPTR->Daten->InvArtikelAnz != j )
						{
							MyInventurPTR->UpDateElement();
							FillWindow();
						}

						delete [3] Vergleichsfunktion;
						delete [AnzArtikel] Artikel;
					}
					WZ_UnlockWindow( ThisWindow->WinHandle );
					break;
				case INV_ENDE:
					WZ_LockWindow( ThisWindow->WinHandle );
					if( MyInventurPTR->Daten->InvArtikelAnz > 0 )
					{
						for(i = 0; i < MyInventurPTR->Daten->InvArtikelAnz; i++)
						{
							MyArtikelPTR->GetElementNr( MyInventurPTR->Daten->ArtikelNr[i] );
							MyArtikelPTR->Daten->AktBestand = MyInventurPTR->Daten->MengeInventur[i];
							MyArtikelPTR->UpDateElement();
						}
					}
					MyLocalePTR->AktDateTime(&MyInventurPTR->Daten->Datum_Ende);
					UpDate = TRUE;
					FillWindow();
					WZ_UnlockWindow( ThisWindow->WinHandle );
					break;
				case INV_LV_ARTIKEL:
					if( ThisWindow->Fehler )
					{
						SetGadgetAttrs( ThisWindow->gads[IconNummer], ThisWindow->Win, NULL,	WLISTVIEWA_Top, First_LV,
																													WLISTVIEWA_Selected, Select_LV,
																													TAG_DONE);
					}
					else
					{
						Select_LV = GetTagData(WLISTVIEWA_Selected,0,(struct TagItem *)imsg->IAddress);
						GetAttr(WLISTVIEWA_Top, ThisWindow->gads[IconNummer], (ULONG *)&First_LV );
						FillArtikel( FALSE )
					}
					break;
				case INV_ARTIKEL_NEU:
					SetGadgetAttrs( ThisWindow->gads[INV_LV_ARTIKEL], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);

					InventurList->NeuerNode( "" );
					Select_LV = MyInventurPTR->Daten->InvArtikelAnz++;
					FillArtikel( TRUE );
					SetGadgetAttrs( ThisWindow->gads[INV_LV_ARTIKEL], ThisWindow->Win, NULL,	WLISTVIEWA_List, &InventurList->MyList,
																WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
					GetAttr(WLISTVIEWA_Top, ThisWindow->gads[INV_LV_ARTIKEL], (ULONG *)&First_LV );
					FehlerKennzeichen		|= 1;
					SperrePruefen			= TRUE;
					PosFill					= TRUE;
					break;
				case INV_ARTIKEL_SORT:
					WZ_LockWindow( ThisWindow->WinHandle );
					MyInventurPTR->Sortieren();
					Select_LV	= 0;
					First_LV		= 0;
					FillWindow();
					WZ_UnlockWindow( ThisWindow->WinHandle );
					break;
				case INV_ARTIKEL_LOESCHEN:
					WZ_LockWindow( ThisWindow->WinHandle );
					SetGadgetAttrs( ThisWindow->gads[INV_LV_ARTIKEL], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);

					InventurList->EntferneNode( Select_LV );
					MyInventurPTR->Daten->InvArtikelAnz--;
					for(i = Select_LV; i < MyInventurPTR->Daten->InvArtikelAnz; i++)
					{
						MyInventurPTR->Daten->ArtikelNr[i]		= MyInventurPTR->Daten->ArtikelNr[i+1];
						MyInventurPTR->Daten->ArtikelMWSt[i]	= MyInventurPTR->Daten->ArtikelMWSt[i+1];
						MyInventurPTR->Daten->MengeSystem[i]	= MyInventurPTR->Daten->MengeSystem[i+1];
						MyInventurPTR->Daten->MengeInventur[i]	= MyInventurPTR->Daten->MengeInventur[i+1];
						MyInventurPTR->Daten->WertInventur[i]	= MyInventurPTR->Daten->WertInventur[i+1];
						strcpy( MyInventurPTR->ArtikelNrPlus[i],  MyInventurPTR->ArtikelNrPlus[i+1] );
						strcpy( MyInventurPTR->ArtikelBezeich[i], MyInventurPTR->ArtikelBezeich[i+1] );
					}

					if( Select_LV > 0 )
						Select_LV--;
					if( First_LV < Select_LV )
						First_LV = Select_LV;

					FillArtikel( TRUE );
					UpDate = TRUE;
					WZ_UnlockWindow( ThisWindow->WinHandle );
					break;
				case INV_ARTIKEL_SUCHEN:
					((MTSuch_Gadget *)FindIt->FirstAuswert)->AktDB			= MyArtikelPTR;

					ThisWindow->ThisScreen->ExclusiveAuswertung( FindIt );
					if( ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos )
						MyAppStringsPTR->GetCSVWert( ((MTSuch_Gadget *)FindIt->FirstAuswert)->SelectPosText, Buffer, MyPrefsPTR->Daten->ARechArt );
					else
						IconNummer = INV_ARTIKEL_NR;
					// kein break!!!
				case INV_ARTIKEL_NR:
					if( IconNummer == INV_ARTIKEL_NR )
					{
						GetAttr(WSTRINGA_String, ThisWindow->gads[IconNummer], (ULONG *)&TextPTR );
						strcpy( Buffer, TextPTR );
					}

					if( (FehlerKennzeichen == 0) && strcmp( Buffer, MyInventurPTR->ArtikelNrPlus[Select_LV] ) == 0 )
						UpDate = FALSE;
					else				
					{
						if( (*Buffer == 0) || MyArtikelPTR->ArtikelLesen( Buffer, MyPrefsPTR->Daten->ARechArt, 0L ) )
						{
							if( *Buffer )
								MyInventurPTR->Daten->ArtikelNr[Select_LV]	= MyArtikelPTR->AktElementNr;
							else
								MyInventurPTR->Daten->ArtikelNr[Select_LV]	= 0;
							UpDate	= TRUE;

							FehlerKennzeichen &= (0xffffffff - 1);

							if( MyArtikelPTR->Daten->Status == 0xffff )
								FehlerKennzeichen |= 2;
							else
								FehlerKennzeichen &= (0xffffffff - 2);
						}
						else
							FehlerKennzeichen |= 1;
					}
					SperrePruefen	= UpDate;
					PosFill			= UpDate;
					break;
				case INV_ARTIKEL_MENGE_REAL:
					UpDate			= DoubleAuswert( &MyInventurPTR->Daten->MengeInventur[Select_LV], MyPrefsPTR->Daten->Nachkomma );
					PosFill			= UpDate;
					break;
			}
			if( UpDate )
			{
				MyInventurPTR->UpDateElement();
				if( GetIt )
				{
					if( MyInventurPTR->UnDoUsed > 0 )
						((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[9] = FALSE;
					else
						((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[9] = TRUE;

					if( MyInventurPTR->ReDoUsed > 0 )
						((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[10] = FALSE;
					else
						((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[10] = TRUE;
					((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperren();
				}
				UpDate = FALSE;
			}
			if( PosFill )
				FillArtikel( TRUE );
			break;
		// Window Aktiviert
		case IDCMP_ACTIVEWINDOW:
			if( ThisWindow->ShortCuts[0] == 0 )
			{
				GetAttr(WLABELA_Label, ThisWindow->gads[INV_ARTIKEL_LABEL], (ULONG *)&TextPTR );
				ThisWindow->ShortCuts[0]		= GetHotKey(TextPTR,0);
				ThisWindow->ShortCutIcon[0]	= INV_ARTIKEL_NR;
				ThisWindow->ShortCutKarte[0]	= 0;
				ThisWindow->ShortCuts[1]		= 0;

				SetGadgetAttrs( ThisWindow->gads[INV_ARTIKEL_MENGE_REAL], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
			}
			FillWindow();
			break;
		// Window schliessen
		case IDCMP_CLOSEWINDOW:
			if( ThisWindow->BezWin )
			{
				ThisWindow->BezWin->BezWin = NULL;
				if( GetIt )
				{
					((MTNav_Gadget *)(GetIt->FirstAuswert))->AlleSperren();
					SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, 0, GA_DISABLED, TRUE, TAG_DONE );
					SetGadgetAttrs( GetIt->gads[NAV_MAX], GetIt->Win, NULL, WARGSA_Format, "", TAG_DONE );
				}
			}
			break;
		case IDCMP_RAWKEY:
			switch( imsg->Code )
			{
				case 76:
					if( !ThisWindow->Fehler && Select_LV > 0)
					{
						Select_LV--;
						if( First_LV > Select_LV )
							First_LV = Select_LV;
						FillArtikel( TRUE );
					}
					break;
				case 77:
					if( !ThisWindow->Fehler && Select_LV < (InventurList->Anzahl - 1) )
					{
						Select_LV++;
						SetGadgetAttrs( ThisWindow->gads[INV_LV_ARTIKEL], ThisWindow->Win, NULL,
																	WLISTVIEWA_Visible, Select_LV, WLISTVIEWA_Selected, Select_LV, TAG_DONE);
						GetAttr(WLISTVIEWA_Top, ThisWindow->gads[INV_LV_ARTIKEL], (ULONG *)&First_LV );
						FillArtikel( FALSE );
					}
					break;
				case 0:
					if( GetAttr(WINTEGERA_Long, GetIt->gads[NAV_NUMMER], (ULONG *)&LongWert ) )
					{
						if( LongWert > MyInventurPTR->ElementeVorhanden() )
							LongWert = MyInventurPTR->ElementeVorhanden();
						if( LongWert < 1 )
							LongWert = 1;
						MyInventurPTR->GetElementNr( (ULONG)LongWert );
						UpDate = TRUE;
					}
					break;
				case 1:
					if( SDWindow )
					{
						((MTSDruck_Gadget *)(SDWindow->FirstAuswert))->AktDB		= MyInventurPTR;
						ThisWindow->ThisScreen->ExclusiveAuswertung( SDWindow );
					}
					break;
			}
			if( ( imsg->Qualifier & IEQUALIFIER_LSHIFT ) ||
				 ( imsg->Qualifier & IEQUALIFIER_RSHIFT ) ||
				 ( imsg->Qualifier & IEQUALIFIER_LALT ) ||
				 ( imsg->Qualifier & IEQUALIFIER_RALT ))
			{
				if( imsg->Code > 79 &&
					 imsg->Code < 90 )
				{
					while( AktAuswert )
					{
						DONE = AktAuswert->MTAuswertung( imsg, DONE );
						AktAuswert = AktAuswert->NextAusw;
					}
				}
			}
			else
			{
				switch( imsg->Code )
				{
					case 80:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[0] )
						{
							MyInventurPTR->GetFirstElement();
							UpDate = TRUE;
						}
						break;
					case 81:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[1] )
						{
							MyInventurPTR->Get10PrevElement();
							UpDate = TRUE;
						}
						break;
					case 82:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[2] )
						{
							MyInventurPTR->GetPrevElement();
							UpDate = TRUE;
						}
						break;
					case 83:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[3] )
						{
							MyInventurPTR->GetNextElement();
							UpDate = TRUE;
						}
						break;
					case 84:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[4] )
						{
							MyInventurPTR->Get10NextElement();
							UpDate = TRUE;
						}
						break;
					case 85:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[5] )
						{
							MyInventurPTR->GetLastElement();
							UpDate = TRUE;
						}
						break;
					case 86:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[6] )
						{
							((MTSuch_Gadget *)FindIt->FirstAuswert)->AktDB			= MyInventurPTR;
						
							ThisWindow->ThisScreen->ExclusiveAuswertung( FindIt );
							if( ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos > 0)
							{
								MyInventurPTR->GetElementNr( ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos );
								UpDate = TRUE;
							}
						}
						break;
					case 87:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[7] )
						{
							MyInventurPTR->NeuerDatensatz();
							UpDate = TRUE;
							if( ((MTMS_Gadget *)(ThisWindow->BezWin->FirstAuswert))->Sperrkennzeichen[1] )
							{
								((MTMS_Gadget *)(ThisWindow->BezWin->FirstAuswert))->Sperrkennzeichen[1] = FALSE;
								((MTMS_Gadget *)(ThisWindow->BezWin->FirstAuswert))->Sperren();
							}
						}
						break;
					case 89:
						if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[8] )
						{
							MyInventurPTR->LoeschenAkt();
							UpDate = TRUE;
						}
						break;
				}
			}
			break;
		case IDCMP_VANILLAKEY:
			if( !ThisWindow->Fehler )
			{
				switch( imsg->Code )
				{
					case (ULONG)'#':
						ActivateWindow( GetIt->Win );
						ActivateGadget( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL);
						break;
					case (ULONG)'u':
						MyInventurPTR->UnDo();
						UpDate = TRUE;
						break;
					case (ULONG)'U':
						MyInventurPTR->ReDo();
						UpDate = TRUE;
						break;
					case 27:
						DONE	= 1;
						if( GetIt && ThisWindow->BezWin )
						{
							ThisWindow->BezWin->BezWin = NULL;
							((MTNav_Gadget *)(GetIt->FirstAuswert))->AlleSperren();
							SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, 0, GA_DISABLED, TRUE, TAG_DONE );
							SetGadgetAttrs( GetIt->gads[NAV_MAX], GetIt->Win, NULL, WARGSA_Format, "", TAG_DONE );
						}
						break;
				}
			}
			break;
	}

	if( FehlerKennzeichen || ThisWindow->Fehler )
	{
		if( FehlerKennzeichen > 0 ) 
		{
			ThisWindow->Fehler = TRUE;
			if( FehlerKennzeichen & 1 )
			{
				IconNummer	= INV_ARTIKEL_NR;
				SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Artikel], TAG_DONE );
				if( MyInventurPTR->Daten->ArtikelNr[Select_LV] > 0 )
					DisplayBeep(ThisWindow->ThisScreen->ThisScreen);
				ThisWindow->Karte		= 0;
			}
			else if( FehlerKennzeichen & 2)
			{
				IconNummer	= INV_ARTIKEL_NR;
				SetGadgetAttrs( GetIt->gads[NAV_HINWEIS], GetIt->Win, NULL, WARGSA_Format, AppStrings[MSG_FEHL_Geloescht], TAG_DONE );
				DisplayBeep(ThisWindow->ThisScreen->ThisScreen);
			}

			if( !ActivateGadget( ThisWindow->gads[IconNummer], ThisWindow->Win, NULL) )
			{
				GetIt->MTOpenWindow();
				ThisWindow->MTOpenWindow();
				ActivateGadget( ThisWindow->gads[IconNummer], ThisWindow->Win, NULL);
			}
			else
				FillWindow();
		}
		else
		{
			ThisWindow->Fehler = FALSE;
			FillWindow();
		}
	}

	if( UpDate )
	{
		DB_Pos			= MyInventurPTR->AktElementNr;
		First_LV			= 0;
		Select_LV		= 0;
		DiesesJahr		= FALSE;
		StartDaten(0);
		FillWindow();
	}
	return DONE;
};

