//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"
#include "directry.ch"
#include "dll.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 nR85 := int(550*nV)       // linker Rand EingabeFeld	26.02.2024 16:19
   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 nT4d1 := int(570*nV)     // Linker Rand Taste +23.01.2024 15:12
   LOCAL nT4d2 := int(600*nV)     // Linker Rand Taste +23.01.2024 15:12
   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 nTld := int(30*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", ;
                        {XbpObjekt(aEditcontrols,"VERST_KZ"):setdata(""), ;
                        XbpObjekt(aEditcontrols,"VERST_IN1"):setdata("zu Hause"), ;
                        XbpObjekt(aEditcontrols,"VERST_IN2"):setdata(XbpObjekt(aEditcontrols,"STRASSE"):getData()), ;
                        XbpObjekt(aEditcontrols,"VERST_IN3"):setdata(XbpObjekt(aEditcontrols,"PLZ_ORT"):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 ), ;
                        XbpObjekt(aEditcontrols,"VERST_KZ"):setdata(cVerst0), ;
                        XbpObjekt(aEditcontrols,"VERST_IN1"):setdata(cVerst1), ;
                        XbpObjekt(aEditcontrols,"VERST_IN2"):setdata(cVerst2), ;
                        XbpObjekt(aEditcontrols,"VERST_IN3"):setdata(cVerst3), ;
                        DbRUnlock(RecNo()), SetAppFocus( aEditControls[20] )  }	//27.11.2022 09:01 xbpObjekt
   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 ), ;
                        XbpObjekt(aEditcontrols,"VERST_KZ"):setdata(cVerst0), ;
                        XbpObjekt(aEditcontrols,"VERST_IN1"):setdata(cVerst1), ;
                        XbpObjekt(aEditcontrols,"VERST_IN2"):setdata(cVerst2), ;
                        XbpObjekt(aEditcontrols,"VERST_IN3"):setdata(cVerst3), ;
                        DbRUnlock(RecNo()), SetAppFocus( aEditControls[20] ) }	//27.11.2022 09:01 xbpObjekt
   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()
   
   oXbp := XbpStatic():new( drawingArea, , {nR2*nHV,nBo}, {nFl2*nHV,nBh} )   //+07.06.2011 17:58
   oXbp:caption := "wird jetzt fr KREmatorium gebraucht"
   oXbp:clipSiblings := .T.
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()
   
//   //26.11.2022 10:15 Eingabefeld verschoben wegen Bedeutungs„nderung von Autobus in Krematorium   vvvvvvvvvvvvvvv
//   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 ) }
//   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),;
                               obj:getdata(), ;
                               obj:setdata(), DbRUnlock(RecNo())  }	//27.11.2022 08:31 aEditControls -> obj
   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
   oXbp1KRE := XbpPushButton():new( drawingArea, , {nR7*nHV,nBo}, {nTl/2*nHV,nBh} )  //27.11.2022 10:40 hierher verschoben
   oXbp1KRE:caption := "KRE"
   oXbp1KRE:clipSiblings := .T.
   oXbp1KRE:create()
   oXbp1KRE:activate := {|x,o| Satzsp(oDlg), o:=XbpObjekt(aEditcontrols,"BUSKOMM"), ;
   							Krankenhaus( IIf(Empty(o:getdata()), "KRE", Upper(Trim(o:getdata()))), ;
                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3, .T. ), ;
                        XbpObjekt(aEditcontrols,"BUSKOMM"):setdata(cVerst3), ;
                        DbRUnlock(RecNo()), SetAppFocus( XbpObjekt(aEditcontrols,"BUSKOMM") )  }
   AAdd ( aBut, oXbp1KRE )
   //26.11.2022 10:15 Eingabefeld verschoben wegen Bedeutungs„nderung von Autobus in Krematorium   vvvvvvvvvvvvvvv
   nFa := 20 ; nFl := nFa*6
   oXbp := XbpSLE():new( drawingArea, , {(nR7+nTl/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 ) }
   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 )
   //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   oXbp1FH := XbpPushButton():new( drawingArea, , {(nR9-nTl)*nHV,nBo}, {nTl*nHV,nBh} )  //+07.11.2022 21:44
   oXbp1FH:caption := "Friedhof"
   oXbp1FH:clipSiblings := .T.
   oXbp1FH:create()
   oXbp1FH:activate := {|x,o| Satzsp(oDlg), o := XbpObjekt(aEditcontrols,"BEIFRIED"), ;
   							Krankenhaus( IIf(Empty(o:getdata()), "FH", Upper(Trim(o:getdata()))), ;
                        oDlg, @cVerst0, @cVerst1, @cVerst2, @cVerst3, .T. ), ;
                        o:setdata(cVerst1 + " " + cVerst3), ;
                        DbRUnlock(RecNo()), SetAppFocus( o )  }
   AAdd ( aBut, oXbp1FH )
//   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 ) }
   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 )

   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()
   nBo := nBo-nBz
   nFa := 28 ; nFl := nFa*4
   oXbp := XbpSLE():new( drawingArea, , {nR7*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 )

   nFa := 20 ; nFl := nFa*5
   oXbp := XbpSLE():new( drawingArea, , {nR85*nHV,nBo}, {nFl4*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->MESSETAG ), 1->MESSETAG := x ) }
   oXbp:create():setData()
   oXbp:cargo := "MESSETAG"		//+26.02.2024 16:04
   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), ;
//                               obj:getdata(), ;
//                               obj:setdata(), DbRUnlock(RecNo())  }
   oXbp:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), Satzsp(oDlg), ;
                        obj:getdata(), obj:setdata(), ;
                        XbpObjekt(aEditcontrols,"MESSETAG"):setData( Cdow(CtoD(obj:getData()) ) ), DbRUnlock(RecNo()) }	//26.02.2024 16:09
   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}, {nBl2*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), ;
                               obj:getdata(), ;
                               obj:setdata(), DbRUnlock(RecNo())  }	//27.11.2022 08:31 aEditControls -> obj
   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 ), Satzsp(oDlg), ;
                        obj:getdata(), obj:setdata(), ;
                        XbpObjekt(aEditcontrols,"BEERDTAG"):setData( Cdow(CtoD(obj:getData()) ) ), DbRUnlock(RecNo()) }	//27.11.2022 08:33 XbpObjekt
   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}, {nBl2*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), ;
                               obj:getdata(), ;
                               obj:setdata(), DbRUnlock(RecNo())  }	//27.11.2022 08:31 aEditControls -> obj
   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-(nFl4+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
	   oXbpN:cargo := "NOTIZ"		//+26.11.2022 16:30
      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 )

IF FExists(cDatver+"inditext.txt")		//12.09.2023 08:37 fr die Filialen ohne Inditext-Modul
   oXbp24d1 := XbpPushButton():new( drawingArea, , {nT4d1*nHV,nBo}, {nTld*nHV,nBh} )
   oXbp24d1:caption := "LO-Text"
   oXbp24d1:clipSiblings := .T.
   oXbp24d1:group := XBP_WITHIN_GROUP
   oXbp24d1:create()
   oXbp24d1:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
           				Inditext( oDlg, "F\" ), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp24d1 )
ENDIF

IF FExists(cDatver+"F\inditextF.txt")		//12.09.2023 08:37 fr die Filialen ohne Inditext-Modul
   oXbp24d2 := XbpPushButton():new( drawingArea, , {nT4d2*nHV,nBo}, {nTld*nHV,nBh} )
   oXbp24d2:caption := "LO-Form"
   oXbp24d2:clipSiblings := .T.
   oXbp24d2:group := XBP_WITHIN_GROUP
   oXbp24d2:create()
   oXbp24d2:activate := {|| Satzsp( oDlg ), ;
                        oFocZwi := oFocSle, ;
                        Gather( aEditControls ), 1->(DbCommit()), ;
                        Trckng( 1, RecNo(), aData1, cV ), 1->(DbRUnlock( Recno() ) ), ;
           				Inditext_2( oDlg, "F\" ), ;
                        1->(DbRUnlock( Recno() ) ), Scatter ( aEditControls ), ;
                        aData1 := SatzGet( Select(), RecNo() ), ;
                        oXbp:enable(), ;
        						SetAppFocus( oDlg ), SetAppFocus( oFocSle := oFocZwi ) }
	AAdd ( aBut, oXbp24d2 )
ENDIF

   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-2*nBz
//   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 )

   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"})
            // findet doppelte Fallnummern in diesem Filial-'Nummern-Umfeld'
            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())
			CASE mp1 == xbeK_ALT_SZ
            IF 1->auftrnr == 66
            	nRec := 1->(RecNo())
	            1->(DbSuspendNotifications())
               IF ConfirmBox( oCB, ;
                        "Klick auf OK zeigt in den Feldern die Feldnamen." + CRLF + ;
                        "Vorher musste auf den Fall 66 umgestellt werden," + CRLF + ;
                        "danach wieder zurck auf den aktuellen Fall." + CRLF + ;
                        "abbrechen mit <Esc>", ;
                        "Funktion Feldname im Feld zeigen:", ;
                        XBPMB_OKCANCEL, ;
                        XBPMB_QUESTION ) == XBPMB_RET_OK
               	IF DbSeek("    66",.F.)
	               	Satzsp()
	               	FOR ec:=2 TO Len(aEditControls)
	               		xCargo := aEditControls[ec]:cargo
	               		IF ValType(xCargo) == "C" .AND. ValType(1->&(xCargo)) == "C"
		               		aEditControls[ec]:setData( xCargo )
		               		aEditControls[ec]:getData()
	               		ELSEIF ValType(xCargo) == "C" .AND. ValType(1->&(xCargo)) $ "NDM"
		               		aEditControls[ec]:setData( xCargo )
		               	ENDIF
	               	NEXT
	               	DbRUnlock(RecNo())
	               	msgbox("Dieses ist die Anzeige der Feldnamen." + CRLF +;
	               		"Der Feldname der Auftragsnummer 66 ist AUFTRNR.")
               	ENDIF
               ENDIF
	            1->(DbGoto(nRec))
	            1->(DbSkip(0))
	            1->(DbResumeNotifications())
         	ELSE
         		msgbox("Suchen/erzeugen Sie zuerst den Fall 66!")
         	ENDIF
	      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.)
//20.04.2023 11:51 statt Vorzeile jetzt : weil LO sonst nicht aufgerufen werden kann
		IF "LO"$Upper(cTextProg)
		  	RunShell (" /C START C:\Progra~1\LibreOffice\program\swriter.exe --nologo c:\hdbe\WriterBrief.html",cComCom,.T.)	//-nologo mit einem '-' fr AOO-Schnellstart
		ELSE
		  	RunShell (" /C START C:\hdbe\"+cTextProg+" -nologo c:\hdbe\WriterBrief.html",cComCom,.T.)	//-nologo mit einem '-' fr AOO-Schnellstart
		ENDIF
RETURN .T.

//aus FUNCTION HTML_Brief fr Indiform()
FUNCTION HTML_Form( cContainer, cFormular, cFont, cFSize, cFormSeite, cZeileCM, cNotiz_Bez, cOrdner, cFile)	//cOrdner = FormArt-Bezeichnung ohne .txt
   LOCAL nZei := 8, nAnf, CR := Chr(13), LF := Chr(10)
   LOCAL nHandle, cBuffer, nBytes, cText, cNeuTxt := ""
   LOCAL nFSize, nFHoehe, nFBreite
   LOCAL nZeileMM
   LOCAL cSZeit, nSZeit, cFZeit, nFZeit, nZ	//30.12.2022 15:29 warten aufs PDF
   LOCAL cHeute := DtoC(DATE())
   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 cAuftrOrdner := cDatver + "Indiform\AUFTRAG\" + StrZero(1->auftrnr,6,0)
   PRIVATE cFilehtml, cFilepdf
	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)
	
	IF ".txt"$cFile
		cFile := SubStr(cFile,1,At(".txt",cFile)-1)
	ENDIF
	
   IF !FExists( cAuftrOrdner,"D" )
      RunShell( "/C MD "+cAuftrOrdner,, .T. )
      sleep(50)
   ENDIF
   IF !FExists( cAuftrOrdner,"D" )
		msgbox("Der Ordner " + 	cAuftrOrdner + " kann nicht erzeugt werden!")
		RETURN .F.
	ENDIF
	
	cFilehtml := cAuftrOrdner + "\" + cFile + "_" + StrZero(1->auftrnr,6,0) + "_" + cHeute + ".html"
	cFilepdf := cAuftrOrdner + "\" + cFile + "_" + StrZero(1->auftrnr,6,0) + "_" + cHeute + ".pdf"
	
	cFormular := cDatver + cFormular
	
	// Zur Vermeidung von Kollision verschiedener Drucke    vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
	// Test: ist bereits die Datei cFilehtml auf diesem PC ge”ffnet?
	IF FExists(cFilehtml)		//22.12.2022 19:13
		nHandle := FOpen( cFilehtml, FO_EXCLUSIVE )
		IF nHandle = -1
		   //+ Die Datei ist bereits auf diesem PC ge”ffnet
		   FClose(nHandle)
		   msgbox("Es ist bereits ein " + cFilehtml + " offen!"+CR+LF+;
		   			"Bitte OfficeWriter schlieáen, dann nochmal versuchen!")
		   RETURN .F.
		ELSEIF ConfirmBox( oCB, "Soll sie berschrieben werden?", ;
                        "Diese Datei ist schon vorhanden mit Datum von heute!", ;
                        XBPMB_YESNO, ;
                        XBPMB_QUESTION ) == XBPMB_RET_YES
		   FClose(nHandle)
		ELSE 
		   FClose(nHandle)
		   RETURN .F.
		ENDIF
	ENDIF
	//--------------------------------
	
	// Test: ist bereits die Datei cFilepdf auf diesem PC ge”ffnet?
	IF FExists(cFilepdf)		//22.12.2022 19:13
		nHandle := FOpen( cFilepdf, FO_EXCLUSIVE )
		IF nHandle = -1
		   //+ Die Datei ist bereits auf diesem PC ge”ffnet
		   FClose(nHandle)
		   msgbox("Es ist bereits ein " + cFilepdf + " offen!"+CR+LF+;
		   			"Bitte AdobeReader schlieáen, dann nochmal versuchen!")
		   RETURN .F.
		ELSE
		   FClose(nHandle)
		ENDIF
	ENDIF
	//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

   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+;
         IIf( Upper(Right(cFormular,4))==".PNG", ;
         '<BODY LANG="de-DE" STYLE="background: url('+cFormular+') no-repeat middle center scroll">'+CR+LF+;
         '<PRE STYLE="margin-top:0;margin-bottom:0cm">'+CR+LF+;
         '<FONT style=" font-family: ' + cFont + '; font-size: ' + cFSize + '; line-height: ' + LTrim(Str(nZeileMM/10)) + 'cm; ">', ;
         '<BODY LANG="de-DE">'+CR+LF+;
         '<PRE>' )
	
   cNeuTxt += ConvToAnsiCP(cContainer)
         
   cNeuTxt += '</FONT></PRE></BODY></HTML>'

	cNeuTxt := StrTran( cNeuTxt, "</B>", "</B>       ")	// durch <> entstehen 7 Blanks
	
	IF !FExists(cFilehtml)
		nHandle := FCreate(cFilehtml)
		FClose(nHandle)
		Sleep(100)
	ENDIF
   nHandle := FOpen(cFilehtml,FO_READWRITE)
   nBytes := FRead( nHandle, @cBuffer, 20000 )
   nBytes := Max(10000,nBytes)
   FSeek(nHandle, 0)
   nBytes := FWrite( nHandle, PadR(cNeuTxt,nBytes," ") )
   nBytes := FClose( nHandle )
	sleep(50)
	
	IF AppKeyState(65553)==1 .OR. "INPUT"$cNeuTxt	// zusammen mit Strg-Taste	//19.12.2022 15:13 mit LibreOffice zu PDF konvertieren
		IF FExists('C:\Program Files\LibreOffice\program\swriter.exe')
			dHeute := DATE()		//02.01.2023 13:03
			cSZeit := Time()		//30.12.2022 15:36
			nSZeit := Val(SubStr(cSZeit,1,2))*3600 + Val(SubStr(cSZeit,4,2))*60 + Val(SubStr(cSZeit,7,2))
		  	IF RunShell (' --headless --convert-to pdf:"writer_pdf_Export" --outdir "&cAuftrOrdner" &cFilehtml', 'C:\Program Files\LibreOffice\program\swriter.exe',.T.) == 0
	//30.12.2022 15:36 statt sleep(300):
				IF Len(Directory(cFilepdf)) > 0
					dFDatum := Directory(cFilepdf)[1,F_WRITE_DATE]		//02.01.2023 13:03
					cFZeit := Directory(cFilepdf)[1,F_WRITE_TIME]
					nFZeit := Val(SubStr(cFZeit,1,2))*3600 + Val(SubStr(cFZeit,4,2))*60 + Val(SubStr(cFZeit,7,2))
					nZ := 0
					DO WHILE (nSZeit > nFZeit .OR. DATE() > dFDatum ) .OR. nZ > 20
						sleep(100)
						cFZeit := Directory(cFilepdf)[1,F_WRITE_TIME]
						nFZeit := Val(SubStr(cFZeit,1,2))*3600 + Val(SubStr(cFZeit,4,2))*60 + Val(SubStr(cFZeit,7,2))
						nZ++
					ENDDO
				ELSE
					nz := 0
					sleep(300)
				ENDIF
				IF nZ > 20
					msgbox("Achtung: Die PDF-DAtei ist vermutlich von einem frheren Fall!")
				ELSEIF FExists('C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe')
					RunShell (' /N '+cFilepdf,'C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe',.T.)
				ELSEIF FExists('C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe')
					RunShell (' /N '+cFilepdf,'C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe',.T.)
				ELSE
					msgbox("Der Adobe Reader DC ist nicht ordentlich installiert!")
				ENDIF
			ENDIF
		ELSE
			msgbox("LibreOffice ist nicht ordentlich installiert")
		ENDIF
	ELSE
		// von Hand erzeugt „hnlich der Function Lfn2Sfn():
		//		cTextProg := "C:\Progra~1\LibreOffice\program\swriter.exe"
		IF "LO"$Upper(cTextProg)
		  	RunShell (" /C START C:\Progra~1\LibreOffice\program\swriter.exe --nologo &cFilehtml",cComCom,.T.)	//-nologo mit einem '-' fr AOO-Schnellstart
		ELSE
		  	RunShell (" /C START C:\hdbe\"+cTextProg+" -nologo &cFilehtml",cComCom,.T.)	//-nologo mit einem '-' fr AOO-Schnellstart
		ENDIF
	ENDIF
   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.

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
   LOCAL cSZeit, nSZeit, cFZeit, nFZeit, nZ	//30.12.2022 15:29 warten aufs PDF
   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
	IF !"HDBE"$Upper(cFormular)
		cFormular := cDatv + cFormular
	ENDIF
	
	// Zur Vermeidung von Kollision verschiedener Drucke    vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
	// Test: ist bereits die Datei HTML_Brief.html auf diesem PC ge”ffnet?
	IF FExists("c:\hdbe\HTML_Brief.html")		//22.12.2022 19:13
		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.html offen!"+CR+LF+"Bitte OfficeWriter schlieáen, dann nochmal versuchen!")
		   RETURN .F.
		ELSE
		   FClose(nHandle)
		ENDIF
	ENDIF
	//--------------------------------
	// Test: ist bereits die Datei HTML_Brief.pdf auf diesem PC ge”ffnet?
	IF FExists("c:\hdbe\HTML_Brief.pdf")		//22.12.2022 19:13
		nHandle := FOpen( "c:\hdbe\HTML_Brief.pdf", FO_EXCLUSIVE )
		IF nHandle = -1
		   //+ Die Datei ist bereits auf diesem PC ge”ffnet
		   FClose(nHandle)
		   msgbox("Es ist bereits ein HTML_Brief.PDF offen!"+CR+LF+"Bitte AdobeReader schlieáen, dann nochmal versuchen!")
		   RETURN .F.
		ELSE
		   FClose(nHandle)
		ENDIF
	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 "KSO_GhAusz.png"$cFormular
		cFont := "Times New Roman"
		cFSize := "14pt"
		cFormSeite := "0cm 0cm 0cm 0cm"
		nZeileMM := 4.9
		cText := 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+;
         IIf( Upper(Right(cFormular,4))==".PNG", ;
         '<BODY LANG="de-DE" STYLE="background: url('+cFormular+') no-repeat middle center scroll">'+CR+LF+;
         '<PRE STYLE="margin-top:0;margin-bottom:0cm">'+CR+LF+;
         '<FONT style=" font-family: ' + cFont + '; font-size: ' + cFSize + '; line-height: ' + LTrim(Str(nZeileMM/10)) + 'cm; ">', ;
         '<BODY LANG="de-DE">'+CR+LF+;
         '<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")
		nHandle := FCreate("c:\hdbe\HTML_Brief.html")
		FClose(nHandle)
		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 )

	IF AppKeyState(65553)==1 .OR. "INPUT"$cNeuTxt	// zusammen mit Strg-Taste	//19.12.2022 15:13 mit LibreOffice zu PDF konvertieren
//geht nicht   	IF RunShell (' /C START C:\HDBE\swriter.libre.lnk --headless --convert-to pdf:"writer_pdf_Export" C:\HDBE\HTML_Brief.html',cComCom,.T.)
//geht nicht   	IF RunShell (" /C START C:\Progra~1\LibreOffice\program\swriter.exe --headless --convert-to pdf:'writer_pdf_Export' C:\HDBE\HTML_Brief.html",cComCom,.T.)
// so nicht! komplette Pfadangabe statt Link   	IF RunShell (' --headless --convert-to pdf:"writer_pdf_Export" --outdir "C:\HDBE" C:\HDBE\HTML_Brief.html', 'C:\HDBE\swriter.libre.lnk',.T.) == 0
		IF FExists('C:\Program Files\LibreOffice\program\swriter.exe')
			dHeute := DATE()		//02.01.2023 13:03
			cSZeit := Time()		//30.12.2022 15:36
			nSZeit := Val(SubStr(cSZeit,1,2))*3600 + Val(SubStr(cSZeit,4,2))*60 + Val(SubStr(cSZeit,7,2))
		  	IF RunShell (' --headless --convert-to pdf:"writer_pdf_Export" --outdir "C:\HDBE" C:\HDBE\HTML_Brief.html', 'C:\Program Files\LibreOffice\program\swriter.exe',.T.) == 0
		// geht mit OpenOffice nicht!	IF	RunShell (' -headless -convert-to pdf:"writer_pdf_Export" C:\HDBE\HTML_Brief.html', 'C:\Program Files (x86)\OpenOffice 4\program\swriter.exe',.T.)
	//30.12.2022 15:36 statt sleep(300):
				dFDatum := Directory("C:\HDBE\HTML_Brief.pdf")[1,F_WRITE_DATE]		//02.01.2023 13:03
				cFZeit := Directory("C:\HDBE\HTML_Brief.pdf")[1,F_WRITE_TIME]
				nFZeit := Val(SubStr(cFZeit,1,2))*3600 + Val(SubStr(cFZeit,4,2))*60 + Val(SubStr(cFZeit,7,2))
				nZ := 0
				DO WHILE (nSZeit > nFZeit .OR. DATE() > dFDatum ) .OR. nZ > 20
					sleep(100)
					cFZeit := Directory("C:\HDBE\HTML_Brief.pdf")[1,F_WRITE_TIME]
					nFZeit := Val(SubStr(cFZeit,1,2))*3600 + Val(SubStr(cFZeit,4,2))*60 + Val(SubStr(cFZeit,7,2))
					nZ++
					IF nZ > 30	//18.02.2024 11:30 damit keine Endlosschleife
						EXIT
					ENDIF
				ENDDO

				IF nZ > 20
					msgbox("Achtung: Die PDF-DAtei ist vermutlich von einem frheren Fall!")
				ELSEIF FExists('C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe')
					RunShell (' /N C:\HDBE\HTML_Brief.pdf','C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe',.T.)
				ELSEIF FExists('C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe')
					RunShell (' /N C:\HDBE\HTML_Brief.pdf','C:\Program Files\Adobe\Acrobat DC\Acrobat\Acrobat.exe',.T.)
				ELSE
					msgbox("Der Adobe Reader DC ist nicht ordentlich installiert!")
				ENDIF
			ENDIF
		ELSE
			msgbox("LibreOffice ist nicht ordentlich installiert")
		ENDIF
	ELSE
		// von Hand erzeugt „hnlich der Function Lfn2Sfn():
		//		cTextProg := "C:\Progra~1\LibreOffice\program\swriter.exe"
		IF "LO"$Upper(cTextProg)
		  	RunShell (" /C START C:\Progra~1\LibreOffice\program\swriter.exe --nologo c:\hdbe\HTML_Brief.html",cComCom,.T.)	//-nologo mit einem '-' fr AOO-Schnellstart
		ELSE
		  	RunShell (" /C START C:\hdbe\"+cTextProg+" -nologo c:\hdbe\HTML_Brief.html",cComCom,.T.)	//-nologo mit einem '-' fr AOO-Schnellstart
		ENDIF
	ENDIF
   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.

// ist jetzt in Form_Html_1.prg:
////19.01.2023 12:39 aus der Knowledgebase -- wird hier aber tats„chlich NICHT gebraucht
//// LongFilename2ShortFilename
//FUNCTION Lfn2Sfn(cLfn)
//LOCAL cSfn := space(len(clfn)+1)
//LOCAL nsfn
//    IF Set(_SET_CHARSET) == CHARSET_OEM
//        cLfn := ConvToAnsiCp(cLfn)
//    ENDIF
//    nsfn := DllCall("Kernel32.dll",DLL_STDCALL, "GetShortPathNameA", ;
//                     cLfn, @cSfn, len(cSfn)-1)
//    cSfn := Left(cSfn, nsfn)
//RETURN cSfn

//+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 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
	PRIVATE cFileNEU := cDruckArt+"_"+Trim(1->name)+"_"+StrX(1->auftrnr,6,0)+cExt
	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")

	cFileNEU := cDir + "\" + ConvToAnsiCP(cFileNEU)	// 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(cFileNEU) .AND. ConfirmBox( oCB, ;
		               "Wollen Sie die Datei wirklich l”schen?" + CRLF + ;
		               "Achtung: OK l”scht die Datei "+ConvToOEMCP(cFileNEU) + CRLF + ;
		               "abbrechen mit <Esc>", ;
		               "Datei "+SubStr(ConvToOEMCP(cFileNEU),RAt("\",ConvToOEMCP(cFileNEU))+1)+" existiert!", ;
		               XBPMB_OKCANCEL, ;
		               XBPMB_QUESTION ) == XBPMB_RET_OK
		         // die bisherige cFileNEU-Datei wird gel”scht:
					IF FErase( cFileNEU ) == -1
						msgbox("Die Datei "+cFileNEU+" kann nicht gel”scht werden")
					ENDIF
				ELSEIF FExists(SubStr(cFileNEU,1,RAt(".",cFileNEU)-1) + ".DOC") .AND. ConfirmBox( oCB, ;
		               "Wollen Sie die Datei wirklich l”schen?" + CRLF + ;
		               "Achtung: OK l”scht die Datei "+ConvToOEMCP(cFileNEU) + CRLF + ;
		               "abbrechen mit <Esc>", ;
		               "Datei "+SubStr(ConvToOEMCP(cFileNEU),RAt("\",ConvToOEMCP(cFileNEU))+1)+" existiert als .DOC!", ;
		               XBPMB_OKCANCEL, ;
		               XBPMB_QUESTION ) == XBPMB_RET_OK
		         // die bisherige cFileNEU-Datei wird gel”scht:
					FErase( SubStr(cFileNEU,1,RAt(".",cFileNEU)-1) + ".DOC" )
				ELSE
					msgbox("Die Datei "+SubStr(cFileNEU,RAt("\",cFileNEU)+1)+" existiert nicht!")
				ENDIF
			RETURN .T.
	ENDIF
		
	IF !FExists(cFileNEU) .OR. AppKeyState(65553)==1	// Datei existiert nicht als .odt - oder CTRL gedrckt zum erneuten Suchen
		IF FExists(SubStr(cFileNEU,1,RAt(".",cFileNEU)-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 "+cFileNEU+" :"
	      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 != cFileNEU
	   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+".")
			cFileNEU := SubStr(cFileNEU,1,RAt(".",cFileNEU)-1) + cKarte_Ext
		ENDIF
		// wenn die ausgesuchte Vorlage nicht die Druckdatei cFileNEU ist:
		IF Upper(cKarte) != Upper(cFileNEU)
			// wenn die Druckdatei cFileNEU zu diesem Auftrag schon existiert:
			IF FExists(cFileNEU)
			   IF ConfirmBox( oCB, ;
		               "Wollen Sie die Datei gleichen Namens wirklich berschreiben?" + CRLF + ;
		               "Achtung: OK berschreibt die bisherige Datei "+ConvToOEMCP(cFileNEU) + CRLF + ;
		               "abbrechen mit <Esc>", ;
		               "Datei "+SubStr(ConvToOEMCP(cFileNEU),RAt("\",cFileNEU)+1)+" existiert bereits!", ;
		               XBPMB_OKCANCEL, ;
		               XBPMB_QUESTION ) == XBPMB_RET_OK
		         // die bisherige cFileNEU-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 (cFileNEU)
				ENDIF
			ELSE	// wenn die Druckdatei cFileNEU noch nicht existiert,
				// ... dann wird sie aus der Vorlage erzeugt:
				COPY FILE (cKarte) TO (cFileNEU)
			ENDIF
		ENDIF
	ENDIF

	// wenn cFileNEU eine .odt-Datei ist ... aber nicht existiert:
	IF Upper(SubStr(cFileNEU,RAt(".",cFileNEU))) == ".ODT" .AND. !FExists(cFileNEU)
		// wenn cFileNEU als .doc-Datei existiert, dann als solche verwenden:
		IF FExists(SubStr(cFileNEU,1,RAt(".",cFileNEU)-1) + ".DOC")
			cFileNEU := SubStr(cFileNEU,1,RAt(".",cFileNEU)-1) + ".DOC"
		ELSE	// cFileNEU 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(cFileNEU) + CRLF + ;
		               "abbrechen mit <Esc>", ;
		               "Datei existiert nicht als .odt oder .doc!", ;
		               XBPMB_OKCANCEL, ;
		               XBPMB_QUESTION ) == XBPMB_RET_OK
		         nHandle := FCreate(cFileNEU)		// leere Datei cFileNEU als .odt-Datei erzeugen
		         FClose(nHandle)
		      ENDIF
		ENDIF
	ENDIF
	IF FExists(cFileNEU)
//	   ? RunShell (" /C START c:\hdbe\"+cTextProg+" "+cFileNEU,cComCom,.T.)
//20.04.2023 11:58 statt VorZeile kommt hier : weil sonst LO nicht aufgerufen werden k”nnte
		IF "LO"$Upper(cTextProg)
		  	RunShell (" /C START C:\Progra~1\LibreOffice\program\swriter.exe --nologo &cFileNEU",cComCom,.T.)	//-nologo mit einem '-' fr AOO-Schnellstart
		ELSE
		  	RunShell (" /C START C:\hdbe\"+cTextProg+" -nologo &cFileNEU",cComCom,.T.)	//-nologo mit einem '-' fr AOO-Schnellstart
		ENDIF
	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.
