//best4p.prg///////////////////////////////////////////////////////////////////
//
//  Vom Xbase++ FormDesigner erstellter Funktions Code
//    Erstellt am: 25.02.01 Zeit: 18:32:45
//       -erweitert-   UDFs: best4f.prg
///////////////////////////////////////////////////////////////////////////////

#include "Gra.ch"
#include "Xbp.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "Common.ch"
#include "xbpdev.ch"
#include "fileio.ch"

#define   xbeUser_FileMarked       xbeP_User + 1
#define   xbeUser_FileSelected     xbeP_User + 2

//+25.06.2013 17:55 ersetzt durch AKDialog1.prg:
//+26.12.2013 21:38 wieder eingesetzt:
CLASS AKDialog from XbpDialog
  EXPORTED:
    VAR cFont
    METHOD  Init
ENDCLASS

METHOD AKDialog:Init( oParent, oOwner, aPos, aSize, aPP, lVisible )
   LOCAL nBSb
   aPP := IIf( Empty(aPP), {}, aPP )
   nBSb := AppDesktop():currentSize()[1]
//+26.11.2019 10:35 geREMt:
//   IF nBSb > 1000
//      cFont := "10.Arial"
//   ELSEIF nBSb >750
//      cFont := "8.Arial"
//   ELSE
//      cFont := "7.Arial"
//   ENDIF
   AAdd ( aPP, { XBP_PP_COMPOUNDNAME, cBFont } )
   ::XbpDialog:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
   ::XbpDialog:taskList := .T.
//   Alternative zu aPP :
//    oFont := xbpFont():new()                     // Font-Objekt und
//    oFont:create()                                // Font erzeugen
//    oFont:configure( cFont )                     // Neuen Font laden
//   ::XbpDialog:setFont( oFont )
	::XbpDialog:icon = 1		//+14.12.2020 09:30
RETURN self

PROCEDURE best4p( cTitel )
   LOCAL nEvent, mp1, mp2, aFelder := {}, ID_SLE_PRIMKEY := 1, ID_SLE_NAME := 5
   LOCAL oDlg, oXbp, oXbpG1, oXbpG2, oXbpG3, oXbpG4, oXbpG5
   LOCAL oXbpC, oXbp1, oXbp2, oXbp3, oXbp4, oXbp5, oXbp6, oXbp7
   LOCAL oXbp8, oXbp9
   LOCAL oXbpN, oXbp12, oXbp13, oXbp14, oXbp15, oXbp16, oXbp17
   LOCAL oXbp22, oXbp23, oXbp24, oXbp25, oXbp26, oXbp27
   LOCAL oXbp32, oXbp33, oXbp34, oXbp35, oXbp36, oXbp37
   LOCAL drawingArea, aEditControls := {}
   LOCAL bKeyboard, bActivate, aData1[ FCount() ]
   LOCAL aPP := { { XBP_PP_FGCLR       , GRA_CLR_BLACK    } , ;
                  { XBP_PP_BGCLR       , GRA_CLR_WHITE    } }

//                  { XBP_PP_COMPOUNDNAME, FONT_TIMES_MEDIUM + FONT_STYLE_BOLD } }


// tats„chliche Bildschirmaufl”sung:
   LOCAL aSizeDesktop := AppDesktop():currentSize()
   LOCAL nBSb := aSizeDesktop[1]
   LOCAL nBSh := aSizeDesktop[2]
// folgende Zahlen-Werte basieren auf 800x600:
   LOCAL nH := nBSb/800         // Korrekturfaktor fr tats„chliche Aufl”sung
   LOCAL nV := nBSh/600, nHV := nH/nV  //+07.06.2011 17:28
   LOCAL n5 := int(5*nV)
   LOCAL n10 := int(10*nV)
   LOCAL n15 := int(15*nV)
   LOCAL n20 := int(20*nV)
   LOCAL n30 := int(30*nV)
   LOCAL nRo := int(505*nV)     // oberstes Eingabefeld =505
   LOCAL nBo := nRo
   LOCAL nR1 := 5       // linker Rand Bezeichnungsfeld
   LOCAL nR2 := int(70*nV)       // linker Rand EingabeFeld
   LOCAL nR3 := int(200*nV)     // linker Rand Bezeichnungsfeld
   LOCAL nR4 := int(250*nV)       // linker Rand EingabeFeld
   LOCAL nR5 := int(300*nV)       // linker Rand EingabeFeld
   LOCAL nR6 := int(350*nV)     // linker Rand Bezeichnungsfeld
   LOCAL nR7 := int(430*nV)     // linker Rand Bezeichnungsfeld
   LOCAL nR8 := int(490*nV)       // linker Rand EingabeFeld
   LOCAL nR9 := int(610*nV)     // linker Rand Bezeichnungsfeld
   LOCAL nR10 := int(740*nV)       // linker Rand EingabeFeld

   LOCAL nBl1 := int(60*nV)      // L„nge des Bezeichnungsfeldes
   LOCAL nBl2 := int(50*nV)      // L„nge des Bezeichnungsfeldes
   LOCAL nBl3 := int(30*nV)      // L„nge des Bezeichnungsfeldes
   LOCAL nBl4 := int(20*nV)      // L„nge des Bezeichnungsfeldes
   LOCAL nBh := int(20*nV)      // H”he des Bezeichnungsfeldes =20
   LOCAL nBha := int(20*nV)      // H”he des Bezeichnungsfeldes =20  +23.09.2018 11:15 (+31.08.2015 13:46)
   LOCAL nBz := int(25*nV)      // Zeilenh”he des Bezeichnungsfeldes =25

   LOCAL nFl1 := int(170*nV)    // L„nge des Eingabefeldes
   LOCAL nFl2 := int(120*nV)    // L„nge des Eingabefeldes
   LOCAL nFl3 := int(80*nV)    // L„nge des Eingabefeldes
   LOCAL nFl4 := int(60*nV)    // L„nge des Eingabefeldes
   LOCAL nFl5 := int(30*nV)    // L„nge des Eingabefeldes
   LOCAL nFa := 0
   LOCAL nT1 := int(200*nV)     // Linker Rand Taste
   LOCAL nT2 := int(430*nV)     // Linker Rand Taste
   LOCAL nT3 := int(480*nV)     // Linker Rand Taste
   LOCAL nT4 := int(530*nV)     // Linker Rand Taste
   LOCAL nT4a := int(530*nV)     // Linker Rand Taste +31.08.2015 13:47
   LOCAL nT4b := int(580*nV)     // Linker Rand Taste +31.08.2015 13:47
   LOCAL nT4c := int(530*nV)     // Linker Rand Taste +31.08.2015 13:47
   LOCAL nT4d := int(580*nV)     // Linker Rand Taste +31.08.2015 13:47
   LOCAL nT5 := int(630*nV)     // Linker Rand Taste
   LOCAL nT6 := int(680*nV)     // Linker Rand Taste
   LOCAL nT7 := int(730*nV)     // Linker Rand Taste
   LOCAL nTl := int(40*nV)     // Breite Taste
   LOCAL n2 := 2
   LOCAL n6 := 6

   LOCAL cDeko, aDeko, bAction, cSTATUS, aSTATUS  // fr die ComboBox
   LOCAL cVerst0 := cVerst1 := cVerst2 := cVerst3 := Trim(" ")
   LOCAL cV := " "
   LOCAL nXmod:=nXehe:=Int(350*nH), nYehe:=Int(350*nV), nYmod:=int(250*nV)
   LOCAL oBestMenu := SetAppFocus()
//15.12.2020 20:47 geREMt   LOCAL oBest
// 22.11.2019 10:21 jetzt in eurov:    LOCAL nBGFarbe := GRA_CLR_BACKGROUND            //+26.11.2011 20:29 originales Grau
   LOCAL nBSFarbe := GraMakeRGBColor({230,180,100}) //24.08.2007 10:20
   PRIVATE oCB, oBest			//+15.12.2020 20:47 oBest
   PRIVATE cFeldC, cFeldN, cFeldD, aFeld[FCount()]
   PRIVATE cFont := cBFont, oFont
	PRIVATE oFocSle := SetAppFocus()		//+26.11.2019 14:46 (vorher nicht deklariert ... )
	PRIVATE aEC			//+13.12.2020 15:42 die Referenz auf aEditControls
	PRIVATE aBut := {}		//+14.12.2020 12:10
	PRIVATE aButK := {}		//+17.12.2020 15:34	Kn”pfe in der Kontrollbersicht
	PUBLIC test1 := 0
	PUBLIC test2 := 100

   ErrorBlock( {|e| FehlerBehandlung(e) } )     // e = Error-Objekt  //+24.03.2012 14:46

   SELECT 1
   IF !Empty(cPubAuf)
      FIND &cPubAuf
   ELSE
      GO TOP
   ENDIF
   IF Alias(1)="VBEST"
      cV := "V"
   ELSE
      cV := "B"
   ENDIF

   oDlg := AKDialog():new( AppDesktop(), SetAppWindow(), {n5*nHV,n30}, {nBSb-n10*nHV,nBSh-n30}, , .F.) //+07.06.2011 17:31
   oDlg:taskList := .T.
   oDlg:title := cTitel + " *" + PadR(1->stern,1) //+04.09.2012 22:17 Markierung * / stern 15.12.2020 17:40
   oDlg:create()
   oCB := oDlg:drawingArea
   oBest := oDlg:drawingArea
   oCB:cargo := oDlg
   oBest:cargo := oDlg
//   SetAppWindow():clipChildren := .F.
//   SetAppWindow():configure()

   drawingArea := oDlg:drawingArea

   oXbpG1 := XbpStatic():new( drawingArea, , {(nR1-n5)*nHV,nRo-9*nBz-n5}, {(nFl1+nBl1+n15)*nHV,9*nBz+n10},) //+07.06.2011 17:31
   oXbpG1:clipSiblings := .T.
   oXbpG1:type := XBPSTATIC_TYPE_GROUPBOX
   oXbpG1:create()

   oXbp := XbpStatic():new( drawingArea, , {(nR1-n5)*nHV,nRo-13*nBz-n5}, {(nR7-n5)*nHV,4*nBz+n10}, )  //+07.06.2011 17:31
   oXbp:caption := ""
   oXbp:clipSiblings := .T.
   oXbp:type := XBPSTATIC_TYPE_GROUPBOX
   oXbp:create()

   oXbp := XbpStatic():new( drawingArea, , {(nR1-n5)*nHV,nRo-20*nBz-n5}, {(nR7-n5)*nHV,7*nBz+n10} )   //+07.06.2011 17:32
   oXbp:caption := ""
   oXbp:clipSiblings := .T.
   oXbp:type := XBPSTATIC_TYPE_GROUPBOX
   oXbp:create()

   oXbp := XbpStatic():new( drawingArea, , {(nR4-n5)*nHV,nRo-9*nBz-n5}, {(nFl1+n5)*nHV,9*nBz+n10} )   //+07.06.2011 17:32
   oXbp:caption := ""
   oXbp:clipSiblings := .T.
   oXbp:type := XBPSTATIC_TYPE_GROUPBOX
   oXbp:create()

   oXbp := XbpStatic():new( drawingArea, , {(nR7-n5)*nHV,nRo-9*nBz-n5}, {nBSb-(nR7+n15)*nHV,9*nBz+n10} )    //+07.06.2011 17:33
   oXbp:caption := ""
   oXbp:clipSiblings := .T.
   oXbp:type := XBPSTATIC_TYPE_GROUPBOX
   oXbp:create()



   oXbp1 := XbpPushButton():new( drawingArea, , {nT1*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1:caption := "~Such"
   oXbp1:clipSiblings := .T.
   oXbp1:create()
   oXbp1:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Suchen( oDlg, @aData1, nXmod, nYmod*2, aEditControls ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }	
        						
   oXbp2 := XbpPushButton():new( drawingArea, , {nT2*nHV,nBo}, {nTl*nHV,nBh} )   //+07.06.2011 17:34
   oXbp2:caption := "~Neu"
   oXbp2:clipSiblings := .T.
   oXbp2:create()
   oXbp2:activate := {|| Satzsp( oDlg ), ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        NeuVB( oDlg, @aData1, nXmod, nYmod ), Radio(), 1->(DbCommit()), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable() }
	AAdd ( aBut, oXbp2 )


   oXbp3 := XbpPushButton():new( drawingArea, , {nT3*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 17:34
   oXbp3:caption := "|<<"
   oXbp3:clipSiblings := .T.
   oXbp3:group := XBP_BEGIN_GROUP
   oXbp3:create()
   oXbp3:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), ZumAnfang() , ;
                        Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        IIf( cV == "V" .OR. nTracking == 0, ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }

   oXbp4 := XbpPushButton():new( drawingArea, , {nT4*nHV,nBo}, {nTl*nHV,nBh} )      //+07.06.2011 17:35
   oXbp4:caption := "<"
   oXbp4:clipSiblings := .T.
   oXbp4:group := XBP_WITHIN_GROUP
   oXbp4:create()

   oXbp4:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), Zurueck(), ;
                        Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        IIf( cV == "V" .OR. nTracking == 0, ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
                        IIf(1->(IsFieldVar("TTDATUM")),oDlg:title := PadR(oDlg:title,70," ")+DtoC(1->TTDatum)+ ;
                        "-"+Trim(1->username)+"-"+Trim(1->pcname)+"-"+1->pcart,), ;
                        oDlg:configure(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }

   oXbp5 := XbpPushButton():new( drawingArea, , {nT5*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 17:35
   oXbp5:caption := ">"
   oXbp5:clipSiblings := .T.
   oXbp5:group := XBP_WITHIN_GROUP
   oXbp5:create()
   oXbp5:activate := {|| Satzsp( oDlg ), ;
   							oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), Vorwaerts() , ;
                        Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        IIf( cV == "V" .OR. nTracking == 0, ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
                        IIf(1->(IsFieldVar("TTDATUM")),oDlg:title := PadR(oDlg:title,70," ")+DtoC(1->TTDatum)+ ;
                        "-"+Trim(1->username)+"-"+Trim(1->pcname)+"-"+1->pcart,), ;
                        oDlg:configure(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }

   oXbp6 := XbpPushButton():new( drawingArea, , {nT6*nHV,nBo}, {nTl*nHV,nBh} )   //+07.06.2011 17:35
   oXbp6:caption := ">>|"
   oXbp6:clipSiblings := .T.
   oXbp6:group := XBP_END_GROUP
   oXbp6:create()
//   oXbp6:activate := {|| Satzsp( oDlg ),  Gather( aEditControls ), ;
   oXbp6:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), ZumEnde() , ;
                        Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        IIf( cV == "V" .OR. nTracking == 0, ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }

   oXbp7 := XbpPushButton():new( drawingArea, , {nT7*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 17:35
   oXbp7:caption := "Ende"
   oXbp7:clipSiblings := .T.
   oXbp7:create()
   oXbp7:activate := {|| PostAppEvent( xbeP_Close ) }
//   oXbp7:activate := {|| Satzsp( oDlg ), Gather( aEditControls ), 1->(DbCommit()), ;
//                        __SETFUNCTION( 9, str( 1->AUFTRNR,6,0 ) ), ;
//                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
//                        PostAppEvent( xbeP_Close ) , ;
//                        oDlg:destroy() , Scatter( xbeP_Close ) }

   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} ) //+07.06.2011 17:36
   oXbp:caption := "Auftr+Ber:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 6 ; nFl := nFa*8
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:36
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Transform( 1->AUFTRNR, '@L0 999999' ), 1->AUFTRNR := Val(x) ) }
   oXbp:validate := {|o| IsIndexUnique( 1, PadL(Trim(o:editBuffer()),6) ) }   //29.08.2007 08:12
   oXbp:create():setData()
   oXbp:cargo := "AUFTRNR"		//+18.09.2018 21:22
   oXbp:setName( ID_SLE_PRIMKEY )
   oXbp:disable()
   AAdd ( aEditControls, oXbp )
//   IF !Eof()
//        oXbp:disable()
//   ELSE
//        oXbp:enable()
//        SetAppFocus( oXbp )
//   ENDIF

   nFa := 3 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {(nR2+nFl3+n5)*nHV,nBo}, {nFl5*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:36
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->BERATER ), 1->BERATER := x ) }
   oXbp:create():setData()
   oXbp:cargo := "BERATER"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {(nR4)*nHV,nBo}, {(nBl2)*nHV,nBh} )   //+07.06.2011 17:37
   oXbp:caption := "Telefon:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR5*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:37
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_TELP ), 1->ANSP_TELP := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_TELP"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:37
//   oXbp := XbpStatic():new( oXbpG1, , {10,10}, {nBl1,nBh} )
   oXbp:caption := "Anrede:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 10 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:38
//   oXbp := XbpSLE():new( oXbpG1, , {70,10}, {nFl3,nBh}, )
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANREDE ), 1->ANREDE := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANREDE"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )


   oXbp8 := XbpPushButton():new( drawingArea, , {(nR2+nFl3+n5)*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 17:38
   oXbp8:caption := "~EHE"
   oXbp8:clipSiblings := .T.
   oXbp8:create()
   oXbp8:activate := {|| Satzsp( oDlg ), Gather( aEditControls ), 1->(DbCommit()), ;
                        aEditcontrols := Ehe( oDlg, aEditcontrols, nXehe, nYehe ) , ;
                        SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY )), ;
                        oXbp:enable() }
	AAdd ( aBut, oXbp8 )

   oXbp9 := XbpPushButton():new( drawingArea, , {nT1*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 17:38
   oXbp9:caption := "~ANSP"
   oXbp9:clipSiblings := .T.
   oXbp9:create()
   oXbp9:activate := {|| Satzsp( oDlg ), Gather( aEditControls ), 1->(DbCommit()), ;
                        aEditcontrols := Ansprech( oDlg, aEditcontrols, nXehe, nYehe ) , ;
                        SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY )), ;
                        oXbp:enable() }
	AAdd ( aBut, oXbp9 )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {(nR1)*nHV,nBo}, {(nBl1)*nHV,nBh} )   //+07.06.2011 17:39
   oXbp:caption := "Name:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:39
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim(1->Name), 1->Name:= x ) }
//   oXbp:dataLink := &( Bs("1->Name") )
   oXbp:create():setData()
   oXbp:cargo := "NAME"		//+18.09.2018 21:22
   oXbp:setName( ID_SLE_NAME )
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:39
   oXbp:caption := "Vorname:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:40
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->VORNAME ), 1->VORNAME := x ) }
   oXbp:create():setData()
   oXbp:cargo := "VORNAME"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:40
   oXbp:caption := "Geb.-Name:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:44
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->GEB_NAME ), 1->GEB_NAME := x ) }
   oXbp:create():setData()
   oXbp:cargo := "GEB_NAME"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {(nR1)*nHV,nBo}, {(nBl1)*nHV,nBh} ) //+07.06.2011 17:40
   oXbp:caption := "Straáe:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:40
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->STRASSE ), 1->STRASSE := x ) }
   oXbp:create():setData()
   oXbp:cargo := "STRASSE"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:45
   oXbp:caption := "PLZ/Ort:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:45
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->PLZ_ORT ), 1->PLZ_ORT := x ) }
   oXbp:create():setData()
   oXbp:cargo := "PLZ_ORT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:45
   oXbp:caption := "Beruf:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:46
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->BERUF ), 1->BERUF := x ) }
   oXbp:create():setData()
   oXbp:cargo := "BERUF"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:46
   oXbp:caption := "geb/gest:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 10 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:46
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, ;
                        IIf( DtoC( 1->GEB_DATUM )=" ", trim(" "), DtoC( 1->GEB_DATUM )), ;
                        IIf( len(x)<7, 1->GEB_DATUM := CtoD(x+str(year(date(),4,0))), ;
                        1->GEB_DATUM := CtoD(x) ) ) }
   oXbp:create():setData()
   oXbp:cargo := "GEB_DATUM"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nFa := 10 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {(nR2+nFl1-nFl3)*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:46
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, ;
                        IIf( DtoC( 1->GESTORBEN )=" ", trim(" "), DtoC( 1->GESTORBEN )), ;
                        IIf( len(x)<7, 1->GESTORBEN := CtoD(x+str(year(date(),4,0))), ;
                        1->GESTORBEN := CtoD(x) ) ) }
   oXbp:create():setData()
   oXbp:cargo := "GESTORBEN"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} ) //+07.06.2011 17:47
   oXbp:caption := "Geburtsort:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:47
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->GEB_IN ), 1->GEB_IN := x ) }
   oXbp:create():setData()
   oXbp:cargo := "GEB_IN"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

//------
   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )    //+07.06.2011 17:48
   oXbp:caption := "Familienstand:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 9 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:48
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->FAMSTAND ), 1->FAMSTAND := x ) }
   oXbp:create():setData()
   oXbp:cargo := "FAMSTAND"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {(nR2+nFl3)*nHV,nBo}, {nBl2*nHV,nBh} )   //+07.06.2011 17:48
   oXbp:caption := "Rel.:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 9 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {nR3*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:48
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->KONF ), 1->KONF := x ) }
   oXbp:create():setData()
   oXbp:cargo := "KONF"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {(nR5-n15)*nHV,nBo}, {nBl2*nHV,nBh} ) //+07.06.2011 17:49
   oXbp:caption := "St-Ang.:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 15 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {(nR5+nFl2-nFl3)*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )   //+07.06.2011 17:49
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->STAATSAN ), 1->STAATSAN := x ) }
   oXbp:create():setData()
   oXbp:cargo := "STAATSAN"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} ) //+07.06.2011 17:49
   oXbp:caption := "Strb-Ort:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 1 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl5*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:49
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
                        IIf( Upper(aEditcontrols[17]:getData()) = "W", ;
                        {aEditControls[19]:setdata(""), ;
                        aEditControls[20]:setdata("zu Hause"), ;
                        aEditControls[21]:setdata(aEditcontrols[8]:getData()), ;
                        aEditControls[22]:setdata(aEditcontrols[9]:getData()) }, ), ;
                        DbRUnlock(RecNo()), SetAppFocus( aEditControls[20] ) }
//   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->KZWO ), 1->KZWO := x ) }
   oXbp:create():setData()
   oXbp:cargo := "KZWO"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nFa := 1 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {(nR2+nFl5+n5)*nHV,nBo}, {nFl5*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:50
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->KZORT ), 1->KZORT := x ) }
   oXbp:create():setData()
   oXbp:cargo := "KZORT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp9 := XbpPushButton():new( drawingArea, , {(nR2+nR2)*nHV,nBo}, {nTl*nHV,nBh} ) //+07.06.2011 17:50
   oXbp9:caption := "~Kennz:"
   oXbp9:clipSiblings := .T.
   oXbp9:create()
   oXbp9:activate := {|| Satzsp(oDlg), Krankenhaus( Upper(Trim(aEditControls[19]:getdata())), ;
                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3 ), ;
                        aEditControls[19]:setdata(cVerst0), ;
                        aEditControls[20]:setdata(cVerst1), ;
                        aEditControls[21]:setdata(cVerst2), ;
                        aEditControls[22]:setdata(cVerst3), ;
                        DbRUnlock(RecNo()), SetAppFocus( aEditControls[20] )  }
   AAdd ( aBut, oXbp9 )

//   oXbp := XbpStatic():new( drawingArea, , {nR2+nFl3,nBo}, {nBl3,nBh} )
//   oXbp:caption := "Kennz:"
//   oXbp:clipSiblings := .T.
//   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
//   oXbp:create()
   nFa := 5 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {(nR2+nFl1-nFl4)*nHV,nBo}, {nFl4*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:51
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
                        Krankenhaus( Upper(Trim(aEditControls[19]:getdata())), ;
                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3 ), ;
                        aEditControls[19]:setdata(cVerst0), ;
                        aEditControls[20]:setdata(cVerst1), ;
                        aEditControls[21]:setdata(cVerst2), ;
                        aEditControls[22]:setdata(cVerst3), ;
                        DbRUnlock(RecNo()), SetAppFocus( aEditControls[20] ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->VERST_KZ ), 1->VERST_KZ := x ) }
   oXbp:create():setData()
   oXbp:cargo := "VERST_KZ"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR4*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:51
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->VERST_IN1 ), 1->VERST_IN1 := x ) }
   oXbp:create():setData()
   oXbp:cargo := "VERST_IN1"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:52
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->VERST_IN2 ), 1->VERST_IN2 := x ) }
   oXbp:create():setData()
   oXbp:cargo := "VERST_IN2"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR4*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:52
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->VERST_IN3 ), 1->VERST_IN3 := x ) }
   oXbp:create():setData()
   oXbp:cargo := "VERST_IN3"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )    //+07.06.2011 17:52
   oXbp:caption := "Tot/Urs/Obd:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:52
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->TOTENSCH ), 1->TOTENSCH := x ) }
   oXbp:create():setData()
   oXbp:cargo := "TOTENSCH"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR4*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:53
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->TODESURS ), 1->TODESURS := x ) }
   oXbp:create():setData()
   oXbp:cargo := "TODESURS"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {(nR4+nFl2+n5)*nHV,nBo}, {nBl4*nHV,nBh} )   //+07.06.2011 18:26
   oXbp:caption := "Obd:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {(nR7-n10-nFl5)*nHV,nBo}, {nFl5*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:53
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->OBDUKT ), 1->OBDUKT := x ) }
   oXbp:create():setData()
   oXbp:cargo := "OBDUKT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

//------
   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} ) //+07.06.2011 17:54
   oXbp:caption := "Gruft/Reihgr:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:54
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->GRREIHE ), 1->GRREIHE := x ) }
   oXbp:create():setData()
   oXbp:cargo := "GRREIHE"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR3*nHV,nBo}, {(nBl2+nBl3)*nHV,nBh} )   //+07.06.2011 17:54
   oXbp:caption := "Gesteck:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR5*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 17:54
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->SGESTECK ), 1->SGESTECK := x ) }
   oXbp:create():setData()
   oXbp:cargo := "SGESTECK"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} ) //+07.06.2011 17:55
   oXbp:caption := "Dekoration:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:55
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->DEKO ), 1->DEKO := x ) }
   oXbp:create():setData()
   oXbp:cargo := "DEKO"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR3*nHV,nBo}, {(nBl2+nBl3)*nHV,nBh} ) //+07.06.2011 17:55
   oXbp:caption := "G„rtner:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR5*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:56
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->GAERT ), 1->GAERT := x ) }
   oXbp:create():setData()
   oXbp:cargo := "GAERT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:56
   oXbp:caption := "Testament:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:56
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->TESTAMENT ), 1->TESTAMENT := x ) }
   oXbp:create():setData()
   oXbp:cargo := "TESTAMENT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR3*nHV,nBo}, {(nBl2+nBl3)*nHV,nBh} ) //+07.06.2011 17:56
   oXbp:caption := "Nachlaá:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR5*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:57
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->NACHLASS ), 1->NACHLASS := x ) }
   oXbp:create():setData()
   oXbp:cargo := "NACHLASS"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:57
   oXbp:caption := "Kriegsrente j/n:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 1 ; nFl := nFa*20
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl5*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:57
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->KRIEGSRENT ), 1->KRIEGSRENT := x ) }
   oXbp:create():setData()
   oXbp:cargo := "KRIEGSRENT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR3*nHV,nBo}, {(nBl2+nBl3)*nHV,nBh} ) //+07.06.2011 17:57
   oXbp:caption := "Vers-Amt:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR5*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:58
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->VERSORGAMT ), 1->VERSORGAMT := x ) }
   oXbp:create():setData()
   oXbp:cargo := "VERSORGAMT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:58
   oXbp:caption := "Autobus:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
//   nFa := 20 ; nFl := nFa*6
//   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:58
//   oXbp:bufferLength := nFa
//   oXbp:clipSiblings := .T.
//   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
////   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
//   //25.11.2022 19:36 ersetzt durch die Zeilen zum Suchen des Kremas in der Adressendatei:
//   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
//   							IIf(obj:getdata()=="KRE", {Krankenhaus( Upper(Trim(obj:getdata())), ;
//                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3 ), ;
//                        obj:setdata(cVerst3), ;
//                        SetAppFocus( obj )},), DbRUnlock(RecNo()) }
//   oXbp:group := XBP_WITHIN_GROUP
//   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->BUSKOMM ), 1->BUSKOMM := x ) }
//   oXbp:create():setData()
//   oXbp:cargo := "BUSKOMM"		//+18.09.2018 21:22
//   AAdd ( aEditControls, oXbp )
//
   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR3*nHV,nBo}, {(nBl2+nBl3)*nHV,nBh} ) //+07.06.2011 17:58
   oXbp:caption := "Bus-Zeit:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 10 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {nR5*nHV,nBo}, {nFl4*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:59
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg),;
                               aEditControls[35]:getdata(), ;
                               aEditControls[35]:setdata(), DbRUnlock(RecNo())  }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, IIf( 1->BUSZEIT=0, Trim(" "), Str( 1->BUSZEIT,5,2 ) ), ;
                1->BUSZEIT := Val( IIf( ","$x, Stuff( x, At(",",x), 1, "." ), x ) ) ) }
   oXbp:create():setData()
   oXbp:cargo := "BUSZEIT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 17:59
   oXbp:caption := "Kaffeetrinken:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:59
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->KAFFEE ), 1->KAFFEE := x ) }
   oXbp:create():setData()
   oXbp:cargo := "KAFFEE"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR3*nHV,nBo}, {(nBl2+nBl3)*nHV,nBh} ) //+07.06.2011 17:59
   oXbp:caption := "Trauerbriefe:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR5*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:00
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->TBRIEFE ), 1->TBRIEFE := x ) }
   oXbp:create():setData()
   oXbp:cargo := "TBRIEFE"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR1*nHV,nBo}, {nBl1*nHV,nBh} )   //+07.06.2011 18:00
   oXbp:caption := "WAZ:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 70 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR2*nHV,nBo}, {2*nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )   //+07.06.2011 18:00
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->WAZ ), 1->WAZ := x ) }
   oXbp:create():setData()
   oXbp:cargo := "WAZ"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

//-----
   nBo := nRo-nBz
   oXbp := XbpStatic():new( drawingArea, , {(nR4)*nHV,nBo}, {(nBl1+nBl3)*nHV,nBh} ) //+07.06.2011 18:00
   oXbp:caption := "Anspr./Anrede:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 10 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {(nR4+nFl1-nFl3)*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:01
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_ANR ), 1->ANSP_ANR := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_ANR"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )


   nBo := nBo-nBz
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR4*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:01
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_NAME ), 1->ANSP_NAME := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_NAME"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR4*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:01
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_VNAME ), 1->ANSP_VNAME := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_VNAME"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR4*nHV,nBo}, {nBl3*nHV,nBh} )   //+07.06.2011 18:01
   oXbp:caption := "Verw.:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {(nR4+nBl3)*nHV,nBo}, {(nFl2+nBl4)*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )   //+07.06.2011 18:02
//   oXbp := XbpSLE():new( drawingArea, , {nR4,nBo}, {nFl1,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_BEZ ), 1->ANSP_BEZ := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_BEZ"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR4*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:02
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_STR ), 1->ANSP_STR := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_STR"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR4*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:02
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_ORT ), 1->ANSP_ORT := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_ORT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR4*nHV,nBo}, {nBl3*nHV,nBh} )   //+07.06.2011 18:03
   oXbp:caption := "Bank:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*5
   oXbp := XbpSLE():new( drawingArea, , {(nR4+nBl3)*nHV,nBo}, {(nFl2+nBl4)*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )   //+07.06.2011 18:03
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_BANKV ), 1->ANSP_BANKV := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_BANKV"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   nFa := 12 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {nR4*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:03
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_KTO ), 1->ANSP_KTO := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_KTO"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nFa := 10 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {(nR7-nFl3-n10)*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:03
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_BLZ ), 1->ANSP_BLZ := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_BLZ"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR4*nHV,nBo}, {nBl3*nHV,nBh} ) //+07.06.2011 18:04
   oXbp:caption := "Inh:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*5
   oXbp := XbpSLE():new( drawingArea, , {(nR4+nBl3)*nHV,nBo}, {(nFl1-nBl3)*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )   //+07.06.2011 18:04
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->ANSP_KTOI ), 1->ANSP_KTOI := x ) }
   oXbp:create():setData()
   oXbp:cargo := "ANSP_KTOI"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

//------
   nBo := nRo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl1*nHV,nBh} ) //+07.06.2011 18:05
   oXbp:caption := "Best.-Art (E/F/S/A):"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 1 ; nFl := nFa*20
   oXbp := XbpSLE():new( drawingArea, , {nR8*nHV,nBo}, {nFl5*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:05
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->BEST_ART ), 1->BEST_ART := x ) }
   oXbp:create():setData()
   oXbp:cargo := "BEST_ART"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {(nR8+nFl5+n5)*nHV,nBo}, {(nBl1+nBl3)*nHV,nBh} )  //+07.06.2011 18:05
   oXbp:caption := "šb.(ab Z/K):"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR9*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:05
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->UEBERFRIED ), 1->UEBERFRIED := x ) }
   oXbp:create():setData()
   oXbp:cargo := "UEBERFRIED"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
	//26.11.2022 09:01 von Autobus hierher verschoben:
   oXbp1KRE := XbpPushButton():new( drawingArea, , {nR7*nHV,nBo}, {nTl/2*nHV,nBh} )  //07.11.2022 21:43
   oXbp1KRE:caption := "KRE"
   oXbp1KRE:clipSiblings := .T.
   oXbp1KRE:create()
   oXbp1KRE:activate := {|| Satzsp(oDlg), Krankenhaus( Upper(Trim(XbpObjekt(aEditcontrols,"BUSKOMM"):getdata())), ;
                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3 ), ;
                        XbpObjekt(aEditcontrols,"BUSKOMM"):setdata(cVerst3), ;
                        DbRUnlock(RecNo()), SetAppFocus( XbpObjekt(aEditcontrols,"BUSKOMM") )  }
   AAdd ( aBut, oXbp1KRE )
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {(nR7+nT1/2)*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 17:58
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
//   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   //25.11.2022 19:36 ersetzt durch die Zeilen zum Suchen des Kremas in der Adressendatei:
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
   							IIf(obj:getdata()=="KRE", {Krankenhaus( Upper(Trim(obj:getdata())), ;
                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3 ), ;
                        obj:setdata(cVerst3), ;
                        SetAppFocus( obj )},), DbRUnlock(RecNo()) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->BUSKOMM ), 1->BUSKOMM := x ) }
   oXbp:create():setData()
   oXbp:cargo := "BUSKOMM"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl1*3*nHV,nBh} )  //+07.06.2011 18:06
   oXbp:caption := "Friedhof:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR9*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:06
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
//   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
	// 25.11.2022 19:35  sucht den Friedhof in der Adressendatei:
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
   							IIf(obj:getdata()="FH", ;
   							{Krankenhaus( Upper(Trim(obj:getdata())), ;
                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3 ), ;
                        obj:setdata(cVerst1 + " " + cVerst3), ;
                        SetAppFocus( obj )}, ), DbRUnlock(RecNo()) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->BEIFRIED ), 1->BEIFRIED := x ) }
   oXbp:create():setData()
   oXbp:cargo := "BEIFRIED"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   cDeko := "Zelle"
   aDeko := { "Zelle", "Kapelle", "Grab", "Korb" }
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl1*3*nHV,nBh} )  //+07.06.2011 18:06
   oXbp:caption := "Dekoration (Zelle/Kapelle/Grab/Korb):"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR9*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:07
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
//   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->DEKO ), 1->DEKO := x ) }
   oXbp:create():setData()
   oXbp:cargo := "DEKO"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl1*3*nHV,nBh} )  //+07.06.2011 18:25
   oXbp:caption := "Trauerfeier (Sarg/Urne/keine)(Orgel):"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*5
   oXbp := XbpSLE():new( drawingArea, , {nR9*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:07
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->KOMMBEERD1 ), 1->KOMMBEERD1 := x ) }
   oXbp:create():setData()
   oXbp:cargo := "KOMMBEERD1"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl1*3*nHV,nBh} ) //+07.06.2011 18:07
   oXbp:caption := "Gemeinde - Messe/WGD:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*5
   oXbp := XbpSLE():new( drawingArea, , {nR9*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:08
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->KOMMBEERD2 ), 1->KOMMBEERD2 := x ) }
   oXbp:create():setData()
   oXbp:cargo := "KOMMBEERD2"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl2*nHV,nBh} )   //+07.06.2011 18:08
   oXbp:caption := "Messe in:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*4
   oXbp := XbpSLE():new( drawingArea, , {nR8*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:08
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->MESSEWO ), 1->MESSEWO := x ) }
   oXbp:create():setData()
   oXbp:cargo := "MESSEWO"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR9*nHV,nBo}, {nBl3*nHV,nBh} )   //+07.06.2011 18:08
   oXbp:caption := "am:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 10 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {(nR9+nBl3)*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:09
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
                               aEditControls[56]:getdata(), ;
                               aEditControls[56]:setdata(), DbRUnlock(RecNo())  }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, ;
                        IIf( DtoC( 1->MESSEDAT )=" ", trim(" "), DtoC( 1->MESSEDAT )), ;
                        IIf( len(x)<7, 1->MESSEDAT := CtoD(x+str(year(date(),4,0))), ;
                        1->MESSEDAT := CtoD(x) ) ) }
   oXbp:create():setData()
   oXbp:cargo := "MESSEDAT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   nFa := 5 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {nBSb-(nFl4+n15)*nHV,nBo}, {nFl4*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )   //+07.06.2011 18:09
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
                               aEditControls[57]:getdata(), ;
                               aEditControls[57]:setdata(), DbRUnlock(RecNo())  }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, IIf( 1->MESSEZEIT=0, Trim(" "), Str( 1->MESSEZEIT,5,2 ) ), ;
                1->MESSEZEIT := Min(23.59,Val( IIf( ","$x, Stuff( x, At(",",x), 1, "." ), IIf(Len(x)==4,x:=SubStr(x,1,2)+"."+SubStr(x,3,2),x ))) ) ) }
   oXbp:create():setData()
   oXbp:cargo := "MESSEZEIT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {(nBl1+nBl3)*nHV,nBh} )   //+07.06.2011 18:09
   oXbp:caption := "Beerdigung am:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*5
   oXbp := XbpSLE():new( drawingArea, , {(nR8+nFl2-nFl3)*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )   //+07.06.2011 18:09
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->BEERDTAG ), 1->BEERDTAG := x ) }
   oXbp:create():setData()
   oXbp:cargo := "BEERDTAG"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR9*nHV,nBo}, {nBl3*nHV,nBh} ) //+07.06.2011 18:10
   oXbp:caption := "am:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 10 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {(nR9+nBl3)*nHV,nBo}, {nFl3*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:10
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
//   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), ;
//                               aEditControls[59]:getdata(), ;
//                               aEditControls[59]:setdata()  }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
                        obj:getdata(), obj:setdata(), ;
                        aEditControls[58]:setData( Cdow(CtoD(obj:getData()) ) ), DbRUnlock(RecNo()) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, ;
                        IIf( DtoC( 1->BEERD_DAT )=" ", trim(" "), DtoC( 1->BEERD_DAT )), ;
                        IIf( len(x)<7, 1->BEERD_DAT := CtoD(x+str(year(date(),4,0))), ;
                        1->BEERD_DAT := CtoD(x) ) ) }
   oXbp:create():setData()
   oXbp:cargo := "BEERD_DAT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   nFa := 5 ; nFl := nFa*7
   oXbp := XbpSLE():new( drawingArea, , {nBSb-(nFl4+n15)*nHV,nBo}, {nFl4*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:11
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
                               aEditControls[60]:getdata(), ;
                               aEditControls[60]:setdata(), DbRUnlock(RecNo())  }
   oXbp:group := XBP_WITHIN_GROUP
//   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Transform( 1->BEERD_ZEIT, '@N' ), 1->BEERD_ZEIT := ;
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, IIf( 1->BEERD_ZEIT=0, Trim(" "), Str( 1->BEERD_ZEIT,5,2 ) ), ;
                1->BEERD_ZEIT := Min(23.59,Val( IIf( ","$x, Stuff( x, At(",",x), 1, "." ), IIf(Len(x)==4,x:=SubStr(x,1,2)+"."+SubStr(x,3,2),x ))) ) ) }
   oXbp:create():setData()
   oXbp:cargo := "BEERD_ZEIT"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl1*3*nHV,nBh} ) //+07.06.2011 18:11
   oXbp:caption := "Pastor / Prediger:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 28 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR9*nHV,nBo}, {nFl1*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:11
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->PASTOR ), 1->PASTOR := x ) }
   oXbp:create():setData()
   oXbp:cargo := "PASTOR"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl2*nHV,nBh} ) //+07.06.2011 18:11
   oXbp:caption := "Taxi:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 50 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR8*nHV,nBo}, {(nFl1+nFl2)*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:11
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->TAXI ), 1->TAXI := x ) }
   oXbp:create():setData()
   oXbp:cargo := "TAXI"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nRo-10*nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {(nBl1+nBl3)*nHV,nBh} )   //+07.06.2011 18:12
   oXbp:caption := "Sargtr„ger:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 2 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {(nR8+nFl2-nFl5)*nHV,nBo}, {nFl5*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )   //+07.06.2011 18:12
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:tabStop := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->SARGTRAE ), 1->SARGTRAE := x ) }
   oXbp:create():setData()
   oXbp:cargo := "SARGTRAE"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR9*nHV,nBo}, {(nBl1+nBl3)*nHV,nBh} )   //+07.06.2011 18:13
   oXbp:caption := "Aufbahrung:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 2 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nBSb-(nFl5+n15)*nHV,nBo}, {nFl5*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )   //+07.06.2011 18:13
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->KZOFFGE ), 1->KZOFFGE := x ) }
   oXbp:create():setData()
   oXbp:cargo := "KZOFFGE"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo-nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl1*nHV,nBh} ) //+07.06.2011 18:13
   oXbp:caption := "Eig.Bekl.:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {(nR7+nBl1)*nHV,nBo}, {nFl2*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )  //+07.06.2011 18:13
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->BEKLEID ), 1->BEKLEID := x ) }
   oXbp:create():setData()
   oXbp:cargo := "BEKLEID"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )

   nBo := nBo
   oXbp := XbpStatic():new( drawingArea, , {nR9*nHV,nBo}, {nBl1*nHV,nBh} ) //+07.06.2011 18:14
   oXbp:caption := "Schmuck:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 20 ; nFl := nFa*6
//   oXbp := XbpSLE():new( drawingArea, , {nR9+nBl1,nBo}, {nFl2,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oXbp := XbpSLE():new( drawingArea, , {(nR9+nBl1)*nHV,nBo}, {nFl2*nHV,nBh}, )   //+07.06.2011 18:14
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->RING ), 1->RING := x ) }
   oXbp:create():setData()
   oXbp:cargo := "RING"		//+18.09.2018 21:22
   AAdd ( aEditControls, oXbp )



      oXbpN := XbpMle():new( drawingArea,, {nR7*nHV,nRo-16*nBz}, {nBSb-(nR7+n20)*nHV,5*nBz-n5}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:15
      oXbpN:dataLink  := {|x| IIf( PCount()==0, 1->NOTIZ, 1->NOTIZ := x ) }
      oXbpN:clipSiblings := .T.
      oXbpN:ignoreTab := .T.
      oXbpN:tabStop   := .T.
      oXbpN:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
      oXbpN:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
      oXbpN:wordWrap  := .T.
      oXbpN:horizScroll := .F.
      oXbpN:group     := XBP_END_GROUP
      oXbpN:create()
      Sleep(5)             //+07.06.2011 18:50 warten bis es created ist
      oXbpN:setData()      //+07.06.2011 18:49 separat wg race-Effekt
      AAdd ( aEditControls, oXbpN )

   nBo := nRo-17*nBz
   oXbp32 := XbpPushButton():new( drawingArea, , {nT2*nHV,nBo}, {nTl*nHV,nBh} ) //+07.06.2011 18:15
   oXbp32:caption := "TFM"
   oXbp32:clipSiblings := .T.
   oXbp32:create()
   oXbp32:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            RunDosWin(oDlg, "DrFirma", {0,0}, {0,0}, "Todesfallmeldung ans Versorgungsamt", ;
                          Str(1->auftrnr,6,0)),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp32 )

   oXbp33 := XbpPushButton():new( drawingArea, , {nT3*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 18:15
   oXbp33:caption := "KK"
   oXbp33:clipSiblings := .T.
   oXbp33:group := XBP_BEGIN_GROUP
   oXbp33:create()
   oXbp33:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            KKBrief(.T.), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp33 )
//+28.06.2018 13:40 KKBrief weiter hinten in dieser prg:
//            RunDosWin(oDlg, "FoKK", {0,0}, {0,0}, "Rechnung an die Krankenkasse", ;
//                          Str(1->auftrnr,6,0)),  SetAppFocus( oBest ), ;

   oXbp34a := XbpPushButton():new( drawingArea, , {nT4a*nHV,nBo}, {nTl*nHV,nBha} )
   oXbp34a:caption := "Guth.AZA"
   oXbp34a:clipSiblings := .T.
   oXbp34a:group := XBP_WITHIN_GROUP
   oXbp34a:create()
   oXbp34a:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            HTML_Brief( "dummy.abr", "KSO_GhAusz.png"), ;
            WriterBrief( 1->ansp_anr,Trim(1->ansp_vname)+" "+1->ansp_name,1->ansp_str,1->ansp_ort,"Guthaben.txt" ), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp34a )

   oXbp34b := XbpPushButton():new( drawingArea, , {nT4b*nHV,nBo}, {nTl*nHV,nBha} )
   oXbp34b:caption := "A-Konto"
   oXbp34b:clipSiblings := .T.
   oXbp34b:group := XBP_WITHIN_GROUP
   oXbp34b:create()
   oXbp34b:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            WriterBrief( 1->ansp_anr,Trim(1->ansp_vname)+" "+1->ansp_name,1->ansp_str,1->ansp_ort,"ErinnA-Kto.txt" ), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp34b )

//   oXbp34 := XbpPushButton():new( drawingArea, , {nT4,nBo}, {nTl,nBh} )
//   oXbp34:caption := "~Uebe"
//   oXbp34:clipSiblings := .T.
//   oXbp34:group := XBP_WITHIN_GROUP
//   oXbp34:create()
//   oXbp34:activate := {|| IIf( aData1[1] == Val( aEditcontrols[1]:editbuffer() ), Satzsp( oDlg ), ;
//                        { 1->(DbAppend()), Satzsp( oDlg ), ;
//                        aData1 := SatzGet( Select(), RecNo() )} ), ;
//                        Gather( aEditControls ), 1->(DbCommit()), ;
//                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
//            Rech4Eingabe( Str(1->Auftrnr,6,0), oDlg ), ;
//                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
//                        aData1 := SatzGet( Select(), RecNo() ), ;
//                        SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY )), ;
//                        oXbp:enable() }

   oXbp35 := XbpPushButton():new( drawingArea, , {nT5*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 18:15
   oXbp35:caption := "Stap-V"
   oXbp35:clipSiblings := .T.
   oXbp35:group := XBP_WITHIN_GROUP
   oXbp35:create()
   oXbp35:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ),  ;
           StapelVEingabe( oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp35 )

   oXbp36 := XbpPushButton():new( drawingArea, , {nT6*nHV,nBo}, {nTl*nHV,nBh} )
   oXbp36:caption := "Kuvert"
   oXbp36:clipSiblings := .T.
   oXbp36:group := XBP_END_GROUP
   oXbp36:create()
   oXbp36:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ),  ;
           KuvertDruck( "j" ), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp36 )

   oXbp37 := XbpPushButton():new( drawingArea, , {nT7*nHV,nBo}, {nTl*nHV,nBh} )
   oXbp37:caption := "KuvKl"
   oXbp37:clipSiblings := .T.
   oXbp37:create()
   oXbp37:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ),  ;
           KuvertDruck( "k" ), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp37 )

   nBo := nRo-18*nBz
   oXbp12 := XbpPushButton():new( drawingArea, , {nT2*nHV,nBo}, {nTl*nHV,nBh} ) //+07.06.2011 18:16
   oXbp12:caption := "~Brief"
   oXbp12:clipSiblings := .T.
   oXbp12:create()
   oXbp12:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            AdressBrief( .T., 1->ansp_anr, (Trim(1->ansp_vname)+" "+Trim(1->ansp_name)), ;
                              1->ansp_str, 1->ansp_ort ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp12 )

   oXbp13 := XbpPushButton():new( drawingArea, , {nT3*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 18:16
   oXbp13:caption := "~Term"
   oXbp13:clipSiblings := .T.
   oXbp13:group := XBP_BEGIN_GROUP
   oXbp13:create()
   oXbp13:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            TerminEingabe( oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp13 )

   oXbp34c := XbpPushButton():new( drawingArea, , {nT4c*nHV,nBo}, {nTl*nHV,nBha} )
   oXbp34c:caption := "GH-Mittlg"
   oXbp34c:clipSiblings := .T.
   oXbp34c:group := XBP_WITHIN_GROUP
   oXbp34c:create()
   oXbp34c:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            WriterBrief( 1->ansp_anr,Trim(1->ansp_vname)+" "+1->ansp_name,1->ansp_str,1->ansp_ort,"ErinnTF.txt" ), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp34c )

   oXbp34d := XbpPushButton():new( drawingArea, , {nT4d*nHV,nBo}, {nTl*nHV,nBha} )
   oXbp34d:caption := "Kuv.KSO"
   oXbp34d:clipSiblings := .T.
   oXbp34d:group := XBP_WITHIN_GROUP
   oXbp34d:create()
   oXbp34d:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
           KuvertDruck( "j", .T. ), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp34d )

   oXbp15 := XbpPushButton():new( drawingArea, , {nT5*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 18:16
   oXbp15:caption := "Ser~ie"
   oXbp15:clipSiblings := .T.
   oXbp15:group := XBP_WITHIN_GROUP
   oXbp15:create()
   oXbp15:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ),  ;
           SerienEingabe( oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp15 )

   oXbp16 := XbpPushButton():new( drawingArea, , {nT6*nHV,nBo}, {nTl*nHV,nBh} ) //+07.06.2011 18:16
   oXbp16:caption := "~Leist"
   oXbp16:clipSiblings := .T.
   oXbp16:group := XBP_END_GROUP
   oXbp16:create()
//   oXbp6:activate := {|| Satzsp( oDlg ),  Gather( aEditControls ), ;
   oXbp16:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ),  ;
           ArtikelEingabe( oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp16 )

   oXbp17 := XbpPushButton():new( drawingArea, , {nT7*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 18:17
   oXbp17:caption := "For~m"
   oXbp17:clipSiblings := .T.
   oXbp17:create()
   oXbp17:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ),  ;
           FormularVerwaltung( oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp17 )

   nBo := nRo-19*nBz
   oXbp22 := XbpPushButton():new( drawingArea, , {nT2*nHV,nBo}, {nTl*nHV,nBh} ) //+07.06.2011 18:17
   oXbp22:caption := "~Vers"
   oXbp22:clipSiblings := .T.
   oXbp22:create()
   oXbp22:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            VersEingabe( Str(1->Auftrnr,6,0), oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp22 )

//                        Neu( oDlg, @aData1, nXmod, nYmod ), Radio(), 1->(DbCommit()), ;


   oXbp23 := XbpPushButton():new( drawingArea, , {nT3*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 18:17
   oXbp23:caption := "Rec~h"
   oXbp23:clipSiblings := .T.
   oXbp23:group := XBP_BEGIN_GROUP
   oXbp23:create()
   oXbp23:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            Rech3Eingabe( Str(1->Auftrnr,6,0), oDlg ), SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp23 )

   oXbp24 := XbpPushButton():new( drawingArea, , {nT4*nHV,nBo}, {nTl*nHV,nBh} ) //+07.06.2011 18:17
   oXbp24:caption := "Au~fst"
   oXbp24:clipSiblings := .T.
   oXbp24:group := XBP_WITHIN_GROUP
   oXbp24:create()
   oXbp24:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
            Rech5Eingabe( Str(1->Auftrnr,6,0), oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp24 )

   oXbp24d := XbpPushButton():new( drawingArea, , {nT4d*nHV,nBo}, {nTl*nHV,nBh} )
   oXbp24d:caption := "IndiTxt"
   oXbp24d:clipSiblings := .T.
   oXbp24d:group := XBP_WITHIN_GROUP
   oXbp24d:create()
   oXbp24d:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
           Inditext( oDlg ), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp24d )


   oXbp25 := XbpPushButton():new( drawingArea, , {nT5*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 18:18
   oXbp25:caption := "Sta~pel"
   oXbp25:clipSiblings := .T.
   oXbp25:group := XBP_WITHIN_GROUP
   oXbp25:create()
   oXbp25:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ),  ;
           StapelEingabe( oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp25 )

   oXbp26 := XbpPushButton():new( drawingArea, , {nT6*nHV,nBo}, {nTl*nHV,nBh} ) //+07.06.2011 18:18
   oXbp26:caption := "Adr"
   oXbp26:clipSiblings := .T.
   oXbp26:group := XBP_END_GROUP
   oXbp26:create()
//   oXbp26:activate := {|| Satzsp( oDlg ),  Gather( aEditControls ), ;
   oXbp26:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ),  ;
           AdressEingabe( oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp26 )

   oXbp27 := XbpPushButton():new( drawingArea, , {nT7*nHV,nBo}, {nTl*nHV,nBh} )  //+07.06.2011 18:18
   oXbp27:caption := "K~ont"
   oXbp27:clipSiblings := .T.
   oXbp27:create()
   oXbp27:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ),  ;
           AuftrKontrolle( Str(1->Auftrnr,6,0), oDlg ),  SetAppFocus( oBest ), ;
                        1->(DbRUnlock( ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp27 )



   nBo := nRo-20*nBz
   oXbp := XbpStatic():new( drawingArea, , {nR7*nHV,nBo}, {nBl2*nHV,nBh} )   //+07.06.2011 18:18
   oXbp:caption := "Status:"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   nFa := 50 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {nR8*nHV,nBo}, {(nFl1+nFl2)*nHV,nBh}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) //+07.06.2011 18:19
   oXbp:bufferLength := nFa
   oXbp:clipSiblings := .T.
   oXbp:setInputFocus  := {|mp1,mp2,obj| HiliteSle( obj ) }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) }
   oXbp:group := XBP_WITHIN_GROUP
   oXbp:dataLink := {|x| IIf( PCOUNT()==0, Trim( 1->STATUSTEXT ), 1->STATUSTEXT := x ) }
   oXbp:create():setData()
   oXbp:cargo := "STATUSTEXT"		//+30.10.2018 13:52
   AAdd ( aEditControls, oXbp )

   nBo := nRo-2*nBz
   oXbp1V := XbpPushButton():new( drawingArea, , {nR1*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1V:caption := "V"
   oXbp1V:clipSiblings := .T.
   oXbp1V:create()
   oXbp1V:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Suchen( oDlg, @aData1, nXmod, nYmod*2 ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }

   oXbp1FH := XbpPushButton():new( drawingArea, , {nR8*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.11.2022 21:44
   oXbp1FH:caption := "FH"
   oXbp1FH:clipSiblings := .T.
   oXbp1FH:create()
   oXbp1FH:activate := {|x,o| Satzsp(oDlg), o := XbpObjekt(aEditcontrols,"BEIFRIED"), Krankenhaus( Upper(Trim(o:getdata())), ;
                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3 ), ;
                        o:setdata(cVerst1 + " " + cVerst3), ;
                        DbRUnlock(RecNo()), SetAppFocus( o )  }
   AAdd ( aBut, oXbp1FH )

   nBo := nRo-5*nBz
   oXbp1S := XbpPushButton():new( drawingArea, , {nR1*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1S:caption := "S"
   oXbp1S:clipSiblings := .T.
   oXbp1S:create()
   oXbp1S:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Suchen( oDlg, @aData1, nXmod, nYmod*2 ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }

   nBo := nRo-1*nBz
   oXbp1A := XbpPushButton():new( drawingArea, , {nR4*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1A:caption := "A"
   oXbp1A:clipSiblings := .T.
   oXbp1A:create()
   oXbp1A:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Suchen( oDlg, @aData1, nXmod, nYmod*2 ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }

   nBo := nRo
   oXbp1F := XbpPushButton():new( drawingArea, , {nR4*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1F:caption := "F"
   oXbp1F:clipSiblings := .T.
   oXbp1F:create()
   oXbp1F:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Suchen( oDlg, @aData1, nXmod, nYmod*2 ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }

   nBo := nRo-18*nBz
//   oXbp1KRE := XbpPushButton():new( drawingArea, , {nR3*nHV,nBo}, {nTl/2*nHV,nBh} )  //07.11.2022 21:43
//   oXbp1KRE:caption := "KRE"
//   oXbp1KRE:clipSiblings := .T.
//   oXbp1KRE:create()
//   oXbp1KRE:activate := {|| Satzsp(oDlg), Krankenhaus( Upper(Trim(XbpObjekt(aEditcontrols,"BUSKOMM"):getdata())), ;
//                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3 ), ;
//                        XbpObjekt(aEditcontrols,"BUSKOMM"):setdata(cVerst3), ;
//                        DbRUnlock(RecNo()), SetAppFocus( XbpObjekt(aEditcontrols,"BUSKOMM") )  }
//   AAdd ( aBut, oXbp1KRE )
//
   nBo := nRo-19*nBz
   oXbp1F := XbpPushButton():new( drawingArea, , {nR1*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1F:caption := "KK"
   oXbp1F:clipSiblings := .T.
   oXbp1F:create()
   oXbp1F:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Trauerbrief( "KK" ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp1F )

//   nBo := nRo-19*nBz
   oXbp1F := XbpPushButton():new( drawingArea, , {nR3*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1F:caption := "TK"
   oXbp1F:clipSiblings := .T.
   oXbp1F:create()
   oXbp1F:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Trauerbrief( "TK" ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp1F )

//   nBo := nRo-19*nBz
   oXbp1F := XbpPushButton():new( drawingArea, , {(nR3+nTl/2)*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1F:caption := "DK"
   oXbp1F:clipSiblings := .T.
   oXbp1F:create()
   oXbp1F:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Trauerbrief( "DK" ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp1F )

   nBo := nRo-20*nBz
   oXbp1F := XbpPushButton():new( drawingArea, , {nR1*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1F:caption := "ZA"
   oXbp1F:clipSiblings := .T.
   oXbp1F:create()
   oXbp1F:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Trauerbrief( "ZA" ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp1F )

//   nBo := nRo-19*nBz
   oXbp1F := XbpPushButton():new( drawingArea, , {(nR1+nTl/2)*nHV,nBo}, {nTl/2*nHV,nBh} )  //+07.06.2011 17:33
   oXbp1F:caption := "ZD"
   oXbp1F:clipSiblings := .T.
   oXbp1F:create()
   oXbp1F:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
                        Trauerbrief( "ZD" ), Scatter ( aEditControls ), ;
                        IIf( cV == "V", ;
                        oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp1F )

//------------------------------------------
   oDlg:setModalState( XBP_DISP_APPMODAL )
   oDlg:show()
*****************************26.11.2019 09:55 nur zum TEST ....-> klappt! Beschriftung in Times!
			XFont := Str(Val(cBFont),2,0)+".Times New Roman"
			AEval(oCB:childlist(),{|o| IIf(!o:isderivedfrom("XbpSle") .AND. !o:isderivedfrom("XbpMle"), ;
												o:setFontCompoundName( XFont ),)})
         IIF (AScan( aEditcontrols, oFocSle ) == 0, oFocSle := aEditcontrols[2],)	//+26.11.2019 14:47
*******************************
   IIf( cV == "V", oBest:setColorBG( nBSFarbe ),oBest:setColorBG( nBGFarbe )) //07.06.2011 20:44GRA_CLR_BACKGROUND ))
   SetAppFocus( oDlg )
//*
   aData1 := SatzGet( Select(), RecNo() )               // TT
*//
//------------------------------------------
	// ist als Referenz gedacht:		13.12.2020 15:45
	aEC := aEditControls			//+14.12.2020 11:53
	Rein_in_Auftrag()				//+14.12.2020 11:53
	oDlg:configure()				//+15.12.2020 18:36
	SetAppFocus(oXbpG1)			//+17.12.2020 11:05
//      das Ende des Hauptprogramms:

   nEvent := xbe_None
   DO WHILE nEvent <> xbeP_Close
      nEvent := AppEvent( @mp1, @mp2, @oXbp )
      IF nEvent = xbeP_Close
         IF Empty(mp1)
            y := AppQuit( oDlg, aEditControls, aData1, cV )
            IF y  == XBPMB_RET_CANCEL .OR. ( y == XBPMB_RET_NO .AND. IsMemVar( "NurWindows" ) )
               nEvent := 0
               LOOP
            ENDIF
         ELSE           // wenn Abbruch durch AppQuit, dann mp1!=NIL
            LOOP  //k 08.07.2013 22:18 weil sonst das Fenster destroyed wird vor dem gather()!
         ENDIF
      ENDIF
      IF nEvent == xbeP_Keyboard
      DO CASE
         CASE mp1 == xbeK_ALT_F7
         	Satzsp(oDlg)
         	1->stern := ""
         	DbRUnlock()
         CASE mp1 == xbeK_ALT_S
         	SetAppFocus(oXbp1)	//+21.09.2018 13:36
            PostAppEvent( xbeP_Activate,,, oXbp1)
         CASE mp1 == xbeK_ALT_N
            PostAppEvent( xbeP_Activate,,, oXbp2)
         CASE mp1 == xbeK_SH_PGUP
            PostAppEvent( xbeP_Activate,,, oXbp3)
         CASE mp1 == xbeK_PGUP
            PostAppEvent( xbeP_Activate,,, oXbp4)
         CASE mp1 == xbeK_PGDN
            PostAppEvent( xbeP_Activate,,, oXbp5)
         CASE mp1 == xbeK_SH_PGDN
            PostAppEvent( xbeP_Activate,,, oXbp6)
         CASE mp1 == xbeK_ESC .or. mp1 == xbeK_F10
            y := AppQuit( oDlg, aEditControls, aData1, cV )
            IF y  == XBPMB_RET_CANCEL .OR. ( y == XBPMB_RET_NO .AND. IsMemVar( "NurWindows" ) )
               LOOP
            ENDIF
//////            PostAppEvent( xbeP_Activate,,, oXbp7)
         CASE mp1 == xbeK_ALT_E .AND. oXbp8:cargo == NIL
            PostAppEvent( xbeP_Activate,,, oXbp8)
         CASE mp1 == xbeK_ALT_K .AND. oXbp9:cargo == NIL
            PostAppEvent( xbeP_Activate,,, oXbp9)
         CASE mp1 == xbeK_ALT_V .AND. oXbp22:cargo == NIL
            PostAppEvent( xbeP_Activate,,, oXbp22)
         CASE mp1 == xbeK_ALT_H .AND. oXbp23:cargo == NIL
            PostAppEvent( xbeP_Activate,,, oXbp23)
         CASE mp1 == xbeK_ALT_F .AND. oXbp24:cargo == NIL
            PostAppEvent( xbeP_Activate,,, oXbp24)
         CASE mp1 == xbeK_ALT_P .AND. oXbp25:cargo == NIL
            PostAppEvent( xbeP_Activate,,, oXbp25)
         CASE mp1 == xbeK_ALT_O .AND. oXbp27:cargo == NIL
            PostAppEvent( xbeP_Activate,,, oXbp27)
//         CASE mp1 == xbeK_ALT_D
//            Satzsp( oDlg );  Gather( aEditControls )
//            Trckng( 1, RecNo(), aData1, cV )
//            cAuf := str( Auftrnr,6,0 )
////            Rechdruni( cAuf, "h", DtoC( date() ), "j", 1 )
//            Blatt1dr( "blatt1dr.dbf", "Bestattungs-Auftrag", oDlg, 700*nV, 480*nV )
//            Scatter ( aEditControls )
//            aData1 := SatzGet( Select(), RecNo() )
//            SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY ))
//            oXbp:enable()
         CASE mp1 == xbeK_ALT_R
            Satzsp( oDlg );  Gather( aEditControls )
            Trckng( 1, RecNo(), aData1, cV )
            Radio()
            Scatter ( aEditControls )
            aData1 := SatzGet( Select(), RecNo() )
            SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY ))
            oXbp:enable()
//         CASE mp1 == xbeK_CTRL_F3
//            Satzsp( oDlg );  Gather( aEditControls )
//            Trckng( 1, RecNo(), aData1, cV )
//            KRech3Eingabe( Str(1->Auftrnr,6,0), oDlg )
//            Scatter ( aEditControls )
//            aData1 := SatzGet( Select(), RecNo() )
//            SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY ))
//            oXbp:enable()
//         CASE mp1 == xbeK_CTRL_F4
//            SELECT 23
//            USE C:\HDBE\SICHERUN\AUFTR
//            INDEX ON Str(auftrnr,6,0) TO C:\HDBE\SICHERUN\XAUFAUF
//            USE
//            SELECT 1
//         CASE mp1 == xbeK_CTRL_F5
//            Satzsp( oDlg );  Gather( aEditControls )
//            Trckng( 1, RecNo(), aData1, cV )
//            KRech5Eingabe( Str(1->Auftrnr,6,0), oDlg )
//            Scatter ( aEditControls )
//            aData1 := SatzGet( Select(), RecNo() )
//            SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY ))
//            oXbp:enable()
         CASE mp1 == xbeK_CTRL_F12
               IF ConfirmBox( oCB, ;      //+24.03.2012 10:59
                           "Wollen Sie wirklich diesen Auftrag in allen Filialen l”schen?" + CRLF + ;
                           "Achtung: OK schreibt den L”schbefehl in die šbertragungsdatei!" + CRLF + ;
                           "abbrechen mit <Esc>", ;
                           "Funktion Auftrag fernl”schen!", ;
                           XBPMB_OKCANCEL, ;
                           XBPMB_QUESTION ) == XBPMB_RET_OK
                  IF ConfirmBox( oCB, ;      //+24.03.2012 10:58
                              "Die Daten dieser Maske wirklich als gel”scht markieren?" + CRLF + ;
                              "(Der Datensatz wird dann beim n„chsten Prflauf gel”scht!)" + CRLF + ;
                              "abbrechen mit <Esc>", ;
                              "Zur Sicherheit nochmal best„tigen:", ;
                              XBPMB_OKCANCEL, ;
                              XBPMB_QUESTION ) == XBPMB_RET_OK
                        Satzsp( oDlg )
                        1->name:="#"+Left(1->name,Len(1->name)-1)
                        1->ansp_name:="#"+Left(1->ansp_name,Len(1->ansp_name)-1)
                        1->(DbCommit())
                        Scatter( aEditcontrols ) //+24.03.2012 11:20
                        DbUnlock(RecNo()) //+24.03.2012 10:58
                        Trckng( 1, RecNo(), aData1, cV )
                        oXbp:enable()
                  ENDIF
               ENDIF
/*16.04.2008 12:27 damit kann man eine Bestattungsfallmaske mit Rechnung + Zahlung komplett zwangs-bertragen: */
//
         CASE mp1 == xbeK_SH_CTRL_LEFT //+14.09.2019 16:57
               IF ConfirmBox( oCB, ;
                        "Wollen Sie wirklich die Logbuch-Eintr„ge sehen?" + CRLF + ;
                        "Achtung: Wenn Sie diese Funktion dann verlassen wollen," + CRLF + ;
                        "mssen Sie mit Ende/Esc das Programm verlassen!" + CRLF + ;
                        "abbrechen mit <Esc>", ;
                        "Funktion Fall-Historie!", ;
                        XBPMB_OKCANCEL, ;
                        XBPMB_QUESTION ) == XBPMB_RET_OK
						cAuf_1 := Str(1->auftrnr,6,0)
						SELECT 32
//						cFDatei := cStickDir+"TTFL\F" + SubStr(StrZero(1->auftrnr,6,0),1,2) + "BEST.DBF"			//+22.09.2019 08:42
//						cFIndex := cStickDir+"TTFL\F" + SubStr(StrZero(1->auftrnr,6,0),1,2) + "BEST.NTX"			//+22.09.2019 08:42
						cFDatei := cDatver+"TTFL\F" + SubStr(StrZero(1->auftrnr,6,0),1,2) + "BEST.DBF"			//+22.09.2019 08:42
						cFIndex := cDatver+"TTFL\F" + SubStr(StrZero(1->auftrnr,6,0),1,2) + "BEST.NTX"			//+22.09.2019 08:42
//						cFDatei := cDatver+"TTFL\FBEST.DBF"			//+22.09.2019 08:42
//						cFIndex := cDatver+"TTFL\FBEST.NTX"			//+22.09.2019 08:42
						DbUseArea(,,cFDatei,,.F.)							//cDatver+"TTFL\FBEST.DBF",,.F.)	// die TT-Logbuch-Datei der Bestattungsf„lle (mit Trippel)
						INDEX on Str(auftrnr,6,0) TO (cFIndex)			//TTFL\FBEST.NTX
						DbSetScope( SCOPE_BOTH, SubStr(Str(1->auftrnr,6,0),1,3))	// begrenzen auf die ersten drei Stellen ...
						DbExport("C:\HDBE\FB_temp.dbf")									// ... der aktuellen Auftragsnummer
						DbCloseArea()															// exportieren zu C:\HDBE\FB_temp.dbf
						SELECT 1
						DbUseArea(,,"C:\HDBE\FB_temp.dbf")								// FB_temp als Bestattungsfalldatei ”ffnen (best.dbf)
						INDEX on Str(auftrnr,6,0) TO C:\HDBE\FB_temp.ntx			// Index nur auf Auftragsnummer setzen
						DbGotop()
						nRec := RecNo()-2
						DbSetFilter( {|| (RecNo()-nRec)/3 == Int((RecNo()-nRec)/3)} )	// Filter auf die mittlere Zeile des Trippels
						DbSeek(cAuf_1,.F.)
						Scatter ( aEditControls )
						oBest:setColorBG( nBSFarbe )
						nTracking := 0		//+14.09.2019 17:31 wird 0, damit das Programm bei Historie Seeks im Logbuch nicht trackt
						// jetzt kann in der Bestattungsfall-Maske durch die Tripel gesurft werden
						// beenden: mit Ende oder Esc raus aus der Maske
         		ENDIF
         CASE mp1 == xbeK_SH_CTRL_RIGHT //+12.09.2019 19:34
               IF ConfirmBox( oCB, ;
                        "Wollen Sie wirklich die Notizen mit der Filiale vergleichen?" + CRLF + ;
                        "Achtung: Wenn Sie den Stick nicht vorbereitet haben," + CRLF + ;
                        "dann steigt das Programm aus bei Klick auf OK!" + CRLF + ;
                        "abbrechen mit <Esc>", ;
                        "Funktion Notiz vergleichen!", ;
                        XBPMB_OKCANCEL, ;
                        XBPMB_QUESTION ) == XBPMB_RET_OK
							nTracking := 0		//+14.09.2019 17:31 wird 0, damit das Programm bei Historie Seeks im Logbuch nicht trackt
							Satzsp( oDlg )
                     Gather( aEditControls )
                     1->(DbCommit())
                     Trckng( 1, RecNo(), aData1, cV )
                     1->(DbRUnlock( Recno() ) )
			           AuftrKontrolle_2( Str(1->Auftrnr,6,0), oDlg )
			            SetAppFocus( oBest )
                     1->(DbRUnlock( ) )
                     Scatter ( aEditControls )
                     aData1 := SatzGet( Select(), RecNo() )
                     SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY ))
                     oXbp:enable()
							nTracking := 1		//+14.09.2019 17:31 wird 1, damit das Programm wieder trackt
               ENDIF

         CASE mp1 == xbeK_SH_CTRL_DOWN //+28.03.2017 22:03
// 15.09.2019 14:55            AuftragsKorrektur()
         CASE mp1 == xbeK_CTRL_F11 .OR. mp1 == xbeK_SH_CTRL_UP //+24.03.2012 12:04 UP
               IF ConfirmBox( oCB, ;
                           "Wollen Sie wirklich diesen Auftrag komplett bertragen?" + CRLF + ;
                           "Achtung: OK schreibt diese Daten in die šbertragungsdatei!" + CRLF + ;
                           "(Sie k”nnen gleich ausw„hlen, ob auch mit Rechnung und Zahlungen)" + CRLF + ;
                           "abbrechen mit <Esc>", ;
                           "Funktion Auftrag bertragen!", ;
                           XBPMB_OKCANCEL, ;
                           XBPMB_QUESTION ) == XBPMB_RET_OK
                    Satzsp( oDlg )
                    Gather( aEditcontrols )
                    DbRUnlock(RecNo())
//                    1->(DbSkip(0))
//                    aData1 := SatzGet( Select(), RecNo() )               // TT
                    TTausBEST()		// Procedure ist in TT.prg
               ENDIF
            /* 28.03.2017 19:26 vorsichtshalber geREMt
            CASE mp1 == xbeK_SH_CTRL_RIGHT   //+24.03.2012 12:03
               IF ConfirmBox( oCB, ;
                           "Wollen Sie wirklich alle Auftr„ge dieser Filiale ab diesem bis x99 komplett bertragen?" + CRLF + ;
                           "Achtung: OK schreibt die Daten +Rechnung +Zahlungen in die šbertragungsdatei!" + CRLF + ;
                           "abbrechen mit <Esc>", ;
                           "Funktion Auftrag bertragen!", ;
                           XBPMB_OKCANCEL, ;
                           XBPMB_QUESTION ) == XBPMB_RET_OK
                    Satzsp( oDlg )
                    Gather( aEditcontrols )
                    DbRUnlock(RecNo())
                    aData1 := SatzGet( Select(), RecNo() )               // TT
                    cAuf := Str(1->auftrnr)
                 DO WHILE Val(SubStr(cAuf,1,4)+"99") >= 1->auftrnr
                    TTausBEST("ohne Abfrage")  // +Rechnung+Zahlungen, alle Auftr„ge dieser Filiale ab dem aktuellen
                    1->(DbSkip())
                    Scatter( aEditcontrols )
                    aData1 := SatzGet( Select(), RecNo() )               // TT
                  ENDDO
                  MsgBox("Fertig! Der angezeigte Auftrag wurde noch nicht bertragen!"+CRLF+"Weiter bertragen: nochmal Strg+Umschalt+Rechtspfeil.")
               ENDIF
               */
// mit dieser Funktion k”nnte man Gesamtauftr„ge (Best/VV/Auftr) zwangs-bertragen:
//geREMt 15.03.2008 16:54:
//         CASE mp1 == xbeK_ALT_T
//            TTausBVA( 1->auftrnr, 230000, Val(SubStr( Str(1->auftrnr,6,0),3,1 )) )
//////         CASE mp1 == xbeK_F7     // Test fr die Vorvertrags/Stadt-Unterscheidung
//////            oBest:setColorBG( iii := GRA_CLR_BACKGROUND )
//////         CASE mp1 == xbeK_F8
//////            oBest:setColorBG( ++iii )
         CASE mp1 == xbeK_CTRL_A          //+26.11.2011 20:37
            IF nBGFarbe == GraMakeRGBColor({255,255,200})
               nBGFarbe := GRA_CLR_BACKGROUND
            ELSEIF nBGFarbe == GraMakeRGBColor({200,255,255})
               nBGFarbe := GraMakeRGBColor({200,200,255})
            ELSEIF nBGFarbe == GraMakeRGBColor({200,200,255})
               nBGFarbe := GraMakeRGBColor({255,200,255})
            ELSEIF nBGFarbe == GraMakeRGBColor({255,200,255})
               nBGFarbe := GraMakeRGBColor({255,200,200})
            ELSEIF nBGFarbe == GraMakeRGBColor({255,200,200})
               nBGFarbe := GraMakeRGBColor({255,255,200})
            ELSEIF nBGFarbe == GraMakeRGBColor({255,255,200})
               nBGFarbe := GraMakeRGBColor({200,255,200})
            ELSE
               nBGFarbe := GraMakeRGBColor({200,255,255})
            ENDIF
            oBest:setColorBG( nBGFarbe )
         CASE mp1 == xbeK_CTRL_F          //+20.12.2018 20:19
            IF nFeldBGFarbe == GRA_CLR_RED
               nFeldBGFarbe := GRA_CLR_YELLOW
            ELSEIF nFeldBGFarbe == GRA_CLR_YELLOW
               nFeldBGFarbe := GraMakeRGBColor({155,255,155})
            ELSEIF nFeldBGFarbe == GraMakeRGBColor({155,255,155})
               nFeldBGFarbe := GraMakeRGBColor({205,155,255})
            ELSE
               nFeldBGFarbe := GRA_CLR_RED
            ENDIF
				///+25.11.2019 09:42 :
	         IF nFeldBGFarbe == GRA_CLR_RED
		         aPP := { { XBP_PP_FGCLR       , GRA_CLR_WHITE       } , ;
		                  { XBP_PP_BGCLR       , nFeldBGFarbe      } }
		      ELSE
		         aPP := { { XBP_PP_FGCLR       , GRA_CLR_BLACK       } , ;
		                  { XBP_PP_BGCLR       , nFeldBGFarbe      } }
				ENDIF
				oXbp:setPresParam( aPP )
//+26.11.2019 13:51 geREMt - neu siehe direkt darunter
//////         CASE mp1 == xbeK_CTRL_G     //+25.11.2019 10:26
//////            IF cBFont!=NIL .AND. Val(cBFont)>0 .AND. Val(cBFont)<25
//////               IIF (AScan( aEditcontrols, oFocSle ) == 0, oFocSle := aEditcontrols[2],)
//////               nPL := At(".",cBFont)-1
//////               IF 0 < nPL
//////                  cBFont := Stuff(cBFont,1,nPL,Str(Val(cBFont)+1,2,0))
////////                  IIf(Upper(AppName())$cAc,nFontR := cFont,)  //23.03.2008 17:23 fr Rechnung (hier nur als Hinweis!!)
//////						oDlg:setPresParam( {{ XBP_PP_COMPOUNDNAME, cBFont }} )
//////						oDlg:configure()
//////						SetAppFocus( oDlg )
//////						SetAppFocus( oFocSle )
//////               ENDIF
//////            ENDIF
//////         CASE mp1 == xbeK_CTRL_K     //+25.11.2019 10:26
//////            IF cBFont!=NIL .AND. Val(cBFont)>5
//////               IIF (AScan( aEditcontrols, oFocSle ) == 0, oFocSle := aEditcontrols[2],)
//////               nPL := At(".",cBFont)-1
//////               IF 0 < nPL
//////                  cBFont := Stuff(cBFont,1,nPL,Str(Val(cBFont)-1,2,0))
////////                  IIf(Upper(AppName())$cAc,nFontR := cFont,)  //23.03.2008 17:23 fr Rechnung (hier nur als Hinweis!!)
//////						oDlg:setPresParam( {{ XBP_PP_COMPOUNDNAME, cBFont }} )
//////						oDlg:configure()
//////						SetAppFocus( oDlg )
//////						SetAppFocus( oFocSle )
//////               ENDIF
//////            ENDIF
         CASE mp1 == xbeK_CTRL_G     //+25.11.2019 10:26
            IF cBFont!=NIL .AND. Val(cBFont)>0 .AND. Val(cBFont)<25
               IIF (AScan( aEditcontrols, oFocSle ) == 0, oFocSle := aEditcontrols[2],)
               nPL := At(".",cBFont)-1
               IF 0 < nPL
                  cBFont := Stuff(cBFont,1,nPL,Str(Val(cBFont)+1,2,0))
//						XFont := Str(Val(cBFont),2,0)+".Times New Roman"
						IF "Arial"$cBFont
							XFont := Str(Val(cBFont),2,0)+".Times New Roman"
						ELSE
							XFont := Str(Val(cBFont),2,0)+".Arial"
						ENDIF
						AEval(oCB:childlist(),{|o| IIf(!o:isderivedfrom("XbpSle") .AND. !o:isderivedfrom("XbpMle"), ;
															o:setFontCompoundName( XFont ),)})
						AEval(aEditcontrols,{|o| o:setFontCompoundName( cBFont ) } )
						SetAppFocus( oDlg )
						SetAppFocus( oFocSle )
               ENDIF
            ENDIF
         CASE mp1 == xbeK_CTRL_K     //+25.11.2019 10:26
            IF cBFont!=NIL .AND. Val(cBFont)>5
               IIF (AScan( aEditcontrols, oFocSle ) == 0, oFocSle := aEditcontrols[2],)
               nPL := At(".",cBFont)-1
               IF 0 < nPL
                  cBFont := Stuff(cBFont,1,nPL,Str(Val(cBFont)-1,2,0))
//						XFont := Str(Val(cBFont),2,0)+".Times New Roman"
						IF "Arial"$cBFont
							XFont := Str(Val(cBFont),2,0)+".Times New Roman"
						ELSE
							XFont := Str(Val(cBFont),2,0)+".Arial"
						ENDIF
						AEval(oCB:childlist(),{|o| IIf(!o:isderivedfrom("XbpSle") .AND. !o:isderivedfrom("XbpMle"), ;
															o:setFontCompoundName( XFont ),)})
						AEval(aEditcontrols,{|o| o:setFontCompoundName( cBFont ) } )
						SetAppFocus( oDlg )
						SetAppFocus( oFocSle )
               ENDIF
            ENDIF
         CASE mp1 == xbeK_CTRL_S     //+27.11.2019 14:14
            IF cBFont!=NIL .AND. Val(cBFont)>0 //.AND. Val(cBFont)<25
               IIF (AScan( aEditcontrols, oFocSle ) == 0, oFocSle := aEditcontrols[2],)
					IF "Arial"$cBFont
						cBFont := Str(Val(cBFont),2,0)+".Times New Roman"
						XFont := Str(Val(cBFont),2,0)+".Arial"
					ELSE
						XFont := Str(Val(cBFont),2,0)+".Times New Roman"
						cBFont := Str(Val(cBFont),2,0)+".Arial"
					ENDIF
					AEval(oCB:childlist(),{|o| IIf(!o:isderivedfrom("XbpSle") .AND. !o:isderivedfrom("XbpMle"), ;
														o:setFontCompoundName( XFont ),)})
					AEval(aEditcontrols,{|o| o:setFontCompoundName( cBFont ) } )
					SetAppFocus( oDlg )
					SetAppFocus( oFocSle )
            ENDIF
// 25.11.2019 10:37 bleibt noch zu l”sen, weil Schrift (bis auf Arial) l„nger als das Datenbankfeld ZCODEWORT ist
////         CASE mp1 == xbeK_CTRL_S     //24.03.2008 17:16
////            IF cBfont!=NIL .AND. Val(cBfont)>5 //.AND. Val(cBfont)<25
////               IF "Arial"$cBFont
////                  cBfont := Stuff(cBfont,At("Arial",cBfont),5,"Courier New")
////               ELSEIF "Courier New"$cBfont
////                  cBfont := Stuff(cBfont,At("Courier New",cBfont),11,"Times New Roman")
////               ELSEIF "Times New Roman"$cBfont
////                  cBfont := Stuff(cBfont,At("Times New Roman",cBfont),15,"Arial")
////               ELSE
////                  cBfont := "10.Arial"
////               ENDIF
////               IIf(Upper(AppName())$cAc,nFontR := cBfont,)  //23.03.2008 17:23 fr Rechnung
////               cV := IIf( cS_b == "s_bes2", "12", "11" )
////               nFa := 1    // 24.03.2008 17:33 Zweitnutzen der Variablen
////               lResize := .T.                            //+21.12.2010 12:56
////               PostAppEvent( xbeU_RefreshAnlief,,,oDlg ) //+21.12.2010 12:55
////            ENDIF
         CASE mp1 == xbeK_F1
            ModalDialog( (cDatver+"f1.dbf"), "Bedienungshinweise", oDlg, 600*nH, 480*nV )
            SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY ))
            oXbp:enable()
         CASE mp1 == xbeK_CTRL_DEL
            Loeschen( oDlg, 1->auftrnr )
            Scatter ( aEditControls )
            aData1 := SatzGet( Select(), RecNo() )
            SetAppFocus( oDlg:childFromName( ID_SLE_PRIMKEY ))
//         CASE nEvent == xbeUser_FileMarked
//            mp2 := oXbpC:XbpSLE:getData() + mp1
//            oXbpC:XbpSLE:setData( mp2 )
//         CASE nEvent == xbeUser_FileSelected
//            mp2 := oXbpC:XbpSLE:getData() + mp1
//            oXbpC:XbpSLE:setData( mp2 )
         CASE mp1 == xbeK_SH_CTRL_END //+14.11.2019 09:28
         	aeditcontrols[1]:enable()
         CASE mp1 == xbeK_SH_CTRL_HOME //+08.10.2012 18:28 erzeugt nach PLZ+KONF+... sortierte Datei
// 15.09.2019 14:55            FallAbgleich() //+22.12.2013 18:00
      //in Enwicklung geREMt: 22.12.2013 15:37         KundenHistorie(oCB,{"ortgrab","Friedhof"})
            cText_auf := ""
            nRec := 1->(RecNo())
            1->(DbSuspendNotifications())
            cAufGr := SubStr(Str(auftrnr,6,0),1,3)
            DbSeek(cAufGr+"001")
            cAuf_nr1 := Str(1->auftrnr,6,0)
            DbSkip()
	         cAuf_nr2 := Str(1->auftrnr,6,0)
	         DO WHILE 1->auftrnr <= Val(cAufGr+"999")
	            IF cAuf_nr1 == cAuf_nr2
	            	DbSkip(-1)
	            	cText_auf += cAuf_nr1 + "," + 1->name + "," + 1->vorname + CRLF
	            	DbSkip() 
	            	cText_auf += cAuf_nr2 + "," + 1->name + "," + 1->vorname + CRLF
	            ENDIF
            	cAuf_nr1 := cAuf_nr2
            	DbSkip()
		         cAuf_nr2 := Str(1->auftrnr,6,0)
	         ENDDO
	   
	   cDruckabr := cDatver+"Dopp"+cAufGr+".txt"      
      Set( _SET_DEVICE, "PRINTER" )    // damit PRINTW umgangen wird: schreiben in eine Datei
      cPrintFile := Set( _SET_PRINTFILE, cDruckabr ) // in cPrintfile ist jetzt die VORIGE Einstellung!
			@1,1 SAY cText_auf
      Set( _SET_PRINTFILE, cPrintFile )   // 03.07.2008 18:17
      Set( _SET_DEVICE, "SCREEN" )        // weil Ausdruck in File umgeleitet war

            1->(DbGoto(nRec))
            1->(DbResumeNotifications())
      ENDCASE
      ENDIF
      oXbp:handleEvent( nEvent, mp1, mp2 )
   ENDDO

// zum Duplizieren von S„tzen unter einer anderen Nummer:
//////   IIf( aData1[1] == Val( aEditcontrols[1]:editbuffer() ), Satzsp(oDlg), ;
//////                        { IIf( Val( aEditcontrols[1]:editbuffer() ) == 0, ;
//////                        {Satzsp( oDlg ), aEditcontrols[1]:getdata()}, ;
//////                        {1->(DbAppend()), Satzsp( oDlg ), ;
//////                        aData1 := SatzGet( Select(), RecNo() )} )} )
////   IIf( aData1[1] == Val( aEditcontrols[1]:editbuffer() ), Satzsp( oDlg ), ;
////                        { IIf( Val( aEditcontrols[1]:editbuffer() ) == 0, ;
////                        {Satzsp( oDlg ), aEditcontrols[1]:getdata()}, ;
////                        {1->(DbAppend()), Satzsp( oDlg ), ;
////                        aData1 := SatzGet( Select(), RecNo() )} )} )

//   IIf( aData1[1] == Val( aEditcontrols[1]:getdata() ), Satzsp( oDlg ), ;
//             { aEditcontrols[1]:setdata( Str( ;
//             IIf( Val( aEditcontrols[1]:getdata() ) == 0, 0, aData1[1] ),6,0 ) ), ;
//             Satzsp( oDlg ), 1->(DbAppend()) } )
   Satzsp(oDlg)
   1->stern := ""				//+14.12.2020 21:10 entsperrt den Datensatz wieder fr die anderen Nutzer
   Gather( aEditControls )
   __SETFUNCTION( 9, str( 1->AUFTRNR,6,0 ) )
   cPubAuf := Str( 1->auftrnr,6,0 )
   SELECT 20
   USE mwstdat EXCLUSIVE
	   20->pubauf := cPubAuf
	// hier k”nnten die individuellen Farben abgespeichert werden ... 10.11.2019 16:08
		20->zcodewort9 := Str(nBGFarbe)		//+22.11.2019 10:17
		20->zcodewort8 := Str(nFeldBGFarbe)	//+22.11.2019 10:17
		20->zcodewort7 := cBFont				//+26.11.2019 08:44
   USE
   SELECT 1
   oDlg:setModalState( XBP_DISP_MODELESS )
   oDlg:destroy()
   1->(DbCommit())
   Trckng( 1, RecNo(), aData1, cV )
   1->(DbRUnlock())
//   Radio( aData1 ) // dort Trckng()
   SetAppFocus( oBestMenu )
   SET DATE TO GERMAN
RETURN
//------------------------------------------

//**      oXbp:dataLink  := {|x| IIf( x==NIL, NOTI( DbRLockList() ), NOTIZ := x ) }
FUNCTION Noti( aDRLL )
   LOCAL cNoti := " "
   FOR i := 1 TO Len( aDRLL )
      cNoti := cNoti+Chr(13)+Chr(10)+Str( aDRLL[i] )
   NEXT
RETURN cNoti

FUNCTION No( oDlg )
   REPLACE 1->NOTIZ WITH oDlg:getdata()
RETURN .T.

//------------------------------------------
FUNCTION FehlerBehandlung(oError)   //+24.03.2012 14:46
   LOCAL cFehler := "Fehlerart: "+oError:description +CRLF+ ;
                  "in Operation: "+oError:operation +CRLF+ ;
                  "in Thread: "+LTrim(Str(oError:thread)) +CRLF+ ;
                  IIf(!Empty(oError:filename), "Datei: "+oError:filename +CRLF,"") + ;
                  "aufgerufen von:" +CRLF+ ;
                  IIf( !Empty(ProcName(1)), ProcName(1)+"("+LTrim(Str(ProcLine(1)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(2)), ProcName(2)+"("+LTrim(Str(ProcLine(2)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(3)), ProcName(3)+"("+LTrim(Str(ProcLine(3)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(4)), ProcName(4)+"("+LTrim(Str(ProcLine(4)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(5)), ProcName(5)+"("+LTrim(Str(ProcLine(5)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(6)), ProcName(6)+"("+LTrim(Str(ProcLine(6)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(7)), ProcName(7)+"("+LTrim(Str(ProcLine(7)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(8)), ProcName(8)+"("+LTrim(Str(ProcLine(8)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(9)), ProcName(9)+"("+LTrim(Str(ProcLine(9)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(10)), ProcName(10)+"("+LTrim(Str(ProcLine(10)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(11)), ProcName(11)+"("+LTrim(Str(ProcLine(11)))+")"+CRLF,"")+;
                  IIf( !Empty(ProcName(12)), ProcName(12)+"("+LTrim(Str(ProcLine(12)))+")"+CRLF,"")+;
                  "Wiederholen mit <JA>, Datenretten + Ende mit <NEIN>"+CRLF+;
                  "(Service-Telefon: 0171 - 4 66 49 67)"
   IF oError:severity > 1
      IF ConfirmBox( AppDeskTop(), ;
                  cFehler, ;
                  "Ein Fehler ist aufgetreten!", ; 
                  XBPMB_YESNO, ;
                  XBPMB_WARNING, ;
                  XBPMB_DEFBUTTON2 ) ;
                  =  XBPMB_RET_NO
         DbCloseAll()
         USE AK_F_LOG new
         APPEND BLANK
         AK_F_LOG->datum := DATE()
         AK_F_LOG->zeit := Time()
         AK_F_LOG->logtext := DtoC(DATE()) +CRLF+ ;
                              Time() +CRLF+ ;
                              cFehler +CRLF+ ;
                              "Datenverzeichnis: "+cDatver +CRLF+ ;
                              "Thread: " + LTrim(Str(ThreadId())) + "/"+ThreadObject():ClassName()
         USE
         BREAK()
      ENDIF
   ENDIF
RETURN .F.
//------------------------------------------
// 07.11.2022 21:26 aus DialogFF1 zum Suchen von Objekten nach dem cargo im aEditcontrols
FUNCTION XbpObjekt( aObj, cVarName, lUL )     // ergibt das Object
   LOCAL o := NIL
   DEFAULT aObj TO ::singleZeile    //03.06.2007 17:37
   DEFAULT lUL TO .T.   //03.03.2008 14:14 damit man gleichnamige Felder verschieden angehen kann
   IF lUL      // 03.03.2008 14:15 wenn es egal ist, ob groá oder klein geschrieben (NOTIZ==notiz)
      AEval( aObj, {|x,i| o := IIf( ValType(x:cargo)="C" .AND. Upper(x:cargo)==Upper(cVarName), x, ;
                      IIf( ValType(x:cargo)="O" .AND. IsMemberVar(x:cargo,"title") .AND. ;
                      Upper(x:cargo:title)==Upper(cVarName), x, o )) } )
   ELSE
      AEval( aObj, {|x,i| o := IIf( ValType(x:cargo)="C" .AND. x:cargo==cVarName, x, ;
                                 IIf( ValType(x:cargo)="O" .AND. x:cargo:title==cVarName, x, o )) } )
   ENDIF
RETURN o


//

PROCEDURE KuvertDruck(cUm,lKSO)
   DEFAULT cUm TO "j"
   DEFAULT lKSO TO .F.

//   nAnzum := 1
//   nAnzum := Val( ModalDialog( LTrim(Str(nAnzum,2,0)), ;
//                   "Anzahl der Umschl„ge (1/0) eingeben:", oDlg1, 200*nV, 150*nV, {"",""} ))
//   cUm := IIf( nAnzum == 1 .OR. nAnzum == -1, IIf( nAnzum == -1, "k", "j"), "n" )

   select 20
   use drubef
   edrucker=upper(cdrucker)
   if edrucker="E" .OR. cDrucker="EP"
      z12p=trim(ep12p)
      z14p=trim(ep14p)
      znorm=trim(epnorm)
      cRes1 := Trim(epres1)
      cRes2 := Trim(epres2)
      cRes3 := Trim(epres3)
      cRes4 := Trim(epres4)
      nPoffY:= Val(SubStr(epres5,1,3))
      nPoffX:= Val(SubStr(epres5,4,3))
      nPpZ := Val( Substr( 20->epres5, 7, 3 ) )    //10.01.2008 09:24
      nPpS := Val( Substr( 20->epres5, 10, 3 ) )   //10.01.2008 09:24
   else
      z12p=trim(hp12p)
      z14p=trim(hp14p)
      znorm=trim(hpnorm)
      cRes1 := Trim(hpres1)
      cRes2 := Trim(hpres2)
      cRes3 := Trim(hpres3)
      cRes4 := Trim(hpres4)
      nPoffY:= Val(SubStr(hpres5,1,3))
      nPoffX:= Val(SubStr(hpres5,4,3))
      nPpZ := Val( Substr( 20->hpres5, 7, 3 ) )    //10.01.2008 09:24
      nPpS := Val( Substr( 20->hpres5, 10, 3 ) )   //10.01.2008 09:24
   endif
   USE

   select 9
   use mwstdat
   nZnam := Val( Substr( 9->f13,1,2 ) )
   nSnam := Val( Substr( 9->f13,4,2 ) )
   nZadr := Val( Substr( 9->f14,1,2 ) )
   nSadr := Val( Substr( 9->f14,4,2 ) )
   use
   nZadr := IIf( cUm="k", nZadr-8, nZadr )
   SELECT 1
   nOrientierung := XBPPRN_ORIENT_LANDSCAPE  // 27.10.2005
   SET DEVICE TO printw
   IF cLPT = "LPTA"
//      oPrinterPS:DEVICE():setOrientation( XBPPRN_ORIENT_LANDSCAPE )  //Papier horizontal bedrucken
////      oPrinterPS:DEVICE():setupDialog()    // nur zum Testen !!
//      oPrinterPS:DEVICE():startdoc()    // 26.10.2005 geremt fr Essen 
   ELSE
      @ 0,0 say IIf(cDrucker=="HP",chr(27)+znorm+" "+chr(27)+"&l1O",)
   ENDIF
   IF lKSO == .T. //+26.08.2016 08:07 fr den Rckumschlag in die Vestische Straáe
      @ nZadr,nSadr say "Beerdigungsinstitut"
      @ ++nZadr,nSadr say "Karl Schumacher e.K."
      ++nZadr
      @ ++nZadr,nSadr say "Vestische Str. 146"
      ++nZadr
//      @ ++nZadr,(nSadr-40) say 1->name
      @ ++nZadr,nSadr say "46117 Oberhausen"
   ELSE
      @ nZnam,(nSnam) say 1->name	// 19.11.2019 21:40 von 6 Zeilen weiter hierher + 'nZnam'
      @ nZadr,nSadr say 1->ansp_anr
      @ ++nZadr,nSadr say trim(1->ansp_vname) + " " + 1->ansp_name
      ++nZadr
      @ ++nZadr,nSadr say 1->ansp_str
      ++nZadr
//      @ ++nZadr,(nSadr-40) say 1->name
      @ ++nZadr,nSadr say 1->ansp_ort
   ENDIF

   IF cLPT = "LPTA"
//      oPrinterPS:DEVICE():setOrientation( XBPPRN_ORIENT_PORTRAIT )   //Papier vertikal bedrucken
   ELSE
      @ ++nZadr,0 say IIf(cDrucker=="HP",chr(27)+"&l0O",)
   ENDIF
   IF cLPT = "LPT1"
         EJECT
   ENDIF
   nOrientierung := XBPPRN_ORIENT_PORTRAIT   // 27.10.2005
   SET DEVICE TO SCREEN

RETURN

// Bemerkung vom 15.09.2019 14:09:
// geremt, weil inzwischen vielleicht durch vergleichen mit der TFBest-Datei ersetzt
// nicht l”schen!! Fr den Fall, dass Falldateien in Filialen oder Zentrale zerst”rt werden...evtl wieder wertvoll
//PROCEDURE FallAbgleich()
//   LOCAL nOldArea := SELECT(), nRec := RecNo(), cStickDir
//   LOCAL cAbgl0 := "\abgl\abgl0.dbf", cAbgl := "\abgl\abgleich.dbf", cBestabgl := "\abgl\bestabgl.dbf"
//   LOCAL aData2[1->(FCount())], n
//   LOCAL cAufF := "129999", cAufZ := "129999"
//      
//   // 1-> ist die Filialdatei 'best.dbf':
//   1->(DbSuspendNotifications()) 
//   StickDrive("\KSO\Abgleich",@cStickDir)
//   IF cStickDir != NIL
//      IF !FILE( cStickDir+cAbgl0 )
//         //erzeugt die Protokolldatei des Abgleichs:
//         aStruktur := { ;
//               { "AUFTRNR1"   , "N",  6, 0 } , ;
//               { "NAME1"      , "C", 28, 0 } , ;
//               { "GESTORBEN1" , "D",  8, 0 } , ;
//               { "AUFTRNR2"   , "N",  6, 0 } , ;
//               { "NAME2"      , "C", 28, 0 } , ;
//               { "GESTORBEN2" , "D",  8, 0 } , ;
//               { "BEMERK"     , "C", 30, 0 } }
//         DbCreate( cStickDir+cAbgl0, aStruktur, "DBFNTX" )
//      ENDIF
//      COPY FILE (cStickDir+cAbgl0) TO (cStickDir+cAbgl)
//
//      // 11-> ist die Zentralendatei 'best.dbf':
//      SELECT 11
//      DbUseArea(,,cStickDir+"\Z\best",,.T.)
//      OrdCreate(cStickDir+"\Z\BEST11",,"Str(AUFTRNR,6,0)")
//      DbSeek(cAufZ,.T.)
//      1->(DbSeek(cAufF,.T.))
//
//      // 12-> ist die Zentralendatei mit komplexem Namens-Index:
//      SELECT 12
//      DbUseArea(,,cStickDir+"\Z\best",,.T.)
//      OrdCreate(cStickDir+"\Z\BEST12",,"NAME+VORNAME+DtoS(GESTORBEN)+PLZ_ORT")
//
//      // 13-> ist die Zentralendatei mit komplexem Namens-Index:
//      SELECT 13
//      DbUseArea(,,cDatver+"best",,.T.)
//      OrdCreate(cDatver+"BEST13",,"NAME+VORNAME+DtoS(GESTORBEN)+PLZ_ORT")
//
//      // 22-> wird die Protikolldatei 'bestabgl.dbf' fr die 'defekten' ganzen S„tze der Best.dbf
//      COPY STRUCTURE TO (cStickDir+cBestabgl)
//      SELECT 22
//      DbUseArea(,,cStickDir+cBestabgl,,.F.)
//
//      // 21-> ist die Protokolldatei 'abgleich.dbf' fr den Abgleich:
//      SELECT 21               // Filialen-Datei
//      DbUseArea(,,cStickDir+cAbgl,,.F.)
//      DO WHILE 1->auftrnr < 140000 .AND. 11->auftrnr < 140000
//         21->(DbAppend())
//         IF 1->auftrnr < 11->auftrnr
//         // zu dem Filialenfall gibt es keinen Zentralenfall:
//            21->auftrnr1 := 1->auftrnr
//            21->name1 := 1->name
//            21->gestorben1 := 1->gestorben
//            21->auftrnr2 := 11->auftrnr
//            21->name2 := "-angehalten-"   // 11->name ist schon vom n„chsten Satz
//            21->gestorben2 := 11->gestorben
//            21->bemerk := "Filial-Sterbefall"
//
//               // 22-> wird gefllt mit 1->er-Satz der Filiale
//               FOR n := 1 to 1->(FCount())
//                  aData2[n] := 1->(FieldGet( n ))
//               NEXT
//               22->(DbAppend())
//               FOR n := 1 to 22->(FCount())
//                  22->(FieldPut( n, aData2[n] ))
//               NEXT
//               22->berater := "<F"
//
//               IF cAufF == Str(1->auftrnr,6,0) // wenn vorige Filial-Nr = Filialnummer,
//                  // dann ist die Filialnummer doppelt:
//                  22->(DbAppend())
//                  22->name := "= doppelt in Filiale"
//               ELSE
//                  IF 12->(DbSeek(1->name+1->vorname+DtoS(1->gestorben)+1->plz_ort,.F.))
//                     // 22-> wird gefllt mit 12->er-Satz der Zentrale
//                     FOR n := 1 to 12->(FCount())
//                        aData2[n] := 12->(FieldGet( n ))
//                     NEXT
//                     22->(DbAppend())
//                     FOR n := 1 to 22->(FCount())
//                        22->(FieldPut( n, aData2[n] ))
//                     NEXT
//                     22->berater := "<Z"
//                     22->(DbAppend())
//                     22->name := "= Name in Zentrale"
//                  ELSE
//                     22->(DbAppend())
//                     22->name := "nur in Filiale!"
//                  ENDIF
//               ENDIF
//   
////               // voriger Satz in der Zentrale:
////               11->(DbSkip(-1))
////               // 22-> wird gefllt mit 11->er-Satz der Zentrale
////               FOR n := 1 to 11->(FCount())
////                  aData2[n] := 11->(FieldGet( n ))
////               NEXT
////               22->(DbAppend())
////               FOR n := 1 to 22->(FCount())
////                  22->(FieldPut( n, aData2[n] ))
////               NEXT
////               22->(DbAppend())
////               22->name := "= voriger Zentralen-Satz"
////               22->(DbAppend())
//            cAufF := Str(1->auftrnr,6,0)
//            1->(DbSkip())
////            11->(DbSkip())
//         ELSEIF 1->auftrnr == 11->auftrnr
//         // in Filiale + Zentrale vorhandene Fallnummern:
//            21->auftrnr1 := 1->auftrnr
//            21->name1 := 1->name
//            21->gestorben1 := 1->gestorben
//            21->auftrnr2 := 11->auftrnr
//            21->name2 := 11->name
//            21->gestorben2 := 11->gestorben
//            IF 1->name != 11->name
//            // in Filiale+Zentrale sind unterschiedliche F„lle auf derselben Nummer:
//               21->bemerk := "Namen verschieden"
//               
//               // 22-> wird gefllt mit 1->er-Satz der Filiale
//               FOR n := 1 to 1->(FCount())
//                  aData2[n] := 1->(FieldGet( n ))
//               NEXT
//               22->(DbAppend())
//               FOR n := 1 to 22->(FCount())
//                  22->(FieldPut( n, aData2[n] ))
//               NEXT
//               22->berater := "<F>"
//               cName_1 := aData2[5]
//               
//               // 22-> wird gefllt mit 11->er-Satz der Zentrale
//               FOR n := 1 to 11->(FCount())
//                  aData2[n] := 11->(FieldGet( n ))
//               NEXT
//               22->(DbAppend())
//               FOR n := 1 to 22->(FCount())
//                  22->(FieldPut( n, aData2[n] ))
//               NEXT
//               22->berater := "<Z>"
//               cName_11 := aData2[5]
//
//               22->(DbAppend())
//               22->name := "= gleiche Nummer/verschiedene Namen"
////               22->(DbAppend())
//
//               1->(DbSkip())
//               11->(DbSkip())
//               IF 1->name == cName_11  // in Filiale ist der vorige Zentralname
//                  // 22-> wird gefllt mit 1->er-Satz der Filiale
//                  FOR n := 1 to 1->(FCount())
//                     aData2[n] := 1->(FieldGet( n ))
//                  NEXT
//                  22->(DbAppend())
//                  FOR n := 1 to 22->(FCount())
//                     22->(FieldPut( n, aData2[n] ))
//                  NEXT
//                  22->berater := "<F>"
//                  22->(DbAppend())
//                  22->name := "= n„chster Filialen-Satz"
//
//                  1->(DbSkip(-1)) // auf vorigen Satz der Filiale gehen und
//                  // in Zentrale nach dem Filialen-Namen suchen:
//                  IF 12->(DbSeek(1->name+1->vorname+DtoS(1->gestorben)+1->plz_ort,.F.))
//                     // 22-> wird gefllt mit 12->er-Satz der Zentrale
//                     FOR n := 1 to 12->(FCount())
//                        aData2[n] := 12->(FieldGet( n ))
//                     NEXT
//                     22->(DbAppend())
//                     FOR n := 1 to 22->(FCount())
//                        22->(FieldPut( n, aData2[n] ))
//                     NEXT
//                     22->berater := "<Z>"
//                     22->(DbAppend())
//                     22->name := "=echter Filialsatz?"
//                  ELSE
//                     22->(DbAppend())
//                     22->name := "nicht in Zentrale!"
//                  ENDIF
//                  22->(DbAppend())
//                  1->(DbSkip())  //
//                  11->(DbSkip(-1))  //
//                  cAufF := Str(1->auftrnr,6,0)
//               ELSEIF 11->name == cName_1 // in Zentrale ist der vorige Filialname
//                  // 22-> wird gefllt mit 11->er-Satz der Zentrale
//                  FOR n := 1 to 11->(FCount())
//                     aData2[n] := 11->(FieldGet( n ))
//                  NEXT
//                  22->(DbAppend())
//                  FOR n := 1 to 22->(FCount())
//                     22->(FieldPut( n, aData2[n] ))
//                  NEXT
//                  22->berater := "<Z>"
//
//                  11->(DbSkip(-1)) // auf vorigen Satz der Zentrale gehen und
//                  // in Filiale nach dem Zentralen-Namen suchen:
//                  IF 13->(DbSeek(11->name+11->vorname+DtoS(11->gestorben)+11->plz_ort,.F.))
//                     // 22-> wird gefllt mit 13->er-Satz der Filiale
//                     FOR n := 1 to 13->(FCount())
//                        aData2[n] := 13->(FieldGet( n ))
//                     NEXT
//                     22->(DbAppend())
//                     FOR n := 1 to 22->(FCount())
//                        22->(FieldPut( n, aData2[n] ))
//                     NEXT
//                     22->berater := "<F>"
//                     22->(DbAppend())
//                     22->name := "=echter Zentralsatz?"
//                  ELSE
//                     22->(DbAppend())
//                     22->name := "nicht in Filiale!"
//                  ENDIF
//   
//                  22->(DbAppend())
//                  1->(DbSkip(-1))
//                  11->(DbSkip())
//                  cAufZ := Str(11->auftrnr,6,0)
//               ELSE
//                  cAufF := Str(1->auftrnr,6,0)
//                  cAufZ := Str(11->auftrnr,6,0)
//                  22->(DbAppend())
//                  22->name := "kein doppelter Fall"
//                  22->(DbAppend())
//               ENDIF
//            ELSE
//               cAufF := Str(1->auftrnr,6,0)
//               cAufZ := Str(11->auftrnr,6,0)
//            ENDIF
//            1->(DbSkip())
//            11->(DbSkip())
//         ELSEIF 1->auftrnr > 11->auftrnr
//         // zu dem Zentralenfall gibt es keinen Filialenfall
//            21->auftrnr1 := 1->auftrnr
//            21->name1 := "-angehalten-"   // 1->name ist schon vom n„chsten Satz
//            21->gestorben1 := 1->gestorben
//            21->auftrnr2 := 11->auftrnr
//            21->name2 := 11->name
//            21->gestorben2 := 11->gestorben
//            21->bemerk := "Zentral-Sterbefall"
//               
//               // 22-> wird gefllt mit 11->er-Satz der Zentrale
//               FOR n := 1 to 11->(FCount())
//                  aData2[n] := 11->(FieldGet( n ))
//               NEXT
//               22->(DbAppend())
//               FOR n := 1 to 22->(FCount())
//                  22->(FieldPut( n, aData2[n] ))
//               NEXT
//               22->berater := "Z>"
//
//               IF cAufZ == Str(11->auftrnr,6,0) // wenn vorige Zentral-Nr = Zentralnummer,
//                  // dann ist die Zentralnummer doppelt:
//                  22->(DbAppend())
//                  22->name := "= doppelt in Zentrale"
//               ELSE
//                  IF 13->(DbSeek(11->name+11->vorname+DtoS(11->gestorben)+11->plz_ort,.F.))
//                     // 22-> wird gefllt mit 13->er-Satz der Filiale
//                     FOR n := 1 to 13->(FCount())
//                        aData2[n] := 13->(FieldGet( n ))
//                     NEXT
//                     22->(DbAppend())
//                     FOR n := 1 to 22->(FCount())
//                        22->(FieldPut( n, aData2[n] ))
//                     NEXT
//                     22->berater := "F>"
//                     22->(DbAppend())
//                     22->name := "= Name in Filiale"
//                  ELSE
//                     22->(DbAppend())
//                     22->name := "nur in Zentrale!"
//                  ENDIF
//               ENDIF
//
//////               22->(DbAppend())
////               // voriger Satz in der Filiale:
////               1->(DbSkip(-1))
////               // 22-> wird gefllt mit 1->er-Satz der Filiale
////               FOR n := 1 to 1->(FCount())
////                  aData2[n] := 1->(FieldGet( n ))
////               NEXT
////               22->(DbAppend())
////               FOR n := 1 to 22->(FCount())
////                  22->(FieldPut( n, aData2[n] ))
////               NEXT
////               22->(DbAppend())
////               22->name := "= voriger Filialen-Satz"
////               22->(DbAppend())
//            cAufZ := Str(11->auftrnr,6,0)
//   //         1->(DbSkip())
//            11->(DbSkip())
//         ENDIF
//      ENDDO
//      21->(DbCloseArea())
//      22->(DbCloseArea())
//      11->(DbCloseArea())
//   ELSE
//      MsgBox("Keine StickDatei gefunden")
//   ENDIF
//   SELECT &nOldArea
//   DbGoto(nRec)
//   1->(DbResumeNotifications())
//RETURN

//+22.12.2013 17:27 aus ScrapX kopiert:
// Laufwerk des Sticks, bzw. Verzeichnis auf dem Stick suchen
// Annnahme: der Stick hat die h”chste lokale Laufwerksbezeichnung
//+27.06.2009 15:37 cDir ist das Verzeichnis, das auf dem Stick vorhanden sein muss:
FUNCTION StickDrive(cDir,cStickDir)    //+ cStickDir als Referenz zurck 07.07.2009 09:05
   LOCAL nDrive
   DEFAULT cDir TO "\*.*"
      FOR nDrive := 82 TO 69 STEP -1     //08.03.2012 22:41 Chr(nDrive) = "R" ... "E"
         IF IsDriveReady(Chr(nDrive)) = 0
            // wenn das Laufwerk existiert:
            IF FExists( Chr(nDrive)+":"+cDir, "D" )
               // wenn das Verzeichnis existiert: 
               cStickDir := Chr(nDrive)+":"+cDir   //+07.07.2009 09:06
               EXIT
            ELSE
               //+ weitersuchen:
               cStickDir := NIL                    //+07.07.2009 09:06
               LOOP
            ENDIF
         ENDIF
      NEXT
   //+ wenn nicht gefunden, dann ist nDrive = 68 (="D")
RETURN Chr(nDrive)


FUNCTION WriterBrief( name1, name2, strasse, plz_ort, cFile )
   LOCAL nZei := 8, nAnf, CR := Chr(13), LF := Chr(10)
   LOCAL nHandle, cBuffer, nBytes, cText, cBuero := "Oberhausen", cNeuTxt := ""
   LOCAL cFont := '"Times New Roman", serif'
   LOCAL cFSize:= '11pt'
   LOCAL cFormSeite := "6cm 2cm 2cm 2.5cm"	//+vor 26.11.2019 17:20 2,5, damit links etwas mehr Rand bleibt.

	// Zur Vermeidung von Kollision verschiedener Drucke    vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
	// Test: ist bereits die Datei WriterBrief.html auf diesem PC ge”ffnet?
	nHandle := FOpen( "c:\hdbe\WriterBrief.html", FO_EXCLUSIVE )
	IF nHandle = -1
	   //+ Die Datei ist bereits auf diesem PC ge”ffnet
	   FClose(nHandle)
	   msgbox("Es ist bereits ein WriterBrief offen!"+CR+LF+"Bitte zuerst schlieáen, dann nochmal versuchen!")
	   RETURN .F.
	ELSE
	   FClose(nHandle)
	ENDIF
	//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

   nHandle := FOpen( cFile, FO_READ )
   cBuffer := Space(3000)
   nBytes := FRead( nHandle, @cBuffer, 3000 )
   cText := AllTrim(cBuffer)
   FClose( nHandle )

// Bemerkung vom 07.10.2022:
//	cSystem kommt in kso.prg von mwstdat->system, welches eine String-Zahl von '14'...'19' darstellt
// za05 ist ein Text wie z.B. 'Hauptrechner in Dortmund'
// za05x ist nur fr mich zum Testen, wenn das Client-Verzeichnis 'bestatt' enth„lt, darin steht 'Testrechner fr Essen'
// die PCs werden mit 7+1 im DOS-Hauptverzeichnis konfiguriert
   DO CASE
      CASE cSystem == "14" .OR. "Dortmund"$(za05x+za05)
         cBuero := "Dortmund"
         cRufnummer := "0231 1857 797"
      CASE cSystem == "18" .OR. "Duisburg"$(za05x+za05)
         cBuero := "Duisburg"
         cRufnummer := "0203 404140"
      CASE cSystem == "19" .OR. "Essen"$(za05x+za05)
         cBuero := "Essen"
         cRufnummer := "0201 766070"
      CASE cSystem == "17" .OR. "Gelsenkirchen"$(za05x+za05)
         cBuero := "Gelsenkirchen"
         cRufnummer := "0209 9442888"
      CASE cSystem == "15" .OR. "Herne"$(za05x+za05)
         cBuero := "Herne"
         cRufnummer := "02323 1460600"
      CASE cSystem == "16" .OR. "Oberhausen"$(za05x+za05)
         cBuero := "Oberhausen"
         cRufnummer := "0208 631349"
   ENDCASE

   cNeuTxt := ;
         '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'+CR+LF+;
         '<HTML>'+CR+LF+;
         '<HEAD>'+CR+LF+;
         '	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">'+CR+LF+;
         '	<TITLE>'+cFile+'</TITLE>'+CR+LF+;
         '	<META NAME="GENERATOR" CONTENT="KSOX.EXE">'+CR+LF+;
         '	<META NAME="CHANGEDBY" CONTENT="' + cBuero + '">'+CR+LF+;
         '	<STYLE TYPE="text/css">'+CR+LF+;
         '	<!--'+CR+LF+;
         '		@page { margin: ' + cFormSeite + ' }'+CR+LF+;
         '		P { margin-bottom: 0.21cm }'+CR+LF+;
         '		PRE { font-family: ' + cFont + '; font-size: ' + cFSize + '; }'+CR+LF+;
         '	-->'+CR+LF+;
         '	</STYLE>'+CR+LF+;
         '</HEAD>'+CR+LF+;
         '<BODY LANG="de-DE">'+CR+LF+;
         '<PRE>'
   cNeuTxt += ConvToAnsiCP( IIf(name1=="Herr",'Herrn',name1) )
   cNeuTxt += CR+LF+ ConvToAnsiCP( name2 )
   cNeuTxt += CR+LF+ConvToAnsiCP( strasse )
   cNeuTxt += CR+LF
   cNeuTxt += CR+LF+ ConvToAnsiCP( plz_ort )
   cNeuTxt += CR+LF+CR+LF+CR+LF+CR+LF+CR+LF
   cNeuTxt += CR+LF+ ConvToAnsiCP( Space(130)+cBuero+", "+DtoC(date()) )
   cNeuTxt += CR+LF+CR+LF+CR+LF+CR+LF+CR+LF
   cNeuTxt += CR+LF+ ConvToAnsiCP( "Betr. Sterbefall: " + StrZero(1->auftrnr,6,0) )
   cNeuTxt += CR+LF+ ConvToAnsiCP( Trim( 1->anrede ) + " " + Trim( 1->vorname ) + " " + Trim( 1->name ) )
   IF name1 != 1->ansp_anr
      cNeuTxt += CR+LF+ ConvToAnsiCP( "Auftraggeber:" )
      cNeuTxt += Chr(9)+ ConvToAnsiCP( Trim( 1->ansp_anr )  + " " + Trim( 1->ansp_vname )  + " " + Trim( 1->ansp_name ) )
      cNeuTxt += CR+LF+Chr(9)+ ConvToAnsiCP( Trim( 1->ansp_str )  + ", " + Trim( 1->ansp_ort ) )
      cNeuTxt += CR+LF
      cNeuTxt += CR+LF+ ConvToAnsiCP( "Sehr geehrte Damen und Herren," + Chr(13) + Chr(13) )
   ELSE
      cNeuTxt += CR+LF
      cNeuTxt += CR+LF
      cNeuTxt += CR+LF+ ConvToAnsiCP( "Sehr geehrte" + IIf(1->ansp_anr="Herr","r "," ") + ;
          Trim( 1->ansp_anr ) + " " + Trim( 1->ansp_name ) + "," )
   ENDIF

   cNeuTxt += CR+LF
   cNeuTxt += CR+LF+ cText
   cNeuTxt += CR+LF
   cNeuTxt += CR+LF
   cNeuTxt += CR+LF
   cNeuTxt += CR+LF+ "Beerdigungsinstitut"
   cNeuTxt += CR+LF+ "Karl Schumacher e.K."
   cNeuTxt += '</PRE></BODY></HTML>'
   
   nHandle := FOpen("c:\hdbe\WriterBrief.html",FO_READWRITE)
   nBytes := FRead( nHandle, @cBuffer, 20000 )
   FSeek(nHandle, 0)
   nBytes := FWrite( nHandle, PadR(cNeuTxt,nBytes," ") )
   nBytes := FClose( nHandle )

   //23.08.2016 18:38: ################################################
   // Vermerk im Notizfeld:
   IF "Guthaben"$cFile
      cVermerk := "AZA: "+DtoC(DATE()) + ", " + Trim(name1) + ", " + Trim(name2) + ", " + Trim(strasse) + ", " + Trim(plz_ort) + "."
   ELSEIF "ErinnTF"$cFile
        cVermerk := "GH-Mittlg: "+DtoC(DATE()) + ", " + Trim(name1) + ", " + Trim(name2) + ", " + Trim(strasse) + ", " + Trim(plz_ort) + "."
   ELSEIF "ErinnA-Kto"$cFile 
      cVermerk := "aKto-Erinn: "+DtoC(DATE()) + ", " + Trim(name1) + ", " + Trim(name2) + ", " + Trim(strasse) + ", " + Trim(plz_ort) + "."
   ELSE
      cVermerk := ""
   ENDIF
   IF !cVermerk$1->notiz
      1->(DbRlock())
      1->notiz += Chr(13)+Chr(10)+cVermerk
      1->(DbCommit())
   ENDIF
   //##################################################################

   ? RunShell (" /C START c:\hdbe\"+cTextProg+" c:\hdbe\WriterBrief.html",cComCom,.T.)
RETURN .T.

//FUNCTION FormularBrief( cFile, cFormular )
FUNCTION HTML_Brief( cFile, cFormular, cFont, cFSize, cFormSeite, cZeileCM, cNotiz_Bez )	//18.10.2022 cZeileMM -> cZeileCM // cNotiz_Bez
   LOCAL nZei := 8, nAnf, CR := Chr(13), LF := Chr(10)
   LOCAL nHandle, cBuffer, nBytes, cText, cNeuTxt := ""
   LOCAL cDatv := cDatver
   LOCAL nFSize, nFHoehe, nFBreite
   LOCAL nZeileMM
   DEFAULT cFormular TO ""
   DEFAULT cFont TO '"Times New Roman", serif'
   DEFAULT cFSize TO '18pt'
   DEFAULT cFormSeite TO '1cm 1cm 1cm 2cm'
   DEFAULT cZeileCM TO '0.14'		//11.10.2022 14:58 Zeilenabstand
	PRIVATE cBuero := 'Oberhausen'	//11.10.2022 16:56 PRIVATE fr VariErsatz
   nFSize := Val(cFSize)
   nFHoehe := nFSize * 0.352778
   nFBreite := nFSize * 0.2	// 0.2 ist ein gesch„tzter vorl„ufiger Wert 
   nZeileMM := IIf(Val(cZeileCM)<0.2, nFHoehe * Val(cZeileCM)*10, Val(cZeileCM)*10)
	
	DO WHILE At("\",cDatv) > 0
		cDatv := Stuff( cDatv, At("\",cDatv), 1, "/" )
	ENDDO
//	cFormular := "FILE:///" + cDatv + cFormular
//	cFormular := cDatv + cFormular
	
	// Zur Vermeidung von Kollision verschiedener Drucke    vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
	// Test: ist bereits die Datei HTML_Brief.html auf diesem PC ge”ffnet?
	nHandle := FOpen( "c:\hdbe\HTML_Brief.html", FO_EXCLUSIVE )
	IF nHandle = -1
	   //+ Die Datei ist bereits auf diesem PC ge”ffnet
	   FClose(nHandle)
	   msgbox("Es ist bereits ein HTML_Brief offen!"+CR+LF+"Bitte zuerst schlieáen, dann nochmal versuchen!")
	   RETURN .F.
	ELSE
	   FClose(nHandle)
	ENDIF
	//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	IF Len(cFile) > 50
		cText := cFile
		cFile := "HTML_Brief"
	ELSE
	   nHandle := FOpen( cFile, FO_READ )
	   cBuffer := Space(3000)
	   nBytes := FRead( nHandle, @cBuffer, 3000 )
	   cText := AllTrim(cBuffer)
	   FClose( nHandle )
	ENDIF

	// Test mit automatischem Ausfllen bei bestimmtem Formular:
	IF cFormular == "KSO_GhAusz.png"
		cFont := "Times New Roman"
		cFSize := "14pt"
		cFormSeite := "0cm 0cm 0cm 0cm"
		cText := CR+LF+CR+LF+CR+LF + Space(65) + "Auftrag: " + Str(1->auftrnr,6,0) + CR+LF+CR+LF+CR+LF+CR+LF+CR+LF+CR+LF
		cText += Space(35) + Trim(1->vorname) + " " + Trim(1->name) + CR+LF
	ENDIF         

	IF cFile == "c:\hdbe\dHTML.abr" .OR. cFile == "c:\hdbe\dHTML.mahn"
		cText := StrTran( cText, CR+LF+"     ", CR+LF )	// linken Rand zu NULL machen
	ENDIF

// vermutlich hier berflssig, weil schon in Inditext() 08.11.2022 10:42
   DO CASE
      CASE cSystem == "14" .OR. "Dortmund"$(za05x+za05)
         cBuero := "Dortmund"
         cRufnummer := "0231 1857 797"
      CASE cSystem == "18" .OR. "Duisburg"$(za05x+za05)
         cBuero := "Duisburg"
         cRufnummer := "0203 404140"
      CASE cSystem == "19" .OR. "Essen"$(za05x+za05)
         cBuero := "Essen"
         cRufnummer := "0201 766070"
      CASE cSystem == "17" .OR. "Gelsenkirchen"$(za05x+za05)
         cBuero := "Gelsenkirchen"
         cRufnummer := "0209 9442888"
      CASE cSystem == "15" .OR. "Herne"$(za05x+za05)
         cBuero := "Herne"
         cRufnummer := "02323 1460600"
      CASE cSystem == "16" .OR. "Oberhausen"$(za05x+za05)
         cBuero := "Oberhausen"
         cRufnummer := "0208 631349"
   ENDCASE

   cNeuTxt := ;
         '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'+CR+LF+;
         '<HTML>'+CR+LF+;
         '<HEAD>'+CR+LF+;
         '	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">'+CR+LF+;
         '	<TITLE>'+cFile+'</TITLE>'+CR+LF+;
         '	<META NAME="GENERATOR" CONTENT="KSOX.EXE">'+CR+LF+;
         '	<META NAME="CHANGEDBY" CONTENT="' + cBuero + '">'+CR+LF+;
         '	<STYLE TYPE="text/css">'+CR+LF+;
         '	<!--'+CR+LF+;
         '		@page { size: 21cm 29.7cm; margin:  ' + cFormSeite + '; }'+CR+LF+;
         '		P { margin-bottom: 0.21cm }'+CR+LF+;
         '		P#cour { font-family: ' + cFont + '; }'+CR+LF+;
         '		PRE { font-family: ' + cFont + '; font-size: ' + cFSize + '; line-height: ' + LTrim(Str(nZeileMM/10)) + 'cm; }'+CR+LF+;
         '	-->'+CR+LF+;
         '	</STYLE>'+CR+LF+;
         '</HEAD>'+CR+LF+;
         '<BODY LANG="de-DE" BACKGROUND="'+cFormular+'" DIR="LTR" STYLE="background: url('+cFormular+') no-repeat middle center scroll">'+CR+LF+;
         IIf( Upper(Right(cFormular,4))==".PNG", ;
         '<PRE STYLE="margin-top:0;margin-botton:0.35cm">'+CR+LF+;
         '<FONT style=" font-family: ' + cFont + '; font-size: ' + cFSize + '; line-height: ' + LTrim(Str(nZeileMM/10)) + 'cm; ">', ;
         '<PRE>' )
	
   cNeuTxt += ConvToAnsiCP(cText)
         
   cNeuTxt += '</FONT></PRE></BODY></HTML>'

	cNeuTxt := StrTran( cNeuTxt, "</B>", "</B>       ")	// durch <> entstehen 7 Blanks
	
	IF !FExists("c:\hdbe\HTML_Brief.html")
		FCreate("c:\hdbe\HTML_Brief.html")
		Sleep(100)
	ENDIF
   nHandle := FOpen("c:\hdbe\HTML_Brief.html",FO_READWRITE)
   nBytes := FRead( nHandle, @cBuffer, 20000 )
   nBytes := Max(10000,nBytes)
   FSeek(nHandle, 0)
   nBytes := FWrite( nHandle, PadR(cNeuTxt,nBytes," ") )
   nBytes := FClose( nHandle )

   ? RunShell (" /C START c:\hdbe\"+cTextProg+" c:\hdbe\HTML_Brief.html",cComCom,.T.)
   IF !Empty(cNotiz_Bez)
      cVermerk := ConvToOEMCP(cNotiz_Bez) + ": "+DtoC(DATE()) + ", " + BriefAdresse(2,"A")	// 2==1-zeilig, "A"==Ansprechpartner
	   IF !cVermerk$1->notiz
	      1->(DbRlock())
	      1->notiz += CRLF + cVermerk
	      1->(DbCommit())
	   ENDIF
	ENDIF
RETURN .T.

//+01.10.2018 18:18 Trauerdrucke + Anzeigen direkt mit OOWriter aufrufen:
// KK = Kaffeekarten
// ZA = Zeitungsanzeigen, ZD = ZeitungsDankanzeigen
// TK = Trauerkarten, DK = Dankkarten
FUNCTION TrauerBrief(cDruckArt, cDir)
	LOCAL cExt := ".ODT", cFileX, cKarte, cKarte_Ext, nHandle, oDlgB	//+08.11.2018 12:10 .ODT statt .odt
	LOCAL cFile := cDruckArt+"_"+Trim(1->name)+"_"+StrX(1->auftrnr,6,0)+cExt
	LOCAL cTrauerDir := IIF( FExists("Q:\Trauerdruck","D"),"Q:\Trauerdruck",IIF( FExists("M:\Trauerdruck","D"),"M:\Trauerdruck","C:\Trauerdruck"))	//+11.11.2018 18:52
	LOCAL cKarteX, aUm	//+13.11.2018 10:37 fr das File-Rename bei unerlaubten Sonderzeichen
	DEFAULT cDir TO cTrauerDir+"\"+IIf(cDruckArt=="KK","Kaffeekarten", ;	
												IIf(cDruckArt=="ZA","Zeitungsanzeigen", ;
												IIf(cDruckArt=="ZD","Zeitungsdankanzeigen", ;
												IIf(cDruckArt=="TK","Trauerkarten", ;
												IIf(cDruckArt=="DK","Dankkarten","Karten")))))
	//+11.11.2018 18:55 sicherheitshalber:
	IF !FExists(cTrauerDir,"D")
		msgbox("Kann das Verzeichnis Trauerdruck nicht finden! Einstellungen berprfen!")
	ENDIF
//	//+13.11.2018 08:29 Umlaute wandeln:
//	aUm := {{" ","_"},{"Ž","Ae"},{"™","Oe"},{"š","Ue"},{"„","ae"},{"”","oe"},{"","ue"},{"á","ss"}}
//	cFileX := cFile
//	AEval(aUm,{|a| cFileX :=StrTran(cFileX,a[1],a[2]) })
////	cFileX := StrTran(cFile ,"„","ae")
////	cFileX := StrTran(cFileX,"”","oe")
////	cFileX := StrTran(cFileX,"","ue")
////	cFileX := StrTran(cFileX,"Ž","Ae")
////	cFileX := StrTran(cFileX,"™","Oe")
////	cFileX := StrTran(cFileX,"š","Ue")
////	cFile  := StrTran(cFileX,"á","ss")

	cFILE := cDir + "\" + ConvToAnsiCP(cFile)	// das ist der berechnete Filename fr diesen Auftrag - als .odt

	//+12.11.2018 14:40 l”schen von Dateien mit Shift und Strg
	IF (AppKeyState(65553)==1 .AND. AppKeyState(65552)==1)
			   IF FExists(cFile) .AND. ConfirmBox( oCB, ;
		               "Wollen Sie die Datei wirklich l”schen?" + CRLF + ;
		               "Achtung: OK l”scht die Datei "+ConvToOEMCP(cFile) + CRLF + ;
		               "abbrechen mit <Esc>", ;
		               "Datei "+SubStr(ConvToOEMCP(cFile),RAt("\",ConvToOEMCP(cFile))+1)+" existiert!", ;
		               XBPMB_OKCANCEL, ;
		               XBPMB_QUESTION ) == XBPMB_RET_OK
		         // die bisherige cFile-Datei wird gel”scht:
					IF FErase( cFILE ) == -1
						msgbox("Die Datei "+cFile+" kann nicht gel”scht werden")
					ENDIF
				ELSEIF FExists(SubStr(cFile,1,RAt(".",cFile)-1) + ".DOC") .AND. ConfirmBox( oCB, ;
		               "Wollen Sie die Datei wirklich l”schen?" + CRLF + ;
		               "Achtung: OK l”scht die Datei "+ConvToOEMCP(cFile) + CRLF + ;
		               "abbrechen mit <Esc>", ;
		               "Datei "+SubStr(ConvToOEMCP(cFile),RAt("\",ConvToOEMCP(cFile))+1)+" existiert als .DOC!", ;
		               XBPMB_OKCANCEL, ;
		               XBPMB_QUESTION ) == XBPMB_RET_OK
		         // die bisherige cFile-Datei wird gel”scht:
					FErase( SubStr(cFile,1,RAt(".",cFile)-1) + ".DOC" )
				ELSE
					msgbox("Die Datei "+SubStr(cFile,RAt("\",cFile)+1)+" existiert nicht!")
				ENDIF
			RETURN .T.
	ENDIF
		
	IF !FExists(cFile) .OR. AppKeyState(65553)==1	// Datei existiert nicht als .odt - oder CTRL gedrckt zum erneuten Suchen
		IF FExists(SubStr(cFile,1,RAt(".",cFile)-1) + ".DOC") .AND. AppKeyState(65553)==0	// Datei existiert schon als .doc
		ELSE				// wenn Datei noch nicht existiert, dann Vorlage suchen:
	      oDlgB := XbpFileDialog():new():CREATE()
	      oDlgB:title := "Suche nach Vorlage fr "+cFile+" :"
	      oDlgB:restoreDir := .T.
	      cKarte := oDlgB:open(cDir)
	      cKarte := IIf(ValType(cKarte)=="C",ConvToAnsiCP(cKarte),cKarte)				// das ist die ausgew„hlte Vorlage
	      oDlgB:destroy()
	   ENDIF
   ENDIF

	// wenn die Vorlage ausgesucht ist und NICHT den Soll-Namen der Datei hat: 
	IF ValType(cKarte)=="C" .AND. cKarte != cFile
	   cKarte_Ext := Upper(SubStr(cKarte,RAt(".",cKarte)))			//+08.11.2018 12:10 Upper()
	   IF Upper(cExt) != Upper(cKarte_Ext)
	   	MsgBox("Die ausgew„hlte Datei hat nicht das Format .ODT !"+CRLF+;
	   			"Die "+cDruckArt+"-Datei erh„lt das Format "+cKarte_Ext+".")
			cFile := SubStr(cFile,1,RAt(".",cFile)-1) + cKarte_Ext
		ENDIF
		// wenn die ausgesuchte Vorlage nicht die Druckdatei cFile ist:
		IF Upper(cKarte) != Upper(cFile)
			// wenn die Druckdatei cFile zu diesem Auftrag schon existiert:
			IF FExists(cFile)
			   IF ConfirmBox( oCB, ;
		               "Wollen Sie die Datei gleichen Namens wirklich berschreiben?" + CRLF + ;
		               "Achtung: OK berschreibt die bisherige Datei "+ConvToOEMCP(cFile) + CRLF + ;
		               "abbrechen mit <Esc>", ;
		               "Datei "+SubStr(ConvToOEMCP(cFile),RAt("\",cFile)+1)+" existiert bereits!", ;
		               XBPMB_OKCANCEL, ;
		               XBPMB_QUESTION ) == XBPMB_RET_OK
		         // die bisherige cFile-Datei wird durch die ausgesuchte Vorlage berschrieben:
//					aUm := {{" ","_"},{"Ž","Ae"},{"™","Oe"},{"š","Ue"},{"„","ae"},{"”","oe"},{"","ue"},{"á","ss"}}
//					cKarteX := cKarte
//					AEval(aUm,{|a| cKarteX :=StrTran(cKarteX,a[1],a[2]) })
//					IF cKarte != cKarteX
//						FRename(ConvToAnsiCP(cKarte), cKarteX)
//					ENDIF
//					IF !FExists(cKarteX)
//						msgbox("Beim Umbenennen der Sonderzeichen in der Datei "+cKarte+" ist ein Fehler passiert!")
//					ENDIF
					COPY FILE (cKarte) TO (cFile)
				ENDIF
			ELSE	// wenn die Druckdatei cFile noch nicht existiert,
				// ... dann wird sie aus der Vorlage erzeugt:
				COPY FILE (cKarte) TO (cFile)
			ENDIF
		ENDIF
	ENDIF

	// wenn cFile eine .odt-Datei ist ... aber nicht existiert:
	IF Upper(SubStr(cFile,RAt(".",cFile))) == ".ODT" .AND. !FExists(cFile)
		// wenn cFile als .doc-Datei existiert, dann als solche verwenden:
		IF FExists(SubStr(cFile,1,RAt(".",cFile)-1) + ".DOC")
			cFile := SubStr(cFile,1,RAt(".",cFile)-1) + ".DOC"
		ELSE	// cFile existiert weder als .odt- noch als .doc-Datei:
			   IF ConfirmBox( oCB, ;
		               "Wollen Sie eine leere Datei gleichen Namens neu erzeugen?" + CRLF + ;
		               "Achtung: OK erzeugt ein leeres Blatt fr "+ConvToOEMCP(cFile) + CRLF + ;
		               "abbrechen mit <Esc>", ;
		               "Datei existiert nicht als .odt oder .doc!", ;
		               XBPMB_OKCANCEL, ;
		               XBPMB_QUESTION ) == XBPMB_RET_OK
		         nHandle := FCreate(cFile)		// leere Datei cFile als .odt-Datei erzeugen
		         FClose(nHandle)
		      ENDIF
		ENDIF
	ENDIF
	IF FExists(cFile)
	   ? RunShell (" /C START c:\hdbe\"+cTextProg+" "+cFile,cComCom,.T.)
	ENDIF
RETURN .T.

//+28.06.2018 14:23 vorl„ufige Rechnung an Angeh”rige:
FUNCTION KKBrief()
	LOCAL cText := "", cBuero := "Oberhausen"
			
   DO CASE
      CASE cSystem == "14" .OR. "Dortmund"$(za05x+za05)
         cBuero := "Dortmund"
      CASE cSystem == "18" .OR. "Duisburg"$(za05x+za05)
         cBuero := "Duisburg"
      CASE cSystem == "19" .OR. "Essen"$(za05x+za05)
         cBuero := "Essen"
      CASE cSystem == "17" .OR. "Gelsenkirchen"$(za05x+za05)
         cBuero := "Gelsenkirchen"
      CASE cSystem == "15" .OR. "Herne"$(za05x+za05)
         cBuero := "Herne"
      CASE cSystem == "16" .OR. "Oberhausen"$(za05x+za05)
         cBuero := "Oberhausen"
   ENDCASE

	cText += CRLF+CRLF+CRLF+CRLF+CRLF+CRLF+CRLF+CRLF+CRLF

		cText += 1->ansp_anr+IIf(1->ansp_anr="Herr","n","") + CRLF
		cText += Trim(1->ansp_vname)+" "+Trim(1->ansp_name) + CRLF
		cText += Trim(1->ansp_str) + CRLF
		cText += Trim(1->ansp_ort) + CRLF
		cText += CRLF+CRLF+CRLF+CRLF+CRLF
		cText += PadL(cBuero+", "+DtoC(DATE()),68," ") + CRLF
		cText += CRLF
		cText += "Sterbefall: "
		cText += Trim(1->anrede)+" "+Trim(1->vorname)+" "+Trim(1->name) + CRLF
		cText += CRLF
		cText += "Sehr geehrte"+IIf(1->ansp_anr="Herr","r "," ")+Trim(1->ansp_anr)+" "+Trim(1->ansp_name)+"," + CRLF
		cText += CRLF

		cText += "Anl„sslich der Bestattung sind folgende Kosten entstanden:" +CRLF
		cText += CRLF
		cText += KKRech()		// FUNCTION in BregieAK.prg
		cText += CRLF
		cText += "Fr die Richtigkeit"

	// wegen der Rechnungstabelle wird eine monospace-Schrift gew„hlt:
		HTML_Brief( cText, , '"Courier New", monospace', "11pt", "2cm 2cm 2cm 2cm" )

RETURN .T.


FUNCTION AdressKuvert2( name1, name2, strasse, plz_ort )
   nOldArea := Select()
   select 9
   use mwstdat
   nZnam := Val( Substr( 9->f13,1,2 ) )
   nSnam := Val( Substr( 9->f13,4,2 ) )
   nZadr := Val( Substr( 9->f14,1,2 ) )
   nSadr := Val( Substr( 9->f14,4,2 ) )
   use
   set device to printw
   IF cDrucker == "HP"
      @ 0,0 say Chr(27) + "&l1O"
   ENDIF
      @ nZadr,nSadr say name1
        @ ++nZadr,nSadr say name2
      @ ++nZadr,nSadr say strasse
      @ ++nZadr,nSadr say plz_ort
   IF cDrucker == "HP"
      @ ++nZadr,0 say Chr(27) + "&l0O"
   ENDIF
   EJECT
   Set device to screen
   SELECT &nOldArea
RETURN .T.

// Bemerkung vom 15.09.2019 14:08:
// geremt, weil inzwischen praktisch ersetzt durch R3vorige() und R5vorige() in den Rechnungsmoduen
//FUNCTION AuftragsKorrektur()
//   LOCAL nOldArea := Select(), n, i := 0, j := 0, aData2 := Array(3->(FCount()))
//   LOCAL cStickDir := ""
//   LOCAL cStickLW := StickDrive("\auftr",@cStickDir)
//   LOCAL cAuf := Str(1->auftrnr,6,0)
//   IF ConfirmBox( oCB, ;      //+24.03.2012 10:59
//               "Wollen Sie wirklich die Rechnung zu diesem Auftrag korrigieren?" + CRLF + ;
//               "Achtung: OK schreibt die Rechnung aus dem Stick in die Auftragsdatei!" + CRLF + ;
//               "abbrechen mit <Esc>", ;
//               "Funktion Rechnung korrigieren!", ;
//               XBPMB_OKCANCEL, ;
//               XBPMB_QUESTION ) == XBPMB_RET_OK
//      SELECT 23
//      DbUseArea(,,cStickDir+"\auftr",,.T.)
//      OrdListAdd( cStickDir+"\xaufauf" )     // muss vorher auf dem Stick geindext werden
//      IF DbSeek(cAuf,.F.)  // wenn auf Stick dieser Auftrag drauf ist
//         IF 3->(DbSeek(cAuf,.F.))
//            i := 0; j := 0
//            // die (defekte) Originalrechnung l”schen:
//            DO WHILE 3->auftrnr == Val(cAuf) .AND. !3->(Eof())
//               3->(Satzsp( oCB ))
//               3->(DbDelete())
//               3->(DbSkip())
//               i++
//            ENDDO
//            // die (intakte) Ersatzrechnung vom Stick reinkopieren:
//            DO WHILE 23->auftrnr == Val(cAuf) .AND. !23->(Eof())
//               For n := 1 to FCount()
//                  aData2[n] := FieldGet( n )
//               NEXT
//               SELECT 3
//               APPEND BLANK
//               FOR n := 1 to FCount()
//                  FieldPut( n, aData2[n] )
//               NEXT
//               SELECT 23
//               23->(DbSkip())
//               j++
//            ENDDO
//         ENDIF
//         msgbox(Str(i)+" Zeilen ersetzt durch "+Str(j)+" Zeilen.")
//      ENDIF
//      23->(DbCloseArea())
//   ENDIF
//   SELECT &nOldArea
//RETURN .T.
