#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 "MTWinArt.h"
#include "Datenbank.h"
#include "Einstellungen.h"
#include "Adressen.h"
#include "Artikel.h"
#include "Versand.h"
#include "RechnungArtikel.h"
#include "KontenPos.h"
#include "MTEditHook.h"
#include "MTWinSuch.h"
#include "MTWinNavi.h"
#include "MTWinSchnellDruck.h"
#include "LocaleStrings.h"

// Surface-Pointer
extern APTR	surface;

extern Prefs 				*MyPrefsPTR;
extern Artikel				*MyArtikelPTR;
extern Adress				*MyAdressPTR;
extern Versand				*MyVersandPTR;
extern Lieferanten		*MyLieferantPTR;
extern Mitarbeiter		*MyMitarbeiterPTR;
extern RechnungArtikel	*MyARechnungArtikelPTR;
extern RechnungArtikel	*MyERechnungArtikelPTR;
extern OpenLocaleClass	*MyLocalePTR;
extern KontenPos			*MyKontenPosPTR;

extern FillAppStrings	*MyAppStringsPTR;

MTArt_Gadget::MTArt_Gadget(MTWindow *Win) : MTAuswert( Win )
{
	KundMengList		= new ListenClass(40);
	KundPreisList		= new ListenClass(40);
	LiefMengList		= new ListenClass(40);
	LiefPreisList		= new ListenClass(40);
	HaendMengList		= new ListenClass(40);
	HaendPreisList		= new ListenClass(40);
	ErsatzMengeList	= new ListenClass(40);
	ErsatzArtList		= new ListenClass(20);
	ErsatzBezList		= new ListenClass(40);

	First_LV[0]			= 0;
	Select_LV[0]		= 0;
	First_LV[1]			= 0;
	Select_LV[1]		= 0;
	First_LV[2]			= 0;
	Select_LV[2]		= 0;
	First_LV[3]			= 0;
	Select_LV[3]		= 0;

	UmRech[0]			= FALSE;
	UmRech[1]			= FALSE;
	UmRech[2]			= FALSE;

	FehlerKennzeichen = 0;

	DB_Pos				= 1;

	RechArtNeu			= FALSE;
	ExklusivAuswert	= FALSE;

	for( ULONG i = 0; i < 10; i++)
	{
		KundMengList->NeuerNode( "" );
		KundPreisList->NeuerNode( "" );
		LiefMengList->NeuerNode( "" );
		LiefPreisList->NeuerNode( "" );
		HaendMengList->NeuerNode( "" );
		HaendPreisList->NeuerNode( "" );
		ErsatzMengeList->NeuerNode( "" );
		ErsatzArtList->NeuerNode( "" );
		ErsatzBezList->NeuerNode( "" );
	}

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

	ThisWindow->ShortCuts[0]		= 0;

	ZuAbMerkTab[0]			= ART_UMR_ZUAB1;
	ZuAbMerkTab[1]			= ART_UMR_ZUAB2;
	ZuAbMerkTab[2]			= ART_UMR_ZUAB3;
	ZuAbMerkTab[3]			= ART_UMR_ZUAB4;
	ZuAbMerkTab[4]			= ART_UMR_ZUAB5;
	ZuAbMerkTab[5]			= ART_UMR_ZUAB6;
	ZuAbMerkWertTab[0]	= ART_UMR_ZUABWERT1;
	ZuAbMerkWertTab[1]	= ART_UMR_ZUABWERT2;
	ZuAbMerkWertTab[2]	= ART_UMR_ZUABWERT3;
	ZuAbMerkWertTab[3]	= ART_UMR_ZUABWERT4;
	ZuAbMerkWertTab[4]	= ART_UMR_ZUABWERT5;
	ZuAbMerkWertTab[5]	= ART_UMR_ZUABWERT6;
};

MTArt_Gadget::~MTArt_Gadget()
{
	delete KundMengList;
	delete KundPreisList;
	delete LiefMengList;
	delete LiefPreisList;
	delete HaendMengList;
	delete HaendPreisList;
	delete ErsatzMengeList;
	delete ErsatzArtList;
	delete ErsatzBezList;
};

void MTArt_Gadget::FillWindow()
{
	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( MyArtikelPTR->ElementeVorhanden() > 1 &&
				 MyArtikelPTR->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( MyArtikelPTR->ElementeVorhanden() < 2 ||
				 MyMitarbeiterPTR->UserDaten.Ber_Artikel == 0 )
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[6] = TRUE;
			else
				((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[6] = ThisWindow->Fehler;

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

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

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

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

			((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperren();

			SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, GA_DISABLED, ThisWindow->Fehler, TAG_DONE );
		}
	}

	SetGadgetAttrs( ThisWindow->gads[ART_PREIS_ERSATZ], ThisWindow->Win, NULL, WGROUPA_ActivePage, ThisWindow->Karte, TAG_DONE );

	if( ThisWindow->Fehler )
		return;

	if( RechArtNeu )
	{
		MyArtikelPTR->NeuerDatensatz();
		RechArtNeu			= FALSE;
		ExklusivAuswert	= TRUE;
		DB_Pos				= MyArtikelPTR->AktElementNr;
		ActivateGadget( ThisWindow->gads[ART_BEZEICH], ThisWindow->Win, NULL);
	}
	if( MyArtikelPTR->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( MyArtikelPTR->AktElementNr == 0 )
			MyArtikelPTR->GetFirstElement();
		else
			MyArtikelPTR->GetElementNr( DB_Pos );

		if( MyArtikelPTR->Daten->Status == 0 ||
			 MyArtikelPTR->Daten->Status == MyArtikelPTR->GetUser() )
		{
			switch( MyMitarbeiterPTR->UserDaten.Ber_Artikel )
			{
				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( MyArtikelPTR->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)MyArtikelPTR->Daten->Status, TAG_DONE );
		}
		DB_Pos = MyArtikelPTR->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)MyArtikelPTR->ElementeVorhanden(), TAG_DONE );

	if( MyMitarbeiterPTR->UserDaten.Ber_Artikel == 0 )
	{
		SetGadgetAttrs( ThisWindow->gads[ART_NUMMER2], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_EAN], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LIEFERANT], ThisWindow->Win, NULL, WINTEGERA_Long, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LIEFERANT_SUCHEN], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		LiefBezStr[0]	= 0;
		SetGadgetAttrs( ThisWindow->gads[ART_NR_LIEF], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_BEZEICH], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_ARTGRP], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_MWST], ThisWindow->Win, NULL, WCYCLEA_Labels, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_MENGENEINHEIT], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		GewichtStr[0]	= 0;
		SetGadgetAttrs( ThisWindow->gads[ART_BUCHUNGSKONTO_EIN], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_BUCHUNGSKONTO_AUS], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_BESTANDSFUEHR], ThisWindow->Win, NULL, WCHECKBOXA_Checked, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		VorMengeStr[0]	= 0;
		ResMengeStr[0] = 0;
		BestandStr[0]	= 0;
		BesMengeStr[0]	= 0;
		SetGadgetAttrs( ThisWindow->gads[ART_MIN_MENGE], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_MITBEST_MENGE], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_SOLL_BESTAND], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_VP_GROESSE], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_VPL_GROESSE], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_ZUSATZTEXT], ThisWindow->Win, NULL, WSTRINGFIELDA_Text, "", GA_DISABLED, Gesperrt, TAG_DONE );
	}
	else
	{
		SetGadgetAttrs( ThisWindow->gads[ART_NUMMER2], ThisWindow->Win, NULL, WSTRINGA_String, &MyArtikelPTR->Daten->Artikelnr, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_EAN], ThisWindow->Win, NULL, WSTRINGA_String, &MyArtikelPTR->Daten->EAN, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LIEFERANT], ThisWindow->Win, NULL, WINTEGERA_Long, (LONG)MyArtikelPTR->Daten->Lieferant, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LIEFERANT_SUCHEN], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
		if( MyArtikelPTR->Daten->Lieferant )
		{
			MyLieferantPTR->GetElementNr( MyArtikelPTR->Daten->Lieferant );
			MyAdressPTR->GetElementNr( MyLieferantPTR->Daten->Adresse );
			MyAdressPTR->Anschrift( 0, NULL, LiefBezStr, FALSE, NULL );
		}
		else
			LiefBezStr[0] = 0;
		SetGadgetAttrs( ThisWindow->gads[ART_NR_LIEF], ThisWindow->Win, NULL, WSTRINGA_String, &MyArtikelPTR->Daten->LiefArtNr, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_BEZEICH], ThisWindow->Win, NULL, WSTRINGA_String, &MyArtikelPTR->Daten->Artikelbez, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_ARTGRP], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)MyPrefsPTR->CycleArtGrp, WCYCLEA_Active, MyArtikelPTR->Daten->ArtikelGruppe,GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_MWST], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)MyPrefsPTR->CycleMWSt, WCYCLEA_Active, MyArtikelPTR->Daten->MWSt, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_MENGENEINHEIT], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)MyPrefsPTR->CycleME, WCYCLEA_Active, MyArtikelPTR->Daten->Mengeneinheit, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( (STRPTR)GewichtStr, MyArtikelPTR->Daten->Gewicht, MyPrefsPTR->Daten->Nachkomma);
		SetGadgetAttrs( ThisWindow->gads[ART_BUCHUNGSKONTO_EIN], ThisWindow->Win, NULL, WCYCLEA_Labels, MyKontenPosPTR->CycleKonto, WCYCLEA_Active, MyKontenPosPTR->ToCycle(MyArtikelPTR->Daten->Konto_Eingang), GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_BUCHUNGSKONTO_AUS], ThisWindow->Win, NULL, WCYCLEA_Labels, MyKontenPosPTR->CycleKonto, WCYCLEA_Active, MyKontenPosPTR->ToCycle(MyArtikelPTR->Daten->Konto_Ausgang), GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_BESTANDSFUEHR], ThisWindow->Win, NULL, WCYCLEA_Active, MyArtikelPTR->Daten->Bestandsf, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( (STRPTR)VorMengeStr, MyArtikelPTR->Daten->VorgemerkteMenge, MyPrefsPTR->Daten->Nachkomma);
		MyLocalePTR->FormatNumber( (STRPTR)ResMengeStr, MyArtikelPTR->Daten->ReservierteMenge, MyPrefsPTR->Daten->Nachkomma);
		MyLocalePTR->FormatNumber( (STRPTR)BestandStr, MyArtikelPTR->Daten->AktBestand, MyPrefsPTR->Daten->Nachkomma);
		MyLocalePTR->FormatNumber( (STRPTR)BesMengeStr, MyArtikelPTR->Daten->BestellMenge, MyPrefsPTR->Daten->Nachkomma);
		MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->MinBestand, MyPrefsPTR->Daten->Nachkomma);
		SetGadgetAttrs( ThisWindow->gads[ART_MIN_MENGE], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->MitbestellBestand, MyPrefsPTR->Daten->Nachkomma);
		SetGadgetAttrs( ThisWindow->gads[ART_MITBEST_MENGE], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->SolBestand, MyPrefsPTR->Daten->Nachkomma);
		SetGadgetAttrs( ThisWindow->gads[ART_SOLL_BESTAND], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->Verpackung, MyPrefsPTR->Daten->Nachkomma);
		SetGadgetAttrs( ThisWindow->gads[ART_VP_GROESSE], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->VerpackungLief, MyPrefsPTR->Daten->Nachkomma);
		SetGadgetAttrs( ThisWindow->gads[ART_VPL_GROESSE], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_ZUSATZTEXT], ThisWindow->Win, NULL, WSTRINGFIELDA_Text, MyArtikelPTR->Daten->Zusatz, GA_DISABLED, Gesperrt, TAG_DONE );
	}
	SetGadgetAttrs( ThisWindow->gads[ART_LIEF_BEZ],		ThisWindow->Win, NULL, WARGSA_Format, LiefBezStr, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_GEWICHT],		ThisWindow->Win, NULL, WSTRINGA_String, GewichtStr, GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_VOR_MENGE],	ThisWindow->Win, NULL, WARGSA_Format, VorMengeStr, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_RES_MENGE],	ThisWindow->Win, NULL, WARGSA_Format, ResMengeStr, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_BESTAND],		ThisWindow->Win, NULL, WARGSA_Format, BestandStr, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_BEST_MENGE],	ThisWindow->Win, NULL, WARGSA_Format, BesMengeStr, TAG_DONE );

	FillEbene1();
	FillEbene2();
	FillEbene3();
	FillEbene4();
	FillEbene5();
};

void MTArt_Gadget::FillEbene1()
{
	SetGadgetAttrs( ThisWindow->gads[ART_LV_KMENGE], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_KPREIS], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);

	if( MyMitarbeiterPTR->UserDaten.Ber_Artikel == 0 )
	{
		SetGadgetAttrs( ThisWindow->gads[ART_KWAEHRUNG], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)"", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_KUMRECH], ThisWindow->Win, NULL, WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );

		for( i = 0; i < 10; i++)
		{
			KundMengList->ErsetzeNode( "", i );
			KundPreisList->ErsetzeNode( "", i );
		}

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

		SetGadgetAttrs( ThisWindow->gads[ART_KZUABTYP1], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_KZUABTYP2], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_KZUABTYP3], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_KZUABWERT1], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_KZUABWERT2], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_KZUABWERT3], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
	}
	else
	{
		ULONG ZuAbMerkTab[3] = {ART_KZUABWERT1, ART_KZUABWERT2, ART_KZUABWERT3};
		SetGadgetAttrs( ThisWindow->gads[ART_KWAEHRUNG], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)MyPrefsPTR->CycleWaehrung, WCYCLEA_Active, MyArtikelPTR->Daten->Waehrung_KZ, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_KUMRECH], ThisWindow->Win, NULL, WCHECKBOXA_Checked, UmRech[0], GA_DISABLED, Gesperrt, TAG_DONE );

		for( i = 0; i < 10; i++ )
		{
			MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->KMinMenge[i], MyPrefsPTR->Daten->Nachkomma);
			KundMengList->ErsetzeNode( (STRPTR)Buffer, i );

			MyLocalePTR->FormatMoney( (STRPTR)Buffer, MyArtikelPTR->Daten->KPreis[i], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->Waehrung_KZ] );
			KundPreisList->ErsetzeNode( (STRPTR)Buffer, i );
		}

		MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->KPreisEinheit, MyPrefsPTR->Daten->Nachkomma);
		SetGadgetAttrs( ThisWindow->gads[ART_KPE], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[ART_KZUABTYP1], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->KZuAbNummer[0], GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_KZUABTYP2], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->KZuAbNummer[1], GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_KZUABTYP3], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->KZuAbNummer[2], GA_DISABLED, Gesperrt, TAG_DONE );
		for( i = 0; i < 3; i++ )
		{
			if( MyArtikelPTR->Daten->KZuAbNummer[i] == 0)
				SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
			else
			{
				switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->KZuAbNummer[i] - 1)] )
				{
					case 0:
					case 5:
						MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->KZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent );
						SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
						break;
					default:
						MyLocalePTR->FormatMoney( Buffer, MyArtikelPTR->Daten->KZuAbWert[i], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->Waehrung_KZ] );
						SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosWaehr_edh, TAG_DONE );
						break;
				}
				SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
			}
		}
	}

	SetGadgetAttrs( ThisWindow->gads[ART_KMENGE], ThisWindow->Win, NULL, WSTRINGA_String, KundMengList->SucheNode( Select_LV[0] ), GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_KPREIS], ThisWindow->Win, NULL, WSTRINGA_String, KundPreisList->SucheNode( Select_LV[0] ), GA_DISABLED, Gesperrt, TAG_DONE );

	SetGadgetAttrs( ThisWindow->gads[ART_LV_KMENGE], ThisWindow->Win, NULL, WLISTVIEWA_List, &KundMengList->MyList,
																									WLISTVIEWA_Top, First_LV[0],
																									WLISTVIEWA_Selected, Select_LV[0],
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_KPREIS], ThisWindow->Win, NULL, WLISTVIEWA_List, &KundPreisList->MyList,
																									WLISTVIEWA_Top, First_LV[0],
																									WLISTVIEWA_Selected, Select_LV[0],
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
}

void MTArt_Gadget::FillEbene2()
{
	SetGadgetAttrs( ThisWindow->gads[ART_LV_HMENGE], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_HPREIS], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);

	if( MyMitarbeiterPTR->UserDaten.Ber_Artikel == 0 )
	{
		SetGadgetAttrs( ThisWindow->gads[ART_HWAEHRUNG], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)"", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_HUMRECH], ThisWindow->Win, NULL, WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );

		for( i = 0; i < 10; i++)
		{
			HaendMengList->ErsetzeNode( "", i );
			HaendPreisList->ErsetzeNode( "", i );
		}

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

		SetGadgetAttrs( ThisWindow->gads[ART_HZUABTYP1], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_HZUABTYP2], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_HZUABTYP3], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_HZUABWERT1], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_HZUABWERT2], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_HZUABWERT3], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
	}
	else
	{
		ULONG ZuAbMerkTab[3] = {ART_HZUABWERT1, ART_HZUABWERT2, ART_HZUABWERT3};

		SetGadgetAttrs( ThisWindow->gads[ART_HWAEHRUNG], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)MyPrefsPTR->CycleWaehrung, WCYCLEA_Active, MyArtikelPTR->Daten->HWaehrung_KZ, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_HUMRECH], ThisWindow->Win, NULL, WCHECKBOXA_Checked, UmRech[1], GA_DISABLED, Gesperrt, TAG_DONE );

		for( i = 0; i < 10; i++ )
		{
			MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->HMinMenge[i], MyPrefsPTR->Daten->Nachkomma);
			HaendMengList->ErsetzeNode( (STRPTR)Buffer, i );

			MyLocalePTR->FormatMoney( (STRPTR)Buffer, MyArtikelPTR->Daten->HPreis[i], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->HWaehrung_KZ] );
			HaendPreisList->ErsetzeNode( (STRPTR)Buffer, i );
		}

		MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->HPreisEinheit, MyPrefsPTR->Daten->Nachkomma);
		SetGadgetAttrs( ThisWindow->gads[ART_HPE], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[ART_HZUABTYP1], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->KZuAbNummer[0], GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_HZUABTYP2], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->KZuAbNummer[1], GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_HZUABTYP3], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->KZuAbNummer[2], GA_DISABLED, Gesperrt, TAG_DONE );
		for( i = 0; i < 3; i++ )
		{
			if( MyArtikelPTR->Daten->HZuAbNummer[i] == 0)
				SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
			else
			{
				switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->HZuAbNummer[i] - 1)] )
				{
					case 0:
					case 5:
						MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->HZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent );
						SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
						break;
					default:
						MyLocalePTR->FormatMoney( Buffer, MyArtikelPTR->Daten->HZuAbWert[i], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->HWaehrung_KZ] );
						SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosWaehr_edh, TAG_DONE );
						break;
				}
				SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
			}
		}
	}

	SetGadgetAttrs( ThisWindow->gads[ART_HMENGE], ThisWindow->Win, NULL, WSTRINGA_String, HaendMengList->SucheNode( Select_LV[1] ), GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_HPREIS], ThisWindow->Win, NULL, WSTRINGA_String, HaendPreisList->SucheNode( Select_LV[1] ), GA_DISABLED, Gesperrt, TAG_DONE );

	SetGadgetAttrs( ThisWindow->gads[ART_LV_HMENGE], ThisWindow->Win, NULL, WLISTVIEWA_List, &HaendMengList->MyList,
																									WLISTVIEWA_Top, First_LV[1],
																									WLISTVIEWA_Selected, Select_LV[1],
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_HPREIS], ThisWindow->Win, NULL, WLISTVIEWA_List, &HaendPreisList->MyList,
																									WLISTVIEWA_Top, First_LV[1],
																									WLISTVIEWA_Selected, Select_LV[1],
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
}

void MTArt_Gadget::FillEbene3()
{
	SetGadgetAttrs( ThisWindow->gads[ART_LV_LMENGE], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_LPREIS], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);

	if( MyMitarbeiterPTR->UserDaten.Ber_Artikel == 0 )
	{
		SetGadgetAttrs( ThisWindow->gads[ART_LWAEHRUNG], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)"", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LUMRECH], ThisWindow->Win, NULL, WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );

		for( i = 0; i < 10; i++)
		{
			LiefMengList->ErsetzeNode( "", i );
			LiefPreisList->ErsetzeNode( "", i );
		}

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

		SetGadgetAttrs( ThisWindow->gads[ART_LZUABTYP1], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LZUABTYP2], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LZUABTYP3], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LZUABWERT1], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LZUABWERT2], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LZUABWERT3], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
	}
	else
	{
		ULONG ZuAbMerkTab[3] = {ART_LZUABWERT1, ART_LZUABWERT2, ART_LZUABWERT3};

		SetGadgetAttrs( ThisWindow->gads[ART_LWAEHRUNG], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)MyPrefsPTR->CycleWaehrung, WCYCLEA_Active, MyArtikelPTR->Daten->LWaehrung_KZ, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LUMRECH], ThisWindow->Win, NULL, WCHECKBOXA_Checked, UmRech[2], GA_DISABLED, Gesperrt, TAG_DONE );

		for( i = 0; i < 10; i++ )
		{
			MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->LMinMenge[i], MyPrefsPTR->Daten->Nachkomma);
			LiefMengList->ErsetzeNode( (STRPTR)Buffer, i );

			MyLocalePTR->FormatMoney( (STRPTR)Buffer, MyArtikelPTR->Daten->LPreis[i], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->LWaehrung_KZ] );
			LiefPreisList->ErsetzeNode( (STRPTR)Buffer, i );
		}

		MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->LPreisEinheit, MyPrefsPTR->Daten->Nachkomma);
		SetGadgetAttrs( ThisWindow->gads[ART_LPE], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[ART_LZUABTYP1], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->LZuAbNummer[0], GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LZUABTYP2], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->LZuAbNummer[1], GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_LZUABTYP3], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->LZuAbNummer[2], GA_DISABLED, Gesperrt, TAG_DONE );
		for( i = 0; i < 3; i++ )
		{
			if( MyArtikelPTR->Daten->LZuAbNummer[i] == 0)
				SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
			else
			{
				switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->LZuAbNummer[i] - 1)] )
				{
					case 0:
					case 5:
						MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->LZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent );
						SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
						break;
					default:
						MyLocalePTR->FormatMoney( Buffer, MyArtikelPTR->Daten->LZuAbWert[i], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->LWaehrung_KZ] );
						SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosWaehr_edh, TAG_DONE );
						break;
				}
				SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
			}
		}
	}

	SetGadgetAttrs( ThisWindow->gads[ART_LMENGE], ThisWindow->Win, NULL, WSTRINGA_String, LiefMengList->SucheNode( Select_LV[2] ), GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_LPREIS], ThisWindow->Win, NULL, WSTRINGA_String, LiefPreisList->SucheNode( Select_LV[2] ), GA_DISABLED, Gesperrt, TAG_DONE );

	SetGadgetAttrs( ThisWindow->gads[ART_LV_LMENGE], ThisWindow->Win, NULL, WLISTVIEWA_List, &LiefMengList->MyList,
																									WLISTVIEWA_Top, First_LV[2],
																									WLISTVIEWA_Selected, Select_LV[2],
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_LPREIS], ThisWindow->Win, NULL, WLISTVIEWA_List, &LiefPreisList->MyList,
																									WLISTVIEWA_Top, First_LV[2],
																									WLISTVIEWA_Selected, Select_LV[2],
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
}

void MTArt_Gadget::FillEbene4()
{
	ULONG ErsatzartikelMerker[10];

	SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZMENGE], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZART], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZBEZ], ThisWindow->Win, NULL, WLISTVIEWA_List, NULL, TAG_DONE);

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

	if( MyMitarbeiterPTR->UserDaten.Ber_Artikel == 0 )
	{
		for( i = 0; i < 10; i++)
		{
			ErsatzMengeList->ErsetzeNode( "", i );
			ErsatzArtList->ErsetzeNode( "", i );
			ErsatzBezList->ErsetzeNode( "", i );
		}
	}
	else
	{
		for( i = 0; i < 10; i++ )
		{
			MyLocalePTR->FormatNumber( (STRPTR)Buffer, MyArtikelPTR->Daten->ErsatzMenge[i], MyPrefsPTR->Daten->Nachkomma);
			ErsatzMengeList->ErsetzeNode( (STRPTR)Buffer, i );

			ErsatzartikelMerker[i] = MyArtikelPTR->Daten->ErsatzArtikel[i];
		}

		for( i = 0; i < 10; i++ )
		{
			if( ErsatzartikelMerker[i] == 0 )
			{
				ErsatzBezList->ErsetzeNode( "", i );
				ErsatzArtList->ErsetzeNode( "", i );
			}
			else
			{
				MyArtikelPTR->GetElementNr( ErsatzartikelMerker[i] );
				ErsatzBezList->ErsetzeNode( MyArtikelPTR->Daten->Artikelbez, i );

				MyArtikelPTR->ArtikelNrErmitteln( Buffer, MyPrefsPTR->Daten->ARechArt );
				ErsatzArtList->ErsetzeNode( (STRPTR)Buffer, i );
			}
		}
		MyArtikelPTR->GetElementNr( DB_Pos );
	}

	SetGadgetAttrs( ThisWindow->gads[ART_ERSATZMENGE], ThisWindow->Win, NULL, WSTRINGA_String, ErsatzMengeList->SucheNode( Select_LV[3] ), GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_ERSATZART], ThisWindow->Win, NULL, WSTRINGA_String, ErsatzArtList->SucheNode( Select_LV[3] ), GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_ERSATZ_SUCHEN], ThisWindow->Win, NULL, GA_DISABLED, Gesperrt, TAG_DONE );
	SetGadgetAttrs( ThisWindow->gads[ART_ERSATZBEZ], ThisWindow->Win, NULL, WARGSA_Format, ErsatzBezList->SucheNode( Select_LV[3] ), TAG_DONE );

	SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZMENGE], ThisWindow->Win, NULL, WLISTVIEWA_List, &ErsatzMengeList->MyList,
																									WLISTVIEWA_Top, First_LV[3],
																									WLISTVIEWA_Selected, Select_LV[3],
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZART], ThisWindow->Win, NULL, WLISTVIEWA_List, &ErsatzArtList->MyList,
																									WLISTVIEWA_Top, First_LV[3],
																									WLISTVIEWA_Selected, Select_LV[3],
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
	SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZBEZ], ThisWindow->Win, NULL, WLISTVIEWA_List, &ErsatzBezList->MyList,
																									WLISTVIEWA_Top, First_LV[3],
																									WLISTVIEWA_Selected, Select_LV[3],
																									GA_DISABLED, Gesperrt,
																									TAG_DONE);
}

void MTArt_Gadget::FillEbene5()
{
	SetGadgetAttrs( ThisWindow->gads[ART_UMR_EBENE], ThisWindow->Win, NULL, WGROUPA_ActivePage, UmrechKarte, TAG_DONE );

	if( MyMitarbeiterPTR->UserDaten.Ber_Prefs == 0 )
	{
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_KH], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_KL], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_HK], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_HL], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_LK], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_LH], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );

		for( i = 0; i < 6; i++ )
		{
			SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WCYCLEA_Labels, "", WCYCLEA_Active, 0, GA_DISABLED, Gesperrt, TAG_DONE );
			SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkWertTab[i])], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		}

		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDEN1], ThisWindow->Win, NULL,	WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDEN2], ThisWindow->Win, NULL,	WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDEN3], ThisWindow->Win, NULL,	WCHECKBOXA_Checked, FALSE, GA_DISABLED, Gesperrt, TAG_DONE );

		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON1], ThisWindow->Win, NULL,	WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON2], ThisWindow->Win, NULL,	WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON3], ThisWindow->Win, NULL,	WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON4], ThisWindow->Win, NULL,	WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS1], ThisWindow->Win, NULL,	WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS2], ThisWindow->Win, NULL,	WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS3], ThisWindow->Win, NULL,	WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS4], ThisWindow->Win, NULL,	WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU1], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU2], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU3], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU4], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, Gesperrt, TAG_DONE );
	}
	else
	{
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_KH], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, MyArtikelPTR->Daten->Umrech_KH, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_KL], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, MyArtikelPTR->Daten->Umrech_KL, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_HK], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, MyArtikelPTR->Daten->Umrech_HK, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_HL], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, MyArtikelPTR->Daten->Umrech_HL, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_LK], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, MyArtikelPTR->Daten->Umrech_LK, GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_LH], ThisWindow->Win, NULL,		WCHECKBOXA_Checked, MyArtikelPTR->Daten->Umrech_LH, GA_DISABLED, Gesperrt, TAG_DONE );

		for( i = 0; i < 6; i++ )
		{
			SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkTab[i])], ThisWindow->Win, NULL, WCYCLEA_Labels, MyPrefsPTR->CycleZuAb, WCYCLEA_Active, MyArtikelPTR->Daten->Umrech_ZuAb[i], GA_DISABLED, Gesperrt, TAG_DONE );

			if( MyArtikelPTR->Daten->Umrech_ZuAb[i] == 0)
				SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkWertTab[i])], ThisWindow->Win, NULL, WSTRINGA_String, "", GA_DISABLED, TRUE, TAG_DONE );
			else
			{
				switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->Umrech_ZuAb[i] - 1)] )
				{
					case 0:
					case 5:
						MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_ZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent );
						SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkWertTab[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
						break;
					default:
						if( i < 3 )
							MyLocalePTR->FormatMoney( Buffer, MyArtikelPTR->Daten->Umrech_ZuAbWert[i], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->LWaehrung_KZ] );
						else
							MyLocalePTR->FormatMoney( Buffer, MyArtikelPTR->Daten->Umrech_ZuAbWert[i], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->HWaehrung_KZ] );
						SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkWertTab[i])], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosWaehr_edh, TAG_DONE );
						break;
				}
				SetGadgetAttrs( ThisWindow->gads[(ZuAbMerkWertTab[i])], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
			}
		}

		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDEN1], ThisWindow->Win, NULL,	WCHECKBOXA_Checked, MyArtikelPTR->Daten->Umrech_Runden[0], GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDEN2], ThisWindow->Win, NULL,	WCHECKBOXA_Checked, MyArtikelPTR->Daten->Umrech_Runden[1], GA_DISABLED, Gesperrt, TAG_DONE );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDEN3], ThisWindow->Win, NULL,	WCHECKBOXA_Checked, MyArtikelPTR->Daten->Umrech_Runden[2], GA_DISABLED, Gesperrt, TAG_DONE );

		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenVon[0], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON1], ThisWindow->Win, NULL,	WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenVon[1], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON2], ThisWindow->Win, NULL,	WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenVon[2], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON3], ThisWindow->Win, NULL,	WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenVon[3], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON4], ThisWindow->Win, NULL,	WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );

		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenBis[0], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS1], ThisWindow->Win, NULL,	WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenBis[1], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS2], ThisWindow->Win, NULL,	WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenBis[2], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS3], ThisWindow->Win, NULL,	WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenBis[3], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS4], ThisWindow->Win, NULL,	WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );

		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenZu[0], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU1], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenZu[1], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU2], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenZu[2], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU3], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
		MyLocalePTR->FormatNumber( Buffer, MyArtikelPTR->Daten->Umrech_RundenZu[3], MyLocalePTR->Thislocale->loc_MonFracDigits );
		SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU4], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
	}
};

// Artikel sortieren
void MTArt_Gadget::ArtikelSortiern( STRPTR DBSuchFeld )
{
	ULONG Positionen = MyArtikelPTR->ElementeVorhanden();
	struct EasyStruct es = {	(ULONG)sizeof(struct EasyStruct),
										0L,
										(UBYTE *)AppStrings[MSG_ReQuest_Info],
										(UBYTE *)AppStrings[MSG_ReQuest_ArtSort],
										(UBYTE *)AppStrings[MSG_ReQuest_JaNein] };

	if( Positionen > 1 )
	{
		WZ_LockWindows( surface );

		if( EasyRequest( ThisWindow->Win, &es, NULL ) == 1 )
		{
			ULONG Satzlaenge	= sizeof(ArtikelDaten);

			ULONG Links			= 1;
			ULONG Rechts		= Positionen;
			ULONG StackL[255], StackR[255], Tiefe = 0;
			ULONG l, r, i;

			ULONG*	Positionsmerker	= new ULONG[Positionen + 1];
			ULONG*	Positionsmerker2	= new ULONG[Positionen + 1];
			STRPTR	Hilfe_Artikel		= new TEXT[Satzlaenge];
			STRPTR	Hilfe_Artikel2		= new TEXT[Satzlaenge];

			TEXT		Grenze[20];


			for( l = 0; l <= Positionen; l++ )
			{
				Positionsmerker[l] = l;
			}

			while ((Links < Rechts) || (Tiefe != 0))
			{
				if (Links < Rechts)
				{
					MyArtikelPTR->GetElementNr( (Links + (Rechts - Links) / 2) );
					strcpy(Grenze, DBSuchFeld);
					l = Links;
					r = Rechts;
					while (l < r)
					{
						MyArtikelPTR->GetElementNr( l );
						while ((strcmp(DBSuchFeld, Grenze) < 0) && (l <= Rechts))
						{
							MyArtikelPTR->GetElementNr( ++l );
						}

						MyArtikelPTR->GetElementNr( r );
						while ((strcmp(DBSuchFeld, Grenze) > 0) && (r >= Links))
						{
							MyArtikelPTR->GetElementNr( --r );
						}

						if( l <= r )
						{
							if( l != r )
							{
								memcpy( (void *)Hilfe_Artikel, (const void *)MyArtikelPTR->Daten, (size_t)Satzlaenge );

								MyArtikelPTR->GetElementNr( l );
								memcpy( (void *)Hilfe_Artikel2, (const void *)MyArtikelPTR->Daten, (size_t)Satzlaenge );
								memcpy( (void *)MyArtikelPTR->Daten, (const void *)Hilfe_Artikel, (size_t)Satzlaenge );
								MyArtikelPTR->DataBase::UpDateElement();

								MyArtikelPTR->GetElementNr( r );
								memcpy( (void *)MyArtikelPTR->Daten, (const void *)Hilfe_Artikel2, (size_t)Satzlaenge );
								MyArtikelPTR->DataBase::UpDateElement();

								i									= Positionsmerker[r];
								Positionsmerker[r]			= Positionsmerker[l];
								Positionsmerker[l]			= i;
							}

							l++;
							r--;
						}
					}
					if ((r - Links) > (Rechts - l))
					{
						StackL[Tiefe] = l;
						StackR[Tiefe] = Rechts;
						Tiefe++;
						Rechts = r;
					}
					else
					{
						StackL[Tiefe] = Links;
						StackR[Tiefe] = r;
						Tiefe++;
						Links = l;
					}
				}
				else
				{
					Tiefe--;
					Links = StackL[Tiefe];
					Rechts = StackR[Tiefe];
				}
			}

			BOOL Fertig = TRUE;
			for( i = 0; (i <= Positionen) && Fertig; i++ )
			{
				if( Positionsmerker[i] != i )
					Fertig = FALSE;
			}

			if( !Fertig )
			{
				for( i = 0; i <= Positionen; i++ )
				{
					Positionsmerker2[(Positionsmerker[i])] = i;
				}

				MyArtikelPTR->GetFirstElement();
				for( l = 1; l <= Positionen; l++ )
				{
					Fertig = FALSE;
					for(i = 0; i < 10; i++ )
					{
						if( MyArtikelPTR->Daten->ErsatzArtikel[i] != Positionsmerker2[MyArtikelPTR->Daten->ErsatzArtikel[i]] )
						{
							MyArtikelPTR->Daten->ErsatzArtikel[i]	= Positionsmerker2[MyArtikelPTR->Daten->ErsatzArtikel[i]];
							Fertig = TRUE;
						}
					}
					if( Fertig )
						MyArtikelPTR->DataBase::UpDateElement();
					MyArtikelPTR->GetNextElement();
				}

				MyVersandPTR->GetFirstElement();
				for( l = 1; l <= MyVersandPTR->ElementeVorhanden(); l++ )
				{
					Fertig = FALSE;
					for(i = 0; i < 10; i++ )
					{
						if( MyVersandPTR->Daten->Artikel[i] != Positionsmerker2[MyVersandPTR->Daten->Artikel[i]] )
						{
							MyVersandPTR->Daten->Artikel[i]	= Positionsmerker2[MyVersandPTR->Daten->Artikel[i]];
							Fertig = TRUE;
						}
					}
					if( Fertig )
						MyVersandPTR->DataBase::UpDateElement();
					MyVersandPTR->GetNextElement();
				}

				MyARechnungArtikelPTR->GetFirstElement();
				for( l = 1; l <= MyARechnungArtikelPTR->ElementeVorhanden(); l++ )
				{
					if( MyARechnungArtikelPTR->Daten->Artikelnummer != Positionsmerker2[MyARechnungArtikelPTR->Daten->Artikelnummer] )
					{
						MyARechnungArtikelPTR->Daten->Artikelnummer = Positionsmerker2[MyARechnungArtikelPTR->Daten->Artikelnummer];
						MyARechnungArtikelPTR->UpDateElement();
					}
					MyARechnungArtikelPTR->DataBase::GetNextElement();
				}

				MyERechnungArtikelPTR->GetFirstElement();
				for( l = 1; l <= MyERechnungArtikelPTR->ElementeVorhanden(); l++ )
				{
					if( MyERechnungArtikelPTR->Daten->Artikelnummer != Positionsmerker2[MyERechnungArtikelPTR->Daten->Artikelnummer] )
					{
						MyERechnungArtikelPTR->Daten->Artikelnummer = Positionsmerker2[MyERechnungArtikelPTR->Daten->Artikelnummer];
						MyERechnungArtikelPTR->UpDateElement();
					}
					MyERechnungArtikelPTR->DataBase::GetNextElement();
				}
			}

			delete [Satzlaenge] Hilfe_Artikel2;
			delete [Satzlaenge] Hilfe_Artikel;
			delete [Positionen + 1] Positionsmerker2;
			delete [Positionen + 1] Positionsmerker;

			FillWindow();
		}

		WZ_UnlockWindows( surface );
	}
};

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

	BOOL UpDate = FALSE;
	BOOL Fuellen= FALSE;
	BOOL Ebene1 = FALSE;
	BOOL Ebene2 = FALSE;
	BOOL Ebene3 = FALSE;
	BOOL Ebene4 = FALSE;
	BOOL Ebene5 = FALSE;

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

	switch( imsg->Class )
	{
		// Menu angewählt
		case IDCMP_MENUPICK:
			if( ThisWindow->Fehler )
				DisplayBeep(ThisWindow->ThisScreen->ThisScreen);
			else
			{
				switch( imsg->Code )
				{
					case ART_SORT_NR2:
						ArtikelSortiern( MyArtikelPTR->Daten->Artikelnr );
						break;
					case ART_SORT_EAN:
						ArtikelSortiern( MyArtikelPTR->Daten->EAN );
						break;
				}
			}
			break;

		// 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 ART_NUMMER2:
					UpDate = TextAuswert( MyArtikelPTR->Daten->Artikelnr );
					break;
				case ART_EAN:
					UpDate = TextAuswert( MyArtikelPTR->Daten->EAN );
					break;
				case ART_LIEFERANT_SUCHEN:
					((MTSuch_Gadget *)FindIt->FirstAuswert)->AktDB			= MyLieferantPTR;
						
					ThisWindow->ThisScreen->ExclusiveAuswertung( FindIt );
					if( ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos )
					{
						MyArtikelPTR->Daten->Lieferant = ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos;
						SetGadgetAttrs( ThisWindow->gads[ART_LIEFERANT], ThisWindow->Win, NULL, WINTEGERA_Long, (LONG)MyArtikelPTR->Daten->Lieferant, TAG_DONE );
						UpDate = TRUE;
					}
					// kein break!!!
				case ART_LIEFERANT:
					if( IconNummer == ART_LIEFERANT )
						UpDate = LongAuswert( &MyArtikelPTR->Daten->Lieferant );
					if( UpDate )
					{
						if( MyArtikelPTR->Daten->Lieferant > MyLieferantPTR->ElementeVorhanden() )
							 MyArtikelPTR->Daten->Lieferant = MyLieferantPTR->ElementeVorhanden();
						if( MyArtikelPTR->Daten->Lieferant < 1 )
						{
							MyArtikelPTR->Daten->Lieferant = 0;
							LiefBezStr[0] = 0;
						}
						else
						{
							MyLieferantPTR->GetElementNr( MyArtikelPTR->Daten->Lieferant );
							MyAdressPTR->GetElementNr( MyLieferantPTR->Daten->Adresse );
							MyAdressPTR->Anschrift( 0, NULL, LiefBezStr, FALSE, NULL );
						}
						SetGadgetAttrs( ThisWindow->gads[ART_LIEF_BEZ], ThisWindow->Win, NULL, WARGSA_Format, LiefBezStr, TAG_DONE );
						Ebene5 = TRUE;
					}
					break;
				case ART_NR_LIEF:
					UpDate = TextAuswert( MyArtikelPTR->Daten->LiefArtNr );
					break;
				case ART_BEZEICH:
					UpDate = TextAuswert( MyArtikelPTR->Daten->Artikelbez );
					break;
				case ART_ARTGRP:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->ArtikelGruppe );
					break;
				case ART_MWST:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->MWSt );
					break;
				case ART_MENGENEINHEIT:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->Mengeneinheit );
					break;
				case ART_GEWICHT:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Gewicht, MyPrefsPTR->Daten->Nachkomma );
					break;
				case ART_BUCHUNGSKONTO_EIN:
					i = MyKontenPosPTR->ToCycle(MyArtikelPTR->Daten->Konto_Eingang);
					UpDate = CycleAuswert( &i );
					MyArtikelPTR->Daten->Konto_Eingang = MyKontenPosPTR->FromCycle( i );
					break;
				case ART_BUCHUNGSKONTO_AUS:
					i = MyKontenPosPTR->ToCycle(MyArtikelPTR->Daten->Konto_Ausgang);
					UpDate = CycleAuswert( &i );
					MyArtikelPTR->Daten->Konto_Ausgang = MyKontenPosPTR->FromCycle( i );
					break;
				case ART_BESTANDSFUEHR:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->Bestandsf );
					break;
				case ART_MIN_MENGE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->MinBestand, MyPrefsPTR->Daten->Nachkomma );
					break;
				case ART_MITBEST_MENGE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->MitbestellBestand, MyPrefsPTR->Daten->Nachkomma );
					break;
				case ART_SOLL_BESTAND:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->SolBestand, MyPrefsPTR->Daten->Nachkomma );
					break;
				case ART_VP_GROESSE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Verpackung, MyPrefsPTR->Daten->Nachkomma );
					break;
				case ART_VPL_GROESSE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->VerpackungLief, MyPrefsPTR->Daten->Nachkomma );
					break;
				case ART_ZUSATZTEXT:
					UpDate = TextFeldAuswert( MyArtikelPTR->Daten->Zusatz );
					break;
				case ART_PREIS_ERSATZ:
					GetAttr(WGROUPA_ActivePage, ThisWindow->gads[IconNummer], (ULONG *)&ThisWindow->Karte );
					if( ThisWindow->Karte == 5 )
						ActivateGadget( ThisWindow->gads[ART_ZUSATZTEXT], ThisWindow->Win, NULL);
					break;
				case ART_KPE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->KPreisEinheit, MyPrefsPTR->Daten->Nachkomma );
					if( MyArtikelPTR->Daten->KPreisEinheit == 0.0 )
						Ebene1 = TRUE;
					break;
				case ART_HPE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->HPreisEinheit, MyPrefsPTR->Daten->Nachkomma );
					if( MyArtikelPTR->Daten->HPreisEinheit == 0.0 )
						Ebene1 = TRUE;
					break;
				case ART_LPE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->LPreisEinheit, MyPrefsPTR->Daten->Nachkomma );
					if( MyArtikelPTR->Daten->LPreisEinheit == 0.0 )
						Ebene1 = TRUE;
					break;
				case ART_KWAEHRUNG:
					i			= MyArtikelPTR->Daten->Waehrung_KZ;
					UpDate	= CycleAuswert( &MyArtikelPTR->Daten->Waehrung_KZ );
					if( UpDate && UmRech[0] )
					{
						for(j = 0; j < 10; j++)
						{
							MyArtikelPTR->Daten->KPreis[j]	= MyPrefsPTR->WaehrungUmrechnen(	MyPrefsPTR->Daten->MWSt[MyArtikelPTR->Daten->MWSt],
																													MyArtikelPTR->Daten->KPreis[j],
																													i,
																													MyArtikelPTR->Daten->Waehrung_KZ,
																													MyPrefsPTR->Daten->MWSt_Typ[MyArtikelPTR->Daten->MWSt]);
							
						}
						for( j = 0; j < 3; j++ )
						{
							if( MyArtikelPTR->Daten->KZuAbNummer[j] )
							{
								switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->KZuAbNummer[j] - 1)] )
								{
									case 0:
									case 5:
										break;
									default:
										MyArtikelPTR->Daten->KZuAbWert[j] = MyPrefsPTR->WaehrungUmrechnen(	MyPrefsPTR->Daten->MWSt[MyArtikelPTR->Daten->MWSt],
																																	MyArtikelPTR->Daten->KZuAbWert[j],
																																	i,
																																	MyArtikelPTR->Daten->Waehrung_KZ,
																																	MyPrefsPTR->Daten->MWSt_Typ[MyArtikelPTR->Daten->MWSt]);
										break;
								}
							}
						}
					}
					Ebene1	= UpDate;
					break;
				case ART_HWAEHRUNG:
					i			= MyArtikelPTR->Daten->HWaehrung_KZ;
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->HWaehrung_KZ );
					if( UpDate && UmRech[1] )
					{
						for(j = 0; j < 10; j++)
						{
							MyArtikelPTR->Daten->HPreis[j]	= MyPrefsPTR->WaehrungUmrechnen(	MyPrefsPTR->Daten->MWSt[MyArtikelPTR->Daten->MWSt],
																													MyArtikelPTR->Daten->HPreis[j],
																													i,
																													MyArtikelPTR->Daten->HWaehrung_KZ,
																													MyPrefsPTR->Daten->MWSt_Typ[MyArtikelPTR->Daten->MWSt]);
							
						}
						for( j = 0; j < 3; j++ )
						{
							if( MyArtikelPTR->Daten->HZuAbNummer[j] )
							{
								switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->HZuAbNummer[j] - 1)] )
								{
									case 0:
									case 5:
										break;
									default:
										MyArtikelPTR->Daten->HZuAbWert[j] = MyPrefsPTR->WaehrungUmrechnen(	MyPrefsPTR->Daten->MWSt[MyArtikelPTR->Daten->MWSt],
																																	MyArtikelPTR->Daten->HZuAbWert[j],
																																	i,
																																	MyArtikelPTR->Daten->HWaehrung_KZ,
																																	MyPrefsPTR->Daten->MWSt_Typ[MyArtikelPTR->Daten->MWSt]);
										break;
								}
							}
						}
					}
					for( j = 3; j < 6; j++ )
					{
						if( MyArtikelPTR->Daten->Umrech_ZuAb[j] )
						{
							switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->Umrech_ZuAb[j] - 1)] )
							{
								case 0:
								case 5:
									break;
								default:
									MyArtikelPTR->Daten->Umrech_ZuAbWert[j] = MyPrefsPTR->WaehrungUmrechnen(	MyPrefsPTR->Daten->MWSt[MyArtikelPTR->Daten->MWSt],
																																		MyArtikelPTR->Daten->Umrech_ZuAbWert[j],
																																		i,
																																		MyArtikelPTR->Daten->LWaehrung_KZ,
																																		MyPrefsPTR->Daten->MWSt_Typ[MyArtikelPTR->Daten->MWSt]);

									MyLocalePTR->FormatMoney( Buffer, MyArtikelPTR->Daten->Umrech_ZuAbWert[j], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->HWaehrung_KZ] );
									SetGadgetAttrs( ThisWindow->gads[ZuAbMerkWertTab[j]], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
									break;
							}
						}
					}
					Ebene2 = UpDate;
					break;
				case ART_LWAEHRUNG:
					i			= MyArtikelPTR->Daten->LWaehrung_KZ;
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->LWaehrung_KZ );
					if( UpDate && UmRech[2] )
					{
						for(j = 0; j < 10; j++)
						{
							MyArtikelPTR->Daten->LPreis[j]	= MyPrefsPTR->WaehrungUmrechnen(	MyPrefsPTR->Daten->MWSt[MyArtikelPTR->Daten->MWSt],
																													MyArtikelPTR->Daten->LPreis[j],
																													i,
																													MyArtikelPTR->Daten->LWaehrung_KZ,
																													MyPrefsPTR->Daten->MWSt_Typ[MyArtikelPTR->Daten->MWSt]);
							
						}
						for( j = 0; j < 3; j++ )
						{
							if( MyArtikelPTR->Daten->LZuAbNummer[j] )
							{
								switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->LZuAbNummer[j] - 1)] )
								{
									case 0:
									case 5:
										break;
									default:
										MyArtikelPTR->Daten->LZuAbWert[j] = MyPrefsPTR->WaehrungUmrechnen(	MyPrefsPTR->Daten->MWSt[MyArtikelPTR->Daten->MWSt],
																																	MyArtikelPTR->Daten->LZuAbWert[j],
																																	i,
																																	MyArtikelPTR->Daten->LWaehrung_KZ,
																																	MyPrefsPTR->Daten->MWSt_Typ[MyArtikelPTR->Daten->MWSt]);
										break;
								}
							}
						}
					}
					for( j = 0; j < 3; j++ )
					{
						if( MyArtikelPTR->Daten->Umrech_ZuAb[j] )
						{
							switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->Umrech_ZuAb[j] - 1)] )
							{
								case 0:
								case 5:
									break;
								default:
									MyArtikelPTR->Daten->Umrech_ZuAbWert[j] = MyPrefsPTR->WaehrungUmrechnen(	MyPrefsPTR->Daten->MWSt[MyArtikelPTR->Daten->MWSt],
																																		MyArtikelPTR->Daten->Umrech_ZuAbWert[j],
																																		i,
																																		MyArtikelPTR->Daten->LWaehrung_KZ,
																																		MyPrefsPTR->Daten->MWSt_Typ[MyArtikelPTR->Daten->MWSt]);

									MyLocalePTR->FormatMoney( Buffer, MyArtikelPTR->Daten->Umrech_ZuAbWert[j], MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->LWaehrung_KZ] );
									SetGadgetAttrs( ThisWindow->gads[ZuAbMerkWertTab[j]], ThisWindow->Win, NULL, WSTRINGA_String, Buffer, GA_DISABLED, Gesperrt, TAG_DONE );
									break;
							}
						}
					}
					Ebene3 = UpDate;
					break;
				case ART_KUMRECH:
					UmRech[0]	= !UmRech[0];
					break;
				case ART_HUMRECH:
					UmRech[1]	= !UmRech[1];
					break;
				case ART_LUMRECH:
					UmRech[2]	= !UmRech[2];
					break;
				case ART_LV_KMENGE:
				case ART_LV_KPREIS:
					Select_LV[0] = GetTagData(WLISTVIEWA_Selected,0,(struct TagItem *)imsg->IAddress);
					GetAttr(WLISTVIEWA_Top, ThisWindow->gads[IconNummer], (ULONG *)&First_LV[0] );
					SetGadgetAttrs( ThisWindow->gads[ART_LV_KMENGE], ThisWindow->Win, NULL,
																									WLISTVIEWA_Top, First_LV[0], WLISTVIEWA_Selected, Select_LV[0], TAG_DONE);
					SetGadgetAttrs( ThisWindow->gads[ART_LV_KPREIS], ThisWindow->Win, NULL,
																									WLISTVIEWA_Top, First_LV[0], WLISTVIEWA_Selected, Select_LV[0], TAG_DONE);
					SetGadgetAttrs( ThisWindow->gads[ART_KMENGE], ThisWindow->Win, NULL, WSTRINGA_String, KundMengList->SucheNode( Select_LV[0] ), TAG_DONE );
					SetGadgetAttrs( ThisWindow->gads[ART_KPREIS], ThisWindow->Win, NULL, WSTRINGA_String, KundPreisList->SucheNode( Select_LV[0] ), TAG_DONE );
					break;
				case ART_KMENGE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->KMinMenge[Select_LV[0] ], MyPrefsPTR->Daten->Nachkomma );
					Ebene1 = UpDate;
					break;
				case ART_KPREIS:
					UpDate = MoneyAuswert(	&MyArtikelPTR->Daten->KPreis[Select_LV[0] ],
													MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->Waehrung_KZ] );
					Ebene1 = UpDate;
					if( MyArtikelPTR->Daten->Umrech_KH )
						Ebene2 = UpDate;
					if( MyArtikelPTR->Daten->Umrech_KL )
						Ebene3 = UpDate;
					break;
				case ART_KZUABTYP1:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->KZuAbNummer[0] );
					Ebene1 = UpDate;
					break;
				case ART_KZUABTYP2:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->KZuAbNummer[1] );
					Ebene1 = UpDate;
					break;
				case ART_KZUABTYP3:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->KZuAbNummer[2] );
					Ebene1 = UpDate;
					break;
				case ART_KZUABWERT1:
				case ART_KZUABWERT2:
				case ART_KZUABWERT3:
					switch( IconNummer )
					{
						case ART_KZUABWERT1:
							i = 0;
							break;
						case ART_KZUABWERT2:
							i = 1;
							break;
						case ART_KZUABWERT3:
							i = 2;
							break;
					}
					if( MyArtikelPTR->Daten->KZuAbNummer[i] )
					{
						switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->KZuAbNummer[i] - 1)] )
						{
							case 0:
							case 5:
								UpDate = DoubleAuswert( &MyArtikelPTR->Daten->KZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent );
								break;
							default:
								UpDate = MoneyAuswert( &MyArtikelPTR->Daten->KZuAbWert[i],
																MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->Waehrung_KZ] );
								break;
						}
					}
					Ebene1 = UpDate;
					break;
				case ART_LV_HMENGE:
				case ART_LV_HPREIS:
					Select_LV[1] = GetTagData(WLISTVIEWA_Selected,0,(struct TagItem *)imsg->IAddress);
					GetAttr(WLISTVIEWA_Top, ThisWindow->gads[IconNummer], (ULONG *)&First_LV[1] );
					SetGadgetAttrs( ThisWindow->gads[ART_LV_HMENGE], ThisWindow->Win, NULL,
																									WLISTVIEWA_Top, First_LV[1], WLISTVIEWA_Selected, Select_LV[1], TAG_DONE);
					SetGadgetAttrs( ThisWindow->gads[ART_LV_HPREIS], ThisWindow->Win, NULL,
																									WLISTVIEWA_Top, First_LV[1], WLISTVIEWA_Selected, Select_LV[1], TAG_DONE);
					SetGadgetAttrs( ThisWindow->gads[ART_HMENGE], ThisWindow->Win, NULL, WSTRINGA_String, HaendMengList->SucheNode( Select_LV[1] ), TAG_DONE );
					SetGadgetAttrs( ThisWindow->gads[ART_HPREIS], ThisWindow->Win, NULL, WSTRINGA_String, HaendPreisList->SucheNode( Select_LV[1] ), TAG_DONE );
					break;
				case ART_HMENGE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->HMinMenge[Select_LV[1] ], MyPrefsPTR->Daten->Nachkomma );
					Ebene2 = UpDate;
					break;
				case ART_HPREIS:
					UpDate = MoneyAuswert(	&MyArtikelPTR->Daten->HPreis[Select_LV[1] ],
													MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->HWaehrung_KZ] );
					Ebene2 = UpDate;
					if( MyArtikelPTR->Daten->Umrech_HK )
						Ebene1 = UpDate;
					if( MyArtikelPTR->Daten->Umrech_HL )
						Ebene3 = UpDate;
					break;
				case ART_HZUABTYP1:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->HZuAbNummer[0] );
					Ebene2 = UpDate;
					break;
				case ART_HZUABTYP2:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->HZuAbNummer[1] );
					Ebene2 = UpDate;
					break;
				case ART_HZUABTYP3:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->HZuAbNummer[2] );
					Ebene2 = UpDate;
					break;
				case ART_HZUABWERT1:
				case ART_HZUABWERT2:
				case ART_HZUABWERT3:
					switch( IconNummer )
					{
						case ART_HZUABWERT1:
							i = 0;
							break;
						case ART_HZUABWERT2:
							i = 1;
							break;
						case ART_HZUABWERT3:
							i = 2;
							break;
					}
					if( MyArtikelPTR->Daten->HZuAbNummer[i] )
					{
						switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->HZuAbNummer[i] - 1)] )
						{
							case 0:
							case 5:
								UpDate = DoubleAuswert( &MyArtikelPTR->Daten->HZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent );
								break;
							default:
								UpDate = MoneyAuswert( &MyArtikelPTR->Daten->HZuAbWert[i],
																MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->HWaehrung_KZ] );
								break;
						}
					}
					Ebene2 = UpDate;
					break;
				case ART_LV_LMENGE:
				case ART_LV_LPREIS:
					Select_LV[2] = GetTagData(WLISTVIEWA_Selected,0,(struct TagItem *)imsg->IAddress);
					GetAttr(WLISTVIEWA_Top, ThisWindow->gads[IconNummer], (ULONG *)&First_LV[2] );
					SetGadgetAttrs( ThisWindow->gads[ART_LV_LMENGE], ThisWindow->Win, NULL,
																									WLISTVIEWA_Top, First_LV[2], WLISTVIEWA_Selected, Select_LV[2], TAG_DONE);
					SetGadgetAttrs( ThisWindow->gads[ART_LV_LPREIS], ThisWindow->Win, NULL,
																									WLISTVIEWA_Top, First_LV[2], WLISTVIEWA_Selected, Select_LV[2], TAG_DONE);
					SetGadgetAttrs( ThisWindow->gads[ART_LMENGE], ThisWindow->Win, NULL, WSTRINGA_String, LiefMengList->SucheNode( Select_LV[2] ), TAG_DONE );
					SetGadgetAttrs( ThisWindow->gads[ART_LPREIS], ThisWindow->Win, NULL, WSTRINGA_String, LiefPreisList->SucheNode( Select_LV[2] ), TAG_DONE );
					break;
				case ART_LMENGE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->LMinMenge[Select_LV[2] ], MyPrefsPTR->Daten->Nachkomma );
					Ebene3 = UpDate;
					break;
				case ART_LPREIS:
					UpDate = MoneyAuswert(	&MyArtikelPTR->Daten->LPreis[Select_LV[2] ],
													MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->LWaehrung_KZ] );
					Ebene3 = UpDate;
					if( MyArtikelPTR->Daten->Umrech_LK )
						Ebene1 = UpDate;
					if( MyArtikelPTR->Daten->Umrech_LH )
						Ebene2 = UpDate;
					break;
				case ART_LZUABTYP1:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->LZuAbNummer[0] );
					Ebene3 = UpDate;
					break;
				case ART_LZUABTYP2:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->LZuAbNummer[1] );
					Ebene3 = UpDate;
					break;
				case ART_LZUABTYP3:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->LZuAbNummer[2] );
					Ebene3 = UpDate;
					break;
				case ART_LZUABWERT1:
				case ART_LZUABWERT2:
				case ART_LZUABWERT3:
					switch( IconNummer )
					{
						case ART_LZUABWERT1:
							i = 0;
							break;
						case ART_LZUABWERT2:
							i = 1;
							break;
						case ART_LZUABWERT3:
							i = 2;
							break;
					}
					if( MyArtikelPTR->Daten->LZuAbNummer[i] )
					{
						switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->LZuAbNummer[i] - 1)] )
						{
							case 0:
							case 5:
								UpDate = DoubleAuswert( &MyArtikelPTR->Daten->LZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent );
								break;
							default:
								UpDate = MoneyAuswert( &MyArtikelPTR->Daten->LZuAbWert[i],
																MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->LWaehrung_KZ] );
								break;
						}
					}
					Ebene3 = UpDate;
					break;
				case ART_LV_ERSATZMENGE:
				case ART_LV_ERSATZART:
				case ART_LV_ERSATZBEZ:
					if( ThisWindow->Fehler == FALSE )
					{
						Select_LV[3] = GetTagData(WLISTVIEWA_Selected,0,(struct TagItem *)imsg->IAddress);
						GetAttr(WLISTVIEWA_Top, ThisWindow->gads[IconNummer], (ULONG *)&First_LV[3] );
					}
					SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZMENGE], ThisWindow->Win, NULL,
																									WLISTVIEWA_Top, First_LV[3], WLISTVIEWA_Selected, Select_LV[3], TAG_DONE);
					SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZART], ThisWindow->Win, NULL,
																									WLISTVIEWA_Top, First_LV[3], WLISTVIEWA_Selected, Select_LV[3], TAG_DONE);
					SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZBEZ], ThisWindow->Win, NULL,
																									WLISTVIEWA_Top, First_LV[3], WLISTVIEWA_Selected, Select_LV[3], TAG_DONE);
					SetGadgetAttrs( ThisWindow->gads[ART_ERSATZMENGE], ThisWindow->Win, NULL, WSTRINGA_String, ErsatzMengeList->SucheNode( Select_LV[3] ), TAG_DONE );
					SetGadgetAttrs( ThisWindow->gads[ART_ERSATZART], ThisWindow->Win, NULL, WSTRINGA_String, ErsatzArtList->SucheNode( Select_LV[3] ), TAG_DONE );
					SetGadgetAttrs( ThisWindow->gads[ART_ERSATZBEZ], ThisWindow->Win, NULL, WARGSA_Format, ErsatzBezList->SucheNode( Select_LV[3] ), TAG_DONE );
					break;
				case ART_ERSATZMENGE:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->ErsatzMenge[Select_LV[3]], MyPrefsPTR->Daten->Nachkomma );
					Ebene4 = UpDate;
					break;
				case ART_ERSATZ_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 = ART_ERSATZART;
					// kein break!!!
				case ART_ERSATZART:
					if( IconNummer == ART_ERSATZART )
					{
						GetAttr(WSTRINGA_String, ThisWindow->gads[IconNummer], (ULONG *)&TextPTR );
						strcpy( Buffer, TextPTR );
					}

					if( (FehlerKennzeichen == 0) && strcmp( Buffer, ErsatzArtList->SucheNode( Select_LV[3] ) ) == 0 )
						UpDate = FALSE;
					else				
					{
						if( (*Buffer == 0) || MyArtikelPTR->ArtikelLesen( Buffer, MyPrefsPTR->Daten->ARechArt, 0L ) )
						{
							if( *Buffer )
							{
								LongWert	= MyArtikelPTR->AktElementNr;
								MyArtikelPTR->GetElementNr( DB_Pos );
							}
							else
								LongWert	= 0;

							if( LongWert == MyArtikelPTR->AktElementNr )
								FehlerKennzeichen |= 1;
							else
							{
								FehlerKennzeichen &= (0xffffffff - 1);
								UpDate = TRUE;
								MyArtikelPTR->Daten->ErsatzArtikel[(Select_LV[3])] = LongWert;
							}

							FehlerKennzeichen &= (0xffffffff - 2);
						}
						else
							FehlerKennzeichen |= 2;
					}
					Ebene4 = UpDate;
					break;
				// Karteireiter Umrechnungsseite
				case ART_UMR_EBENE:
					GetAttr( WGROUPA_ActivePage, ThisWindow->gads[IconNummer], (ULONG *)&UmrechKarte );
					break;
				// Umrechnung Kunden- -> Händlerpreis
				case ART_UMR_KH:
					MyArtikelPTR->Daten->Umrech_KH 	= !MyArtikelPTR->Daten->Umrech_KH;
					UpDate = TRUE;
					break;
				// Umrechnung Kunden- -> Lieferantenpreis
				case ART_UMR_KL:
					MyArtikelPTR->Daten->Umrech_KL 	= !MyArtikelPTR->Daten->Umrech_KL;
					UpDate = TRUE;
					break;
				// Umrechnung Händler- -> Kundenpreis
				case ART_UMR_HK:
					MyArtikelPTR->Daten->Umrech_HK 	= !MyArtikelPTR->Daten->Umrech_HK;
					UpDate = TRUE;
					break;
				// Umrechnung Händler- -> Lieferantenpreis
				case ART_UMR_HL:
					MyArtikelPTR->Daten->Umrech_HL 	= !MyArtikelPTR->Daten->Umrech_HL;
					UpDate = TRUE;
					break;
				// Umrechnung Lieferanten- -> Kundenpreis
				case ART_UMR_LK:
					MyArtikelPTR->Daten->Umrech_LK 	= !MyArtikelPTR->Daten->Umrech_LK;
					UpDate = TRUE;
					break;
				// Umrechnung Lieferanten- -> Händlerpreis
				case ART_UMR_LH:
					MyArtikelPTR->Daten->Umrech_LH 	= !MyArtikelPTR->Daten->Umrech_LH;
					UpDate = TRUE;
					break;

				// Zu-/Abschläge für die Umrechnung
				case ART_UMR_ZUAB1:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->Umrech_ZuAb[0] );
					Ebene5 = UpDate;
					break;
				case ART_UMR_ZUAB2:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->Umrech_ZuAb[1] );
					Ebene5 = UpDate;
					break;
				case ART_UMR_ZUAB3:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->Umrech_ZuAb[2] );
					Ebene5 = UpDate;
					break;
				case ART_UMR_ZUAB4:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->Umrech_ZuAb[3] );
					Ebene5 = UpDate;
					break;
				case ART_UMR_ZUAB5:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->Umrech_ZuAb[4] );
					Ebene5 = UpDate;
					break;
				case ART_UMR_ZUAB6:
					UpDate = CycleAuswert( &MyArtikelPTR->Daten->Umrech_ZuAb[5] );
					Ebene5 = UpDate;
					break;
				case ART_UMR_ZUABWERT1:
				case ART_UMR_ZUABWERT2:
				case ART_UMR_ZUABWERT3:
				case ART_UMR_ZUABWERT4:
				case ART_UMR_ZUABWERT5:
				case ART_UMR_ZUABWERT6:
					switch( IconNummer )
					{
						case ART_UMR_ZUABWERT1:
							i = 0;
							break;
						case ART_UMR_ZUABWERT2:
							i = 1;
							break;
						case ART_UMR_ZUABWERT3:
							i = 2;
							break;
						case ART_UMR_ZUABWERT4:
							i = 3;
							break;
						case ART_UMR_ZUABWERT5:
							i = 4;
							break;
						case ART_UMR_ZUABWERT6:
							i = 5;
							break;
					}
					if( MyArtikelPTR->Daten->Umrech_ZuAb[i] )
					{
						switch( MyPrefsPTR->Daten->ZuAbTyp[(MyArtikelPTR->Daten->Umrech_ZuAb[i] - 1)] )
						{
							case 0:
							case 5:
								UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_ZuAbWert[i], MyPrefsPTR->Daten->Nachkomma_Prozent );
								break;
							default:
								if( i < 3 )
								{
									UpDate = MoneyAuswert( &MyArtikelPTR->Daten->Umrech_ZuAbWert[i],
																	MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->LWaehrung_KZ] );
								}
								else
								{
									UpDate = MoneyAuswert( &MyArtikelPTR->Daten->Umrech_ZuAbWert[i],
																	MyPrefsPTR->WaehrungPTR[MyArtikelPTR->Daten->HWaehrung_KZ] );
								}
								break;
						}
					}
					Ebene5 = UpDate;
					break;

				// Runden der kalkulierten Lieferantenpreise
				case ART_UMR_RUNDEN1:
					MyArtikelPTR->Daten->Umrech_Runden[0]	= !MyArtikelPTR->Daten->Umrech_Runden[0];
					UpDate = TRUE;
					break;
				// Runden der kalkulierten Händlerpreise
				case ART_UMR_RUNDEN2:
					MyArtikelPTR->Daten->Umrech_Runden[1]	= !MyArtikelPTR->Daten->Umrech_Runden[1];
					UpDate = TRUE;
					break;
				// Runden der kalkulierten Lieferantenpreise
				case ART_UMR_RUNDEN3:
					MyArtikelPTR->Daten->Umrech_Runden[2]	= !MyArtikelPTR->Daten->Umrech_Runden[2];
					UpDate = TRUE;
					break;
				// Runden Bereichsfestlegung von
				case ART_UMR_RUNDVON1:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenVon[0], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung von
				case ART_UMR_RUNDVON2:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenVon[1], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung von
				case ART_UMR_RUNDVON3:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenVon[2], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung von
				case ART_UMR_RUNDVON4:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenVon[3], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung bis
				case ART_UMR_RUNDBIS1:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenBis[0], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung bis
				case ART_UMR_RUNDBIS2:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenBis[1], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung bis
				case ART_UMR_RUNDBIS3:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenBis[2], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung bis
				case ART_UMR_RUNDBIS4:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenBis[3], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung zu (Ergebnis)
				case ART_UMR_RUNDZU1:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenZu[0], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung zu (Ergebnis)
				case ART_UMR_RUNDZU2:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenZu[1], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung zu (Ergebnis)
				case ART_UMR_RUNDZU3:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenZu[2], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
				// Runden Bereichsfestlegung zu (Ergebnis)
				case ART_UMR_RUNDZU4:
					UpDate = DoubleAuswert( &MyArtikelPTR->Daten->Umrech_RundenZu[3], MyLocalePTR->Thislocale->loc_MonFracDigits );
					break;
			}
			if( UpDate )
			{
				MyArtikelPTR->KPos = Select_LV[0];
				MyArtikelPTR->HPos = Select_LV[1];
				MyArtikelPTR->LPos = Select_LV[2];
				MyArtikelPTR->UpDateElement();
				if( GetIt )
				{
					if( MyArtikelPTR->UnDoUsed > 0 )
						((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[9] = FALSE;
					else
						((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[9] = TRUE;

					if( MyArtikelPTR->ReDoUsed > 0 )
						((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[10] = FALSE;
					else
						((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[10] = TRUE;
					((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperren();
				}
				Select_LV[0] = MyArtikelPTR->KPos;
				Select_LV[1] = MyArtikelPTR->HPos;
				Select_LV[2] = MyArtikelPTR->LPos;
			}

			UpDate = FALSE;

			if( Fuellen )
				FillWindow();
			else
			{
				if( Ebene1 )
					FillEbene1();
				if( Ebene2 )
					FillEbene2();
				if( Ebene3 )
					FillEbene3();
				if( Ebene4 )
					FillEbene4();
				if( Ebene5 )
					FillEbene5();
			}
			break;
		case IDCMP_RAWKEY:
			if( ThisWindow->Fehler == FALSE )
			{
				LongWert = Select_LV[ThisWindow->Karte];
				switch( imsg->Code )
				{
					case 76:
						if( Select_LV[ThisWindow->Karte] > 0 )
							Select_LV[ThisWindow->Karte]--;
						break;
					case 77:
						if( Select_LV[ThisWindow->Karte] < 9 )
							Select_LV[ThisWindow->Karte]++;
						break;
					default:
						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] )
									{
										MyArtikelPTR->GetFirstElement();
										UpDate = TRUE;
									}	
									break;
								case 81:
									if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[1] )
									{
										MyArtikelPTR->Get10PrevElement();
										UpDate = TRUE;
									}
									break;
								case 82:
									if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[2] )
									{
										MyArtikelPTR->GetPrevElement();
										UpDate = TRUE;
									}
									break;
								case 83:
									if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[3] )
									{
										MyArtikelPTR->GetNextElement();
										UpDate = TRUE;
									}
									break;
								case 84:
									if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[4] )
									{
										MyArtikelPTR->Get10NextElement();
										UpDate = TRUE;
									}
									break;
								case 85:
									if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[5] )
									{
										MyArtikelPTR->GetLastElement();
										UpDate = TRUE;
									}
									break;
								case 86:
									if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[6] )
									{
										((MTSuch_Gadget *)FindIt->FirstAuswert)->AktDB			= MyArtikelPTR;

										ThisWindow->ThisScreen->ExclusiveAuswertung( FindIt );
										if( ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos )
										{
											MyArtikelPTR->GetElementNr( ((MTSuch_Gadget *)FindIt->FirstAuswert)->DB_Pos );
											UpDate = TRUE;
										}
									}
									break;
								case 87:
									if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[7] )
									{
										MyArtikelPTR->NeuerDatensatz();
										SetGadgetAttrs( GetIt->gads[NAV_NUMMER], GetIt->Win, NULL, WINTEGERA_Long, (LONG)MyArtikelPTR->AktElementNr, TAG_DONE );
										UpDate = TRUE;
									}
									break;
								case 89:
									if( !((MTNav_Gadget *)(GetIt->FirstAuswert))->Sperrkennzeichen[8] )
									{
										MyArtikelPTR->LoeschenAkt();
										UpDate = TRUE;
									}
									break;
							}
						}
						break;
				}
				if( LongWert != Select_LV[ThisWindow->Karte] )
				{
					switch( ThisWindow->Karte )
					{
						case 0:
							SetGadgetAttrs( ThisWindow->gads[ART_LV_KMENGE], ThisWindow->Win, NULL,
																		WLISTVIEWA_Visible, Select_LV[ThisWindow->Karte], WLISTVIEWA_Selected, Select_LV[ThisWindow->Karte], TAG_DONE);
							SetGadgetAttrs( ThisWindow->gads[ART_LV_KPREIS], ThisWindow->Win, NULL,
																		WLISTVIEWA_Visible, Select_LV[ThisWindow->Karte], WLISTVIEWA_Selected, Select_LV[ThisWindow->Karte], TAG_DONE);
							GetAttr(WLISTVIEWA_Top, ThisWindow->gads[ART_LV_KMENGE], (ULONG *)&First_LV[ThisWindow->Karte] );
							SetGadgetAttrs( ThisWindow->gads[ART_KMENGE], ThisWindow->Win, NULL, WSTRINGA_String, KundMengList->SucheNode( Select_LV[ThisWindow->Karte] ), TAG_DONE );
							SetGadgetAttrs( ThisWindow->gads[ART_KPREIS], ThisWindow->Win, NULL, WSTRINGA_String, KundPreisList->SucheNode( Select_LV[ThisWindow->Karte] ), TAG_DONE );
							break;
						case 1:
							SetGadgetAttrs( ThisWindow->gads[ART_LV_HMENGE], ThisWindow->Win, NULL,
																		WLISTVIEWA_Visible, Select_LV[ThisWindow->Karte], WLISTVIEWA_Selected, Select_LV[ThisWindow->Karte], TAG_DONE);
							SetGadgetAttrs( ThisWindow->gads[ART_LV_HPREIS], ThisWindow->Win, NULL,
																		WLISTVIEWA_Visible, Select_LV[ThisWindow->Karte], WLISTVIEWA_Selected, Select_LV[ThisWindow->Karte], TAG_DONE);
							GetAttr(WLISTVIEWA_Top, ThisWindow->gads[ART_LV_HMENGE], (ULONG *)&First_LV[ThisWindow->Karte] );
							SetGadgetAttrs( ThisWindow->gads[ART_HMENGE], ThisWindow->Win, NULL, WSTRINGA_String, LiefMengList->SucheNode( Select_LV[ThisWindow->Karte] ), TAG_DONE );
							SetGadgetAttrs( ThisWindow->gads[ART_HPREIS], ThisWindow->Win, NULL, WSTRINGA_String, LiefPreisList->SucheNode( Select_LV[ThisWindow->Karte] ), TAG_DONE );
							break;
						case 2:
							SetGadgetAttrs( ThisWindow->gads[ART_LV_LMENGE], ThisWindow->Win, NULL,
																		WLISTVIEWA_Visible, Select_LV[ThisWindow->Karte], WLISTVIEWA_Selected, Select_LV[ThisWindow->Karte], TAG_DONE);
							SetGadgetAttrs( ThisWindow->gads[ART_LV_LPREIS], ThisWindow->Win, NULL,
																		WLISTVIEWA_Visible, Select_LV[ThisWindow->Karte], WLISTVIEWA_Selected, Select_LV[ThisWindow->Karte], TAG_DONE);
							GetAttr(WLISTVIEWA_Top, ThisWindow->gads[ART_LV_LMENGE], (ULONG *)&First_LV[ThisWindow->Karte] );
							SetGadgetAttrs( ThisWindow->gads[ART_LMENGE], ThisWindow->Win, NULL, WSTRINGA_String, LiefMengList->SucheNode( Select_LV[ThisWindow->Karte] ), TAG_DONE );
							SetGadgetAttrs( ThisWindow->gads[ART_LPREIS], ThisWindow->Win, NULL, WSTRINGA_String, LiefPreisList->SucheNode( Select_LV[ThisWindow->Karte] ), TAG_DONE );
							break;
						case 3:
							SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZMENGE], ThisWindow->Win, NULL,
																		WLISTVIEWA_Visible, Select_LV[ThisWindow->Karte], WLISTVIEWA_Selected, Select_LV[ThisWindow->Karte], TAG_DONE);
							SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZART], ThisWindow->Win, NULL,
																		WLISTVIEWA_Visible, Select_LV[ThisWindow->Karte], WLISTVIEWA_Selected, Select_LV[ThisWindow->Karte], TAG_DONE);
							SetGadgetAttrs( ThisWindow->gads[ART_LV_ERSATZBEZ], ThisWindow->Win, NULL,
																		WLISTVIEWA_Visible, Select_LV[ThisWindow->Karte], WLISTVIEWA_Selected, Select_LV[ThisWindow->Karte], TAG_DONE);
							GetAttr(WLISTVIEWA_Top, ThisWindow->gads[ART_LV_ERSATZMENGE], (ULONG *)&First_LV[ThisWindow->Karte] );
							SetGadgetAttrs( ThisWindow->gads[ART_ERSATZMENGE], ThisWindow->Win, NULL, WSTRINGA_String, ErsatzMengeList->SucheNode( Select_LV[ThisWindow->Karte] ), TAG_DONE );
							SetGadgetAttrs( ThisWindow->gads[ART_ERSATZART], ThisWindow->Win, NULL, WSTRINGA_String, ErsatzArtList->SucheNode( Select_LV[ThisWindow->Karte] ), TAG_DONE );
							SetGadgetAttrs( ThisWindow->gads[ART_ERSATZBEZ], ThisWindow->Win, NULL, WARGSA_Format, ErsatzBezList->SucheNode( Select_LV[ThisWindow->Karte] ), TAG_DONE );
							break;
					}
				}
				switch( imsg->Code )
				{
					case 0:
						if( GetAttr(WINTEGERA_Long, GetIt->gads[NAV_NUMMER], (ULONG *)&LongWert ) )
						{
							if( LongWert > MyArtikelPTR->ElementeVorhanden() )
								LongWert = MyArtikelPTR->ElementeVorhanden();
							if( LongWert < 1 )
								LongWert = 1;
							MyArtikelPTR->GetElementNr( (ULONG)LongWert );
							UpDate = TRUE;
						}
						break;
					case 1:
						if( SDWindow )
						{
							((MTSDruck_Gadget *)(SDWindow->FirstAuswert))->AktDB		= MyArtikelPTR;
							ThisWindow->ThisScreen->ExclusiveAuswertung( SDWindow );
						}
						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':
						MyArtikelPTR->UnDo();
						UpDate = TRUE;
						break;
					case (ULONG)'U':
						MyArtikelPTR->ReDo();
						UpDate = TRUE;
						break;
					case 27:
						if( ExklusivAuswert )
						{
							ExklusivAuswert = FALSE;
							DONE	= 2;
						}
						else
							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;
		// Window Aktiviert
		case IDCMP_ACTIVEWINDOW:
			if( ThisWindow->ShortCuts[0] == 0 )
			{
				SetGadgetAttrs( ThisWindow->gads[ART_GEWICHT], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_MIN_MENGE], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_MITBEST_MENGE], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_SOLL_BESTAND], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_VP_GROESSE], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_VPL_GROESSE], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_EAN], ThisWindow->Win, NULL, WSTRINGA_Hook, &EAN_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_KMENGE], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_KPREIS], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegWaehr_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_HMENGE], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_HPREIS], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegWaehr_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_LMENGE], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_LPREIS], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegWaehr_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_ERSATZMENGE], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON1], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON2], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON3], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDVON4], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS1], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS2], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS3], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDBIS4], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU1], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU2], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU3], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegZahlNK_edh, TAG_DONE );
				SetGadgetAttrs( ThisWindow->gads[ART_UMR_RUNDZU4], ThisWindow->Win, NULL, WSTRINGA_Hook, &PosNegZahlNK_edh, TAG_DONE );

				SetGadgetAttrs( ThisWindow->gads[ART_BESTANDSFUEHR], ThisWindow->Win, NULL, WCYCLEA_Labels, (ULONG)AppStrings[MSG_BestFue], TAG_DONE );

				GetAttr(WLABELA_Label, ThisWindow->gads[ART_LABEL_OL], (ULONG *)&TextPTR );
				ThisWindow->ShortCuts[0]		= GetHotKey(TextPTR,2);
				ThisWindow->ShortCutIcon[0]	= ART_LIEFERANT_SUCHEN;
				ThisWindow->ShortCutKarte[0]	= -1;
				GetAttr(WLABELA_Label, ThisWindow->gads[ART_LABEL_ERSATZ], (ULONG *)&TextPTR );
				ThisWindow->ShortCuts[1]		= GetHotKey(TextPTR,0);
				ThisWindow->ShortCutIcon[1]	= ART_ERSATZ_SUCHEN;
				ThisWindow->ShortCutKarte[1]	= 3;
				ThisWindow->ShortCuts[2]		= 0;
			}
			FillWindow();
			break;
		// Window schliessen
		case IDCMP_CLOSEWINDOW:
			if( ThisWindow->BezWin && !ThisWindow->Fehler)
			{
				if( ExklusivAuswert )
				{
					ExklusivAuswert = FALSE;
					DONE	= 2;
				}
				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;
	}

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

			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 = MyArtikelPTR->AktElementNr;
		First_LV[0]		= 0;
		Select_LV[0]	= 0;
		First_LV[1]		= 0;
		Select_LV[1]	= 0;
		First_LV[2]		= 0;
		Select_LV[2]	= 0;
		First_LV[3]		= 0;
		Select_LV[3]	= 0;
		ThisWindow->Karte	= 0;
		UmrechKarte		= 0;
		FillWindow();
	}
	return DONE;
};

