**BRegieTV.prg - Regie-Zentrum fr Bestattungsverwaltung // Verwaltung der Termine #include "Gra.ch" #include "Xbp.ch" #include "Appevent.ch" #include "Appedit.ch" #include "Appbrow.ch" #include "Font.ch" #include "Dmlb.ch" #include "Common.ch" FUNCTION TerminV( oDlg1, aPos, ASize ) //28.11.2022 15:37 nicht n”tig: , nFontR, cDruck ) LOCAL oDlg, nEvent, mp1, mp2, oXbp, oBrowse LOCAL oCtrl, oFocus := SetAppFocus(), aEditControls := {} LOCAL aPP := { { XBP_PP_FGCLR , GRA_CLR_BLACK } , ; { XBP_PP_BGCLR , GRA_CLR_WHITE } } LOCAL aPPSle := { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } LOCAL aPPTxt := { { XBP_PP_FGCLR , GRA_CLR_BLACK } , ; { XBP_PP_BGCLR , XBPSYSCLR_DIALOGBACKGROUND } } LOCAL nBo := 400*nV //, nBz := 25*nV LOCAL nOldArea := Select() PRIVATE oCB, oTEDA, oEdit aPos := IIf(Empty(aPos),{10,30*nV},aPos) ASize:= IIf(Empty(ASize),{770*nH,500*nV},ASize) /*14.04.2008 19:25 nH, nV ver„ndert wegen Resize */ // IF nV < 1 // wenn die Fensterh”he reduziert wurde aPos := {oDlg1:cargo:currentpos()[1]+4,oDlg1:cargo:currentpos()[2]} //14.04.2008 14:28 unten wie Hauptmaske // aPos := {5*IIf(nH<1,1,nH),30*IIf(nV<1,1,nV)} //06.04.2008 19:20 ASize := {oDlg1:cargo:currentsize()[1],oDlg1:cargo:currentsize()[2]} //14.04.2008 14:22 H”he wie Hauptmaske // ENDIF /**/ ////////////////////////////////////////////////////////////////////////////////// IF Val(cRS) < aZugang[9] // 18.10.2007 15:25 =Bergrath ConfirmBox( oDlg1, "Sie haben dazu NICHT die Berechtigung!", ; IIf(SET(43)==0,ConvToAnsiCP("Terminverwaltung"), ; "Termin-Verwaltung"), ; XBPMB_OK, ; XBPMB_WARNING ) RETURN .F. ENDIF /////////////////////////////////////////////////////////////////////////////////// SELECT 9 IF Upper(AppName())$"MENGX.EXE" cTerm := cNetver + "Term" USE (cTerm) SET INDEX TO (cNetver+"xterm") ELSE USE Term IF Upper(AppName())$"MUELLX.EXE-BLEINX.EXE-VOGELX8.EXE-NOLTEX.EXE-SONNEX.EXE"+cAc //30.05.2007 14:56 01.10.2020 14:28 SET INDEX TO xterm, xaufterm, xnamterm ELSE SET INDEX TO xterm ENDIF ENDIF GO TOP oDlg := AKDialog():new( AppDesktop(), oDlg1:cargo ) oDlg:tasklist := .T. oDlg:title := "Eingabe/Žnderung von Terminen ----- aktueller Auftrag: "+ ; StrX(1->auftrnr,E)+", "+Trim(1->vorname)+" "+Trim(1->name) //02.01.2008 17:30 oDlg:title := IIf(SET(43)==0,ConvToAnsiCP(oDlg:title),oDlg:title) //03.12.2006 18:02 oDlg:maxButton := .F. oDlg:border := XBPDLG_RAISEDBORDERTHIN_FIXED oDlg:create(,, aPos, ASize ) oDlg:drawingArea:setFontCompoundName( nFontR ) SetAppFocus(oDlg) // Fenster muá den Focus haben, damit Parts ihn dann kriegen k”nnen! oDlg:lockUpdate(.T.) // damit der Bildaufbau unsichtbar bleibt // oDlg:drawingArea:setColorBG( GRA_CLR_BROWN ) oDlg:drawingArea:setColorBG( XBPSYSCLR_TRANSPARENT ) oCB := oDlg:drawingArea oTEDA := oDlg:drawingArea oTEDA:cargo := oDlg // jetzt folgt die Erzeugung der Eingabefelder oEdit := TerminFF():new( oTEDA,oDlg, {330*nH,0}, {440*nH,475*nV},,, nBz, "s_term", -100, 299, 9 ) oEdit:CREATE( oTEDA,oDlg, {330*nH,0}, {440*nH,475*nV},,, nBz, "s_term", -100, 299, 9 ) IF !Upper(AppName())$"FLUESX.EXE- " //zur Vorsicht 01.10.2020 13:26: SONNEX.EXE" //20.04.2008 18:06 oEdit:XbpObjekt(,"dDatum"):lbDblClick := ; {| MP1, uNIL, o| clickdate(CtoD(o:editbuffer()),oEdit:BEArea[1]:cargo,@o), ; oEdit:TerminSuch(oTEDA, "datum", oEdit:XbpObjekt( oEdit:singlezeile,"dDatum"))} ENDIF AEval( oEdit:editControls, {|x| oDlg:addEditControl( x ) } ) // AEval( oEdit:appendControls, {|x| oDlg:addAppendControl( x ) } ) // bis hierhin geht die Erzeugung der Eingabefelder oDlg:setModalState( XBP_DISP_APPMODAL ) oCtrl := XbpGetController():new( oDlg ) oCtrl:create() oCtrl:READ( , .F. ) // oFocus := SetAppFocus( oSle0 ) * Shortcuts initialisieren oDlg:InitShortCuts( oDlg ) oDlg:lockUpdate(.F.) oDlg:invalidateRect() IF Upper(AppName())$"MUELLX.EXE-VOGELX8.EXE-NOLTEX.EXE.SONNEX.EXE"+cAc //30.12.2007 19:28 01.10.2020 14:30 // OrdSetFocus(1) oEdit:DatumsGrenze( 1, oEdit:cAuftrag:=StrX(1->auftrnr,E), 2, oEdit:cAuftrag:=StrX(1->auftrnr,E) ) // 30.12.2007 19:28 oEdit:Sortierung(1) ELSE // oEdit:DatumsGrenze( 1, oEdit:VonDat, 2, oEdit:BisDat ) // 29.06.2006 14:53 oEdit:DatumsGrenze( 1, , 2, ) // 29.06.2006 14:53 ENDIF DbGotop() oEdit:BrowseFeld[1]:refreshAll() ////// DbSeek(Str(Year(DATE()),4,0)+Str(Month(DATE()),2,0)+Str(day(DATE()),2,0),.T.) DO WHILE nEvent <> xbeP_Close nEvent := AppEvent( @mp1, @mp2, @oXbp ) IF nEvent == xbeP_Keyboard DO CASE CASE mp1 == xbeK_ESC IF ValType(oVideo) == "O" oVideo:stop() oVideo:cargo:destroy() oVideo := NIL mp1 := 0 LOOP ENDIF PostAppEvent( xbeP_Close) CASE mp1 == xbeK_F4 .AND. oXbp:isderivedfrom("XbpSle") .AND. oXbp:cargo=="datum" 1->(DbSetOrder(1)) oEdit:AutoText(oTEDA) //03.06.2007 18:54 CASE mp1 == xbeK_SH_F4 .AND. oXbp:isderivedfrom("XbpSle") .AND. oXbp:cargo=="datum" 1->(DbSetOrder(2)) oEdit:AutoText(oTEDA) //03.06.2007 18:54 1->(DbSetOrder(1)) CASE mp1 == xbeK_UP mp1 := xbeK_UP // LOOP CASE mp1 == xbeK_F1 ModalDialog( (cDatver+"f1_TE.rtf"), "Bedienungshinweise", oTEDA, 680*nH, 460*nV ) CASE mp1 == xbeK_F10 lEinfg := .F. PostAppEvent( xbeP_Activate,,, oEdit:DruckKnopf[oEdit:XbpNummer(oEdit:DruckKnopf,"ENDE")] ) // PostAppEvent( xbeP_Close,,,oDlg) CASE mp1 == Asc("+") .AND. oXbp:isderivedfrom("XbpSle") .AND. ValType(oXbp:value)=="D" oEdit:DatumSet( @oXbp, +1 ) LOOP CASE mp1 == Asc("-") .AND. oXbp:isderivedfrom("XbpSle") .AND. ValType(oXbp:value)=="D" oEdit:DatumSet( @oXbp, -1 ) LOOP CASE mp1 == Asc("*") .AND. oXbp:isderivedfrom("XbpSle") .AND. ValType(oXbp:value)=="D" oEdit:DatumSet( @oXbp, +7 ) LOOP CASE mp1 == Asc("_") .AND. oXbp:isderivedfrom("XbpSle") .AND. ValType(oXbp:value)=="D" oEdit:DatumSet( @oXbp, -7 ) LOOP CASE mp1 == Asc("#") .AND. oXbp:isderivedfrom("XbpSle") .AND. ValType(oXbp:value)=="D" oEdit:DatumSet( @oXbp, 0 ) LOOP ENDCASE ENDIF oXbp:handleEvent( nEvent, mp1, mp2 ) ENDDO oDlg:setModalState( XBP_DISP_MODELESS ) DbDeRegisterClient(oEdit) oEdit:destroy() oDlg:destroy() ThreadObject():cargo := oDlg1:cargo //+09.02.2010 18:24 wegen MagicHelp SetAppFocus( oFocus ) USE Select &nOldArea RETURN .T. //--------------------------------------------------------------------------------- PROCEDURE TerminEintrag( cAuf, oDlg1, cBO, cBD, cBZ, cMO, cMD, cMZ, ; cU1O, cU1D, cU1Z, cU2O, cU2D, cU2Z, cTo, cTD, cTZ ) // z.Zt.(23.3.03) nur fr Menge!! LOCAL nOldArea := SELECT() (nOldArea)->(DbSuspendNotifications()) SELECT 9 IF Upper(AppName())$"MENGX.EXE" cTerm := cNetver + "Term" // damit Termine aus beiden Arbeitsbereichen zusammenliegen USE (cTerm) SET INDEX TO (cNetver+"xterm"),(cNetver+"xaufterm") ELSE USE term SET INDEX TO xterm, xaufterm ENDIF SET ORDER TO 2 IF !Empty(1->&cTD) FIND &cAuf DO WHILE SubStr(9->TX,1,6) == cAuf IF "Trauerfeier"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,1,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cTD REPLACE 9->tx WITH cAuf + " " + Trim(1->name) + "-" + "Trauerfeier, " + Trim(1->&cTo) + ; ", " + IIf( Empty(1->&cTZ), "Uhrzeit FEHLT !", Str(1->&cTZ,5,2)+" Uhr" ) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cBD) FIND &cAuf DO WHILE SubStr(9->TX,1,6) == cAuf IF "Beerdigung"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,1,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cBD REPLACE 9->tx WITH cAuf + " " + Trim(1->name) + "-" + "Beerdigung, " + Trim(1->&cBO) + ; ", " + IIf( Empty(1->&cBZ), "Uhrzeit FEHLT !", Str(1->&cBZ,5,2)+" Uhr" ) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cMD) FIND &cAuf DO WHILE SubStr(9->TX,1,6) == cAuf IF "Seelenamt"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,1,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cMD REPLACE 9->tx WITH cAuf + " " + Trim(1->name) + "-" + "Seelenamt, " + Trim(1->&cMO) + ; ", " + IIf( Empty(1->&cMZ), "Uhrzeit FEHLT !", Str(1->&cMZ,5,2)+" Uhr" ) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cU1D) FIND &cAuf DO WHILE SubStr(9->TX,1,6) == cAuf IF "Urne1"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,1,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cU1D REPLACE 9->tx WITH cAuf + " " + Trim(1->name) + "-" + "Urne1, " + Trim(1->&cU1O) + ; ", " + IIf( Empty(1->&cU1Z), "Uhrzeit FEHLT !", Str(1->&cU1Z,5,2)+" Uhr" ) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cU2D) .AND. !(cU2D==cU1D) FIND &cAuf DO WHILE SubStr(9->TX,1,6) == cAuf IF "Urne2"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,1,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cU2D REPLACE 9->tx WITH cAuf + " " + Trim(1->name) + "-" + "Urne2, " + Trim(1->&cU2O) + ; ", " + IIf( Empty(1->&cU2Z), "Uhrzeit FEHLT !", Str(1->&cU2Z,5,2)+" Uhr" ) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF USE SELECT &nOldArea (nOldArea)->(DbResumeNotifications()) RETURN //--------------------------------------------------------------------------------- PROCEDURE TerminEintragZ( cAuf, oDlg1, cBO, cBD, cBZ, cMO, cMD, cMZ, ; cU1O, cU1D, cU1Z, cU2O, cU2D, cU2Z, cTo, cTD, cTZ ) // z.Zt.(2.6.03) nur fr Klemmer!! LOCAL nOldArea := SELECT() (nOldArea)->(DbSuspendNotifications()) SELECT 9 IF Upper(AppName())$"MENGX.EXE" cTerm := cNetver + "Term" USE (cTerm) SET INDEX TO (cNetver+"xterm"),(cNetver+"xaufterm") ELSE USE term SET INDEX TO xterm, xaufterm ENDIF SET ORDER TO 2 IF !Empty(1->&cTD) FIND &(Str(1->&cTZ,5,2)+" Uhr, "+cAuf) DO WHILE SubStr(9->TX,12,6) == cAuf IF "Trauerfeier"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cTD REPLACE 9->tx WITH IIf( Empty(1->&cTZ), "??.?? Uhr", Str(1->&cTZ,5,2)+" Uhr" )+", " + ; cAuf + " " + Trim(1->name) + "-" + "Trauerfeier, " + Trim(1->&cTo) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cBD) FIND &(Str(1->&cBZ,5,2)+" Uhr, "+cAuf) DO WHILE SubStr(9->TX,12,6) == cAuf IF "Beerdigung"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cBD REPLACE 9->tx WITH IIf( Empty(1->&cBZ), "??.?? Uhr", Str(1->&cBZ,5,2)+" Uhr" )+", " + ; cAuf + " " + Trim(1->name) + "-" + "Beerdigung, " + Trim(1->&cBO) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cMD) FIND &(Str(1->&cMZ,5,2)+" Uhr, "+cAuf) DO WHILE SubStr(9->TX,12,6) == cAuf IF "Seelenamt"$9->TX .OR. "Kirche"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cMD REPLACE 9->tx WITH IIf( Empty(1->&cMZ), "??.?? Uhr", Str(1->&cMZ,5,2)+" Uhr" )+", " + ; cAuf + " " + Trim(1->name) + "-" + "Kirche, " + Trim(1->&cMO) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cU1D) FIND &(Str(1->&cU1Z,5,2)+" Uhr, "+cAuf) DO WHILE SubStr(9->TX,12,6) == cAuf IF "Urne1"$9->TX .OR. "Urne,"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cU1D REPLACE 9->tx WITH IIf( Empty(1->&cU1Z), "??.?? Uhr", Str(1->&cU1Z,5,2)+" Uhr" )+", " + ; cAuf + " " + Trim(1->name) + "-" + "Urne, " + Trim(1->&cU1O) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cU2D) .AND. !(cU2D==cU1D) FIND &(Str(1->&cU2Z,5,2)+" Uhr, "+cAuf) DO WHILE SubStr(9->TX,12,6) == cAuf IF "Urne2"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cU2D REPLACE 9->tx WITH IIf( Empty(1->&cU2Z), "??.?? Uhr", Str(1->&cU2Z,5,2)+" Uhr" )+", " + ; cAuf + " " + Trim(1->name) + "-" + "Urne-2, " + Trim(1->&cU2O) REPLACE 9->kennz WITH IIf("olumb"$1->&cU1O .OR. "olumb"$1->&cU2O, ; "C", Upper(1->best_art) ) ENDIF USE SELECT &nOldArea (nOldArea)->(DbResumeNotifications()) RETURN //--------------------------------------------------------------------------------- PROCEDURE TerminEintragD( cAuf, oDlg1, cBO, cBD, cBZ, cBT, cMO, cMD, cMZ, cMT, ; cTO, cTD, cTZ, cTT, cUO, cUD, cUZ, cUT ) // z.Zt.(19.4.05) nur fr Dischleid!! LOCAL nOldArea := SELECT() (nOldArea)->(DbSuspendNotifications()) SELECT 9 IF Upper(AppName())$"MENGX.EXE" cTerm := cNetver + "Term" USE (cTerm) SET INDEX TO (cNetver+"xterm"),(cNetver+"xaufterm") ELSE USE term SET INDEX TO xterm, xaufterm ENDIF SET ORDER TO 2 IF !Empty(1->&cBD) FIND &(Str(1->&cBZ,5,2)+" Uhr, "+cAuf) DO WHILE SubStr(9->TX,12,6) == cAuf IF "Beerdigung"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cBD REPLACE 9->tx WITH IIf( Empty(1->&cBZ), "??.?? Uhr", Str(1->&cBZ,5,2)+" Uhr" )+", " + ; cAuf + " " + Trim(1->name) + "-" + cBT+", " + Trim(1->&cBO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cMD) FIND &(Str(1->&cMZ,5,2)+" Uhr, "+cAuf) DO WHILE SubStr(9->TX,12,6) == cAuf IF "Seelenamt"$9->TX .OR. "Kirche"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cMD REPLACE 9->tx WITH IIf( Empty(1->&cMZ), "??.?? Uhr", Str(1->&cMZ,5,2)+" Uhr" )+", " + ; cAuf + " " + Trim(1->name) + "-" + cMT+", " + Trim(1->&cMO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cTD) FIND &(Str(1->&cTZ,5,2)+" Uhr, "+cAuf) DO WHILE SubStr(9->TX,12,6) == cAuf IF cTT$9->TX .OR. cUT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cTD REPLACE 9->tx WITH IIf( Empty(1->&cTZ), "??.?? Uhr", Str(1->&cTZ,5,2)+" Uhr" )+", " + ; cAuf + " " + Trim(1->name) + "-" + cTT+", " + Trim(1->&cTO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cUD) .AND. !(cUD==cTD) FIND &(Str(1->&cUZ,5,2)+" Uhr, "+cAuf) DO WHILE SubStr(9->TX,12,6) == cAuf IF cUT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cUD REPLACE 9->tx WITH IIf( Empty(1->&cUZ), "??.?? Uhr", Str(1->&cUZ,5,2)+" Uhr" )+", " + ; cAuf + " " + Trim(1->name) + "-" + cUT+", " + Trim(1->&cUO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF USE SELECT &nOldArea (nOldArea)->(DbResumeNotifications()) RETURN //--------------------------------------------------------------------------------- //08.01.2008 11:13 zun„chst nur fr MuellX PROCEDURE TerminEintragM( cAuf, oDlg1, cBO, cBD, cBZ, cBT, cMO, cMD, cMZ, cMT, ; cTO, cTD, cTZ, cTT, cUO, cUD, cUZ, cUT, ; cNO, cND, cNZ, cNT, c6O, c6D, c6Z, c6T ) //08.01.2008 10:39 fr MuellX (aus ~D) LOCAL nOldArea := SELECT() (nOldArea)->(DbSuspendNotifications()) SELECT 9 USE term SET INDEX TO xterm, xaufterm, xnamterm SET ORDER TO 2 IF !Empty(1->&cBD) FIND &cAuf DO WHILE SubSet(9->TX,",",",") == cAuf //08.01.2008 12:01 neue Funktion in DbDruSysw() IF cBT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubSet(9->TX,",",",") != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cBD REPLACE 9->tx WITH IIf( Empty(1->&cBZ), "??.?? Uhr", Str(1->&cBZ,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + cBT+", " + Trim(1->&cBO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cMD) FIND &cAuf DO WHILE SubSet(9->TX,",",",") == cAuf //08.01.2008 12:01 neue Funktion in DbDruSysw() IF cMT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubSet(9->TX,",",",") != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cMD REPLACE 9->tx WITH IIf( Empty(1->&cMZ), "??.?? Uhr", Str(1->&cMZ,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + cMT+", " + Trim(1->&cMO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cTD) FIND &cAuf DO WHILE SubSet(9->TX,",",",") == cAuf //08.01.2008 12:01 neue Funktion in DbDruSysw() IF cTT$9->TX //08.01.2008 11:23:?? .OR. cUT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubSet(9->TX,",",",") != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cTD REPLACE 9->tx WITH IIf( Empty(1->&cTZ), "??.?? Uhr", Str(1->&cTZ,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + cTT+", " + Trim(1->&cTO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cUD) //08.01.2008 11:24:?? .AND. !(cUD==cTD) FIND &cAuf DO WHILE SubSet(9->TX,",",",") == cAuf //08.01.2008 12:01 neue Funktion in DbDruSysw() IF cUT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubSet(9->TX,",",",") != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cUD REPLACE 9->tx WITH IIf( Empty(1->&cUZ), "??.?? Uhr", Str(1->&cUZ,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + cUT+", " + Trim(1->&cUO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF cND != NIL .AND. !Empty(1->&cND) //+01.03.2009 12:54 FIND &cAuf DO WHILE SubSet(9->TX,",",",") == cAuf //08.01.2008 12:01 neue Funktion in DbDruSysw() IF cNT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubSet(9->TX,",",",") != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cND REPLACE 9->tx WITH IIf( Empty(1->&cNZ), "??.?? Uhr", Str(1->&cNZ,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + cNT+", " + Trim(1->&cNO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF c6D != NIL .AND. !Empty(1->&c6D) //08.01.2008 11:24:?? .AND. !(cUD==cTD) FIND &cAuf DO WHILE SubSet(9->TX,",",",") == cAuf //08.01.2008 12:01 neue Funktion in DbDruSysw() IF "Sechswochenamt"$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubSet(9->TX,",",",") != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&c6D REPLACE 9->tx WITH IIf( Empty(1->&c6Z), "??.?? Uhr", Str(1->&c6Z,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + "Sechswochenamt"+", " + Trim(1->&c6O) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF USE SELECT &nOldArea (nOldArea)->(DbResumeNotifications()) RETURN //--------------------------------------------------------------------------------- //Aufruf: TerminEintragW(StrX(1->auftrnr,6,0),oBEDA, ; // "&TO1","&TD1","&TZ1","Exequien", ; // "&TO2","&TD2","&TZ2","Trauerfeier mit Sarg", ; // "&TO3","&TD3","&TZ3","Kirchenaufbahrung", ; // "&TO4","&TD4","&TZ4","Beisetzung") PROCEDURE TerminEintragW( cAuf, oDlg1, cBO, cBD, cBZ, cBT, cMO, cMD, cMZ, cMT, ; cTO, cTD, cTZ, cTT, cUO, cUD, cUZ, cUT ) // z.Zt.(26.04.2007) nur fr cAc LOCAL nOldArea := SELECT() (nOldArea)->(DbSuspendNotifications()) SELECT 9 IF Upper(AppName())$"MENGX.EXE" cTerm := cNetver + "Term" USE (cTerm) SET INDEX TO (cNetver+"xterm"),(cNetver+"xaufterm") ELSE USE term IF Upper(AppName())$"VOGELX8.EXE-NOLTEX.EXE-SONNEX.EXE"+cAc //30.05.2007 14:56 SET INDEX TO xterm, xaufterm, xnamterm ELSE SET INDEX TO xterm, xaufterm ENDIF ENDIF SET ORDER TO 2 //31.05.2007 08:16: cBO:={Datum,Uhrzeit,Auftrag,Verst-Name,TerminArt,Termin-Ort,Erg„nzung,So_Montag} IF ValType(cBO) == "A" cAuf := IIf( !Empty(cBO[3]), StrX(cBO[3],E,0), cAuf ) DbSeek(cAuf,.F.) DO WHILE SubStr(9->TX,12,6) == cAuf IF cBO[5]$9->TX // Kriterium: gleiche TerminArt (Trauerfeier, Messe, Beisetzung...) EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK // neuer Termin ELSE Satzsp(oDlg1) // bestehenden Termin derselben Art „ndern ENDIF REPLACE 9->datum WITH IIf(!Empty(cBO[1]).AND.DoW(cBO[1])=1,cBO[1]+1,cBO[1]) // Datum als Datum bergeben! REPLACE 9->tx WITH IIf( Empty(cBO[2]), "??.?? Uhr", Str(cBO[2],5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(cBO[4]) + " ~ " + cBO[5]+", " + Trim(cBO[6]) REPLACE 9->kennz WITH IIf("olumb"$cBO[6], "C", Upper(1->best_art) ) // REPLACE 9->tx2 WITH Trim(9->tx2)+IIf(Empty(9->tx2),"",CRLF)+cBO[7] REPLACE 9->tx2 WITH cBO[7] ELSE IF !Empty(1->&cBD) .AND. IIf(Upper(AppName())$cAc,Upper(1->kirch_auf)$"JSU",.T.) //+09.05.2014 09:56 cAc/VogelX8 // FIND &(Str(1->&cBZ,5,2)+" Uhr, "+cAuf) FIND &cAuf // gibt es diesen Termin bereits? DO WHILE SubStr(9->TX,12,6) == cAuf IF cBT$9->TX // Kriterium: gleiche TerminArt (Trauerfeier, Messe, Beisetzung...) EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK // neuer Termin ELSE Satzsp(oDlg1) // bestehenden Termin derselben Art „ndern ENDIF REPLACE 9->datum WITH 1->&cBD REPLACE 9->tx WITH IIf( Empty(1->&cBZ), "??.?? Uhr", Str(1->&cBZ,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + cBT+", " + Trim(1->&cBO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cMD) // FIND &(Str(1->&cMZ,5,2)+" Uhr, "+cAuf) FIND &cAuf DO WHILE SubStr(9->TX,12,6) == cAuf IF cMT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cMD REPLACE 9->tx WITH IIf( Empty(1->&cMZ), "??.?? Uhr", Str(1->&cMZ,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + cMT+", " + Trim(1->&cMO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cTD) // FIND &(Str(1->&cTZ,5,2)+" Uhr, "+cAuf) FIND &cAuf DO WHILE SubStr(9->TX,12,6) == cAuf IF cTT$9->TX // .OR. cUT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cTD REPLACE 9->tx WITH IIf( Empty(1->&cTZ), "??.?? Uhr", Str(1->&cTZ,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + cTT+", " + Trim(1->&cTO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF IF !Empty(1->&cUD) .AND. !(cUD==cTD) // FIND &(Str(1->&cUZ,5,2)+" Uhr, "+cAuf) FIND &cAuf DO WHILE SubStr(9->TX,12,6) == cAuf IF cUT$9->TX EXIT ENDIF SKIP ENDDO IF 9->(Eof()) .OR. SubStr(9->TX,12,6) != cAuf APPEND BLANK ELSE Satzsp(oDlg1) ENDIF REPLACE 9->datum WITH 1->&cUD REPLACE 9->tx WITH IIf( Empty(1->&cUZ), "??.?? Uhr", Str(1->&cUZ,5,2)+" Uhr" )+", " + ; cAuf + ", " + Trim(1->name) + " ~ " + cUT+", " + Trim(1->&cUO) REPLACE 9->kennz WITH IIf("olumb"$1->&cTO .OR. "olumb"$1->&cUO, ; "C", Upper(1->best_art) ) ENDIF ENDIF USE SELECT &nOldArea (nOldArea)->(DbResumeNotifications()) RETURN //--------------------------------------------------------------------------------- CLASS TerminFF FROM DialogFF EXPORTED: VAR VArea VAR cTx VAR dDatum VAR VonDat // 29.06.2006 VAR BisDat // 29.06.2006 VAR cAuftrag // 03.01.2008 16:35 aktuelle Auftragsnummer VAR cName // 03.01.2008 16:35 aktueller Verstorbenen-Name METHOD INIT METHOD CREATE METHOD notify METHOD TerminSuch METHOD TerminNeu // 29.06.2006 METHOD AutoText //03.06.2007 17:42 erzeugt automatischen Text zu einem neuen Termin METHOD DatumsGrenze METHOD Sortierung //03.01.2008 19:33 METHOD MonAnf // 29.06.2006 METHOD Geburtstage //17.01.2008 09:06 bernimmt die Geburtstage in das folgende Jahr (kennz=) ENDCLASS METHOD TerminFF:INIT( oParent, oOwner, aPos, ASize, aPP, lVisible, nBz, cFF, nAnf, nEnd, nA ) ::DialogFF:INIT( oParent, oOwner, aPos, ASize, aPP, lVisible, nBz, cFF, nAnf, nEnd, nA ) ::Fancy := cTermBM ::VArea := nA ::BEArea := {} AAdd( ::BEArea, oParent ) ::BENr := Len( ::BEArea ) ::cTx := Trim(" ") ::dDatum := DATE() // ::VonDat := Min(CtoD("01.01."+Str(Year(DATE()),4)),::MonAnf(DATE()-30)) //29.06.2006 14:45 // ::BisDat := Max(CtoD("31.12."+Str(Year(DATE()),4)),::MonAnf(DATE()+60)-1) //29.06.2006 14:45 ::VonDat := CtoD(" ") //03.01.2008 16:38 ::BisDat := CtoD(" ") //03.01.2008 16:38 ::cAuftrag := StrX(1->auftrnr,E) //03.01.2008 16:36 Start mit Terminen nur vom aktuellen Auftrag ::cName := "" //03.01.2008 16:36 RETURN self METHOD TerminFF:CREATE( oParent, oOwner, aPos, ASize, aPP, lVisible, nBz, cFF, nAnf, nEnd, nA ) ::DialogFF:CREATE( oParent, oOwner, aPos, ASize, aPP, lVisible, nBz, cFF, nAnf, nEnd, nA ) (nA)->(DbRegisterClient(self)) // reicht es, wenn das Fenster als Ganzes registriert ist?? RETURN self METHOD TerminFF:notify( nEvent, mp1, mp2 ) LOCAL nRec, oFocus, i IF nEvent == xbeDBO_Notify // Notify-Ereignis IF mp1 == DBO_MOVE_DONE // Skip ist beendet IF !SetAppFocus():isDerivedFrom( "XbpBrowse" ) .AND. Len(::BrowseFeld) > 0 (::VArea)->(DbSuspendNotifications()) nRec := (::VArea)->(RecNo()) FOR i := 1 TO Len(::BrowseFeld) ::BrowseFeld[i]:refreshAll() NEXT (::VArea)->(DbGoto( nRec )) (::VArea)->(DbResetNotifications()) ENDIF ENDIF ENDIF RETURN self METHOD TerminFF:TerminSuch( oDlg1, cSuchFeld, oXbp, aPos, ASize ) LOCAL oDlg, nEvent, mp1, mp2, oBrowse //, cArtLei := Trim(" ") LOCAL nOldArea := Select(), oFocus := SetAppFocus() LOCAL lFlucht := .F., nRec := RecNo(), nON, aLupe, nRec2 //04.01.2008 20:45 PRIVATE oCB DEFAULT aPos TO {10,30*nV}, ; ASize TO {330*nH,265*nV} (nOldArea)->(DbSuspendNotifications()) SELECT 9 oDlg := AKDialog():new( AppDesktop(), oDlg1:cargo ) oDlg:tasklist := .T. oDlg:title := "Termine suchen" oDlg:maxButton := .F. oDlg:border := XBPDLG_RAISEDBORDERTHIN_FIXED oDlg:create(,, aPos, ASize ) oDlg:drawingArea:setColorBG( GRA_CLR_DARKCYAN ) oCB := oDlg:drawingArea oCB:cargo := oDlg 9->(DbSuspendNotifications()) IF Upper(cSuchFeld) = "TX" cSuchFeld := oXbp:getData() cSuchFeld := IIf( !Empty(cSuchFeld),Upper(Trim(cSuchFeld))," " ) 9->(DbSetFilter( {|| cSuchFeld$Upper(9->tx + IIf( IsFieldVar("tx2"), 9->tx2, " " )) } )) IIf( !(9)->(Bof()), 9->(DbGotop()), ) ELSEIF Upper(cSuchFeld) = "DATUM" ::dDatum := oDlg1:childFromName( 9->(FieldPos( cSuchFeld )) ):getData() ::dDatum := IIf(!Empty(oXbp:getData()),Eval( oXbp:DataLink, oXbp:getData()),::dDatum) IF (nON := OrdNumber()) != 1 aLupe := DbScope(255) ::Sortierung(1) //04.01.2008 20:41 ::Sortierung(1) //04.01.2008 20:42 warum braucht man das zweimal??? ENDIF IF Upper(AppName())$"SANDERX.EXE" //17.01.2008 12:07 9->(DbSeek( DtoS(::dDatum) , .T. )) ELSE 9->(DbSeek( Str(Year(::dDatum),4,0)+Str(Month(::dDatum),2,0)+Str(day(::dDatum),2,0), .T. )) ENDIF IF nON != 1 //04.01.2008 20:48 nRec2 := RecNo() ::Sortierung(nON) ::Sortierung(nON) IIf(ValType(aLupe)=="A",{DbSetScope(1,aLupe[1]),DbSetScope(2,aLupe[2])},) DbGoto(nRec2) ENDIF // 9->(DbSeek( DtoS(::dDatum), .T. )) // 10.4.2005: das geht so nicht!! ELSE oDlg:destroy() (9)->(DbResetNotifications()) Select &nOldArea (nOldArea)->(DbResetNotifications()) (nOldArea)->(DbSkip(0) ) SetAppFocus( oFocus ) RETURN .F. ENDIF // jetzt folgt die Erzeugung der Eingabefelder oBrowse := TerminFF():new( oCB,oDlg, {330*nH,0}, {440*nH,475*nV},,, 25*nV, "s_term",300,399, 9 ) oBrowse:CREATE( oCB,oDlg, {330*nH,0}, {440*nH,475*nV},,, 25*nV, "s_term",300,399, 9 ) // bis hierhin geht die Erzeugung der Eingabefelder oDlg:setModalState( XBP_DISP_APPMODAL ) oDlg:show() SetAppFocus( oBrowse:BrowseFeld[1] ) nEvent := xbeP_None DO WHILE nEvent <> xbeP_Close nEvent := AppEvent( @mp1, @mp2, @oXbp ) IF nEvent == xbeBRW_ItemSelected PostAppEvent( xbeP_Close) ENDIF IF nEvent == xbeP_Keyboard DO CASE CASE mp1 == xbeK_RETURN .or. mp1 == xbeK_F10 PostAppEvent( xbeP_Close) CASE mp1 == xbeK_ESC lFlucht := .T. PostAppEvent( xbeP_Close) ENDCASE ENDIF oXbp:handleEvent( nEvent, mp1, mp2 ) ENDDO 9->(DbResetNotifications()) oDlg:setModalState( XBP_DISP_MODELESS ) oDlg:destroy() /// 9->(DbClearFilter()) Select &nOldArea (nOldArea)->(DbResetNotifications()) IF lFlucht = .T. (nOldArea)->(DbGoto(nRec)) ENDIF (nOldArea)->(DbSkip(0) ) SetAppFocus( oFocus ) RETURN self METHOD TerminFF:TerminNeu( nScope1, dValue1, nScope2, dValue2 ) //29.06.2006 14:09 LOCAL nRec LOCAL xValue1, xValue2 DEFAULT nScope1 TO 1, dValue1 TO Min(CtoD("01.01."+Str(Year(DATE()),4)),::MonAnf(DATE()-30)), ; nScope2 TO 2, dValue2 TO Max(CtoD("31.12."+Str(Year(DATE()),4)),::MonAnf(DATE()+60)-1) IF Upper(AppName())$"SANDERX.EXE" //17.01.2008 12:07 xValue1 := DtoS( dValue1 ) xValue2 := DtoS( dValue2 ) ELSE xValue1 := Str(Year(dValue1),4,0)+Str(Month(dValue1),2,0)+Str(day(dValue1),2,0) xValue2 := Str(Year(dValue2),4,0)+Str(Month(dValue2),2,0)+Str(day(dValue2),2,0) ENDIF 9->(DbClearScope()) 9->(DbAppend()) 9->datum := DATE() nRec := 9->(RecNo()) 9->(DbSetScope( nScope1, xValue1 )) 9->(DbSetScope( nScope2, xValue2 )) 9->(DbGoto(nRec)) IF Len(::BrowseFeld)>0 ::BrowseFeld[1]:refreshAll() ENDIF RETURN self //METHOD TerminFF:TerminNeu( nScope1, dValue1, nScope2, dValue2 ) //29.06.2006 14:09 // LOCAL nRec := LastRec()+1 //// LOCAL xValue1, xValue2 //// DEFAULT nScope1 TO 1, dValue1 TO Min(CtoD("01.01."+Str(Year(DATE()),4)),::MonAnf(DATE()-30)), ; //// nScope2 TO 2, dValue2 TO Max(CtoD("31.12."+Str(Year(DATE()),4)),::MonAnf(DATE()+60)-1) //// xValue1 := Str(Year(dValue1),4,0)+Str(Month(dValue1),2,0)+Str(day(dValue1),2,0) //// xValue2 := Str(Year(dValue2),4,0)+Str(Month(dValue2),2,0)+Str(day(dValue2),2,0) //// 9->(DbClearScope()) // 9->(DbAppend()) //// nRec := 9->(RecNo()) //// 9->(DbSetScope( nScope1, xValue1 )) //// 9->(DbSetScope( nScope2, xValue2 )) // 9->(DbGoto(nRec)) // 9->datum := DATE() // IF Len(::BrowseFeld)>0 // ::BrowseFeld[1]:refreshAll() // ENDIF //RETURN self METHOD TerminFF:AutoText( oDlg1, cDatei, nAnf, nEnd, nA, nRec, aPos, ASize, aPP, lAT ) LOCAL nOldArea := SELECT() DEFAULT cDatei TO "s_term", nAnf TO 900, nEnd TO 909, nA TO 1, nRec TO (nA)->(RecNo()), ; aPos TO {10,30*nV}, ASize TO {330*nH,255*nV}, aPP TO {} IF Empty(lAT) (nA)->(DbSuspendNotifications()) (::VArea)->(DbSuspendNotifications()) SELECT 1 ::Such( oDlg1, cDatei, nAnf, nEnd, nA, nRec, aPos, ASize, aPP ) SELECT (nOldArea) (::VArea)->(DbResumeNotifications()) (nA)->(DbResumeNotifications()) 1->(DbSkip(0)) ELSE (::VArea)->(DbSuspendNotifications()) nRec := LastRec()+1 (::VArea)->(DbAppend()) (::VArea)->datum := DATE() IF Upper(AppName())$"NOLTEX.EXE" (::VArea)->tx := "??.?? Uhr, "+StrX(1->auftrnr,E,0)+", "+Trim(1->name)+" ~ " ELSE (::VArea)->tx := "??.?? Uhr, "+StrX(1->auftrnr,E,0)+", "+Trim(1->name)+"-" ENDIF (::VArea)->kennz := Trim(1->best_art) (::VArea)->(DbGoto(nRec)) (::VArea)->(DbResumeNotifications()) oFocSle := ::XbpObjekt(,"tx") ENDIF IF Upper(AppName())$"NOLTEX.EXE" ::XbpObjektSet(,"tx","??.?? Uhr, "+StrX(1->auftrnr,E,0)+", "+Trim(1->name)+" ~ ") ELSE ::XbpObjektSet(,"tx","??.?? Uhr, "+StrX(1->auftrnr,E,0)+", "+Trim(1->name)+"-") ENDIF ::XbpObjektGet(,"tx") ::XbpObjektSet(,"kennz",Trim(1->best_art)) ::XbpObjektGet(,"kennz") IF Len(::BrowseFeld)>0 ::BrowseFeld[1]:refreshAll() ENDIF (::VArea)->(DbSkip(0)) RETURN self METHOD TerminFF:DatumsGrenze( nScope1, dValue1, nScope2, dValue2 ) LOCAL xValue1, xValue2 DEFAULT nScope1 TO 1, dValue1 TO CtoD("01.01."+Str(Year(DATE()),4)), ; nScope2 TO 2, dValue2 TO CtoD("31.12."+Str(Year(DATE()),4)) 9->(DbClearFilter()) 9->(DbClearScope()) IF OrdNumber() == 1 IF ValType(dValue1) == "D" IF Upper(AppName())$"SANDERX.EXE" //17.01.2008 12:07 xValue1 := IIf(DtoC(dValue1)=" ", " ", DtoS(dValue1) ) xValue2 := IIf(DtoC(dValue2)=" ", " ", DtoS(dValue2) ) ELSE xValue1 := IIf(DtoC(dValue1)=" ", " ", ; Str(Year(dValue1),4,0)+Str(Month(dValue1),2,0)+Str(day(dValue1),2,0)) xValue2 := IIf(DtoC(dValue2)=" ", " ", ; Str(Year(dValue2),4,0)+Str(Month(dValue2),2,0)+Str(day(dValue2),2,0)) ENDIF ::cAuftrag := "" ::cName := "" DbSetScope( nScope1, xValue1 ) DbSetScope( nScope2, xValue2 ) DbGotop() ELSEIF Val(dValue1) > 0 xValue1 := dValue1 // = StrX(1->auftrnr,E) xValue2 := dValue2 // = StrX(1->auftrnr,E) ::VonDat := CtoD(" ") ::BisDat := CtoD(" ") ::cName := "" 9->(DbSetFilter( {|| PadR(xValue1,E) == SubStr(TX,At(",",TX)+2,E) } ) ) DbGotop() ELSEIF Len(Trim(dValue1)) > 0 xValue1 := Trim(PadR(dValue1,10)) // = 1->name xValue2 := Trim(PadR(dValue2,10)) // = 1->name ::VonDat := CtoD(" ") ::BisDat := CtoD(" ") ::cAuftrag := "" 9->(DbSetFilter( {|| xValue1 = SubStr(TX,At(",",TX,At(",",TX)+1)+2,Len(xValue1)) } ) ) DbGotop() ENDIF ELSEIF OrdNumber() == 2 //30.12.2007 22:03 IF ValType(dValue1) == "D" xValue1 := dValue1 //Str(Year(dValue1),4,0)+Str(Month(dValue1),2,0)+Str(day(dValue1),2,0) xValue2 := dValue2 //Str(Year(dValue2),4,0)+Str(Month(dValue2),2,0)+Str(day(dValue2),2,0) ::cAuftrag := "" ::cName := "" 9->(DbSetFilter( {|| xValue1 <= 9->datum .AND. xValue2 >= 9->datum } ) ) DbGotop() ELSEIF Val(dValue1) > 0 xValue1 := dValue1 // = StrX(1->auftrnr,E) xValue2 := dValue2 // = StrX(1->auftrnr,E) ::VonDat := CtoD(" ") ::BisDat := CtoD(" ") ::cName := "" DbSetScope( nScope1, xValue1 ) DbSetScope( nScope2, xValue2 ) DbGotop() ELSEIF Len(Trim(dValue1)) > 0 xValue1 := Trim(PadR(dValue1,10)) // = 1->name xValue2 := Trim(PadR(dValue2,10)) // = 1->name ::VonDat := CtoD(" ") ::BisDat := CtoD(" ") ::cAuftrag := "" 9->(DbSetFilter( {|| xValue1 = SubStr(TX,At(",",TX,At(",",TX)+1)+2,Len(xValue1)) } ) ) DbGotop() ENDIF ELSEIF OrdNumber() == 3 //30.12.2007 22:03 IF ValType(dValue1) == "D" xValue1 := dValue1 //Str(Year(dValue1),4,0)+Str(Month(dValue1),2,0)+Str(day(dValue1),2,0) xValue2 := dValue2 //Str(Year(dValue2),4,0)+Str(Month(dValue2),2,0)+Str(day(dValue2),2,0) ::cAuftrag := "" ::cName := "" 9->(DbSetFilter( {|| xValue1 <= 9->datum .AND. xValue2 >= 9->datum } ) ) DbGotop() ELSEIF Val(dValue1) > 0 xValue1 := dValue1 // = StrX(1->auftrnr,E) xValue2 := dValue2 // = StrX(1->auftrnr,E) ::VonDat := CtoD(" ") ::BisDat := CtoD(" ") ::cName := "" 9->(DbSetFilter( {|| PadR(xValue1,E) == SubStr(TX,At(",",TX)+2,E) } ) ) DbGotop() ELSEIF Len(Trim(dValue1)) > 0 xValue1 := Trim(PadR(dValue1,10)) // = 1->name xValue2 := Trim(PadR(dValue2,10)) // = 1->name ::VonDat := CtoD(" ") ::BisDat := CtoD(" ") ::cAuftrag := "" DbSetScope( nScope1, xValue1 ) DbSetScope( nScope2, xValue2 ) DbGotop() ENDIF ENDIF // DbSuspendNotifications() // DbSetScope( nScope1, xValue1 ) // DbSetScope( nScope2, xValue2 ) // DbGotop() // DbResumeNotifications() IF Len(::BrowseFeld)>0 ::BrowseFeld[1]:refreshAll() ENDIF DbSkip(0) RETURN self METHOD TerminFF:Sortierung( nIndex ) // 03.01.2008 20:00 Sortierung ist der Index LOCAL nRec := RecNo() 9->(DbClearFilter()) 9->(DbClearScope()) 9->(OrdSetFocus(nIndex)) // hebt gleichzeitig den Scope auf !? DbSkip(0) IF Len(Trim(::cName))>0 // wenn nur Termine von diesem Namen angezeigt werden 9->(DbSetFilter( {|| PadR(::cName,10) == SubStr(TX,At(",",TX,At(",",TX)+1)+2,10) } ) ) ELSEIF Val(::cAuftrag)>0 // wenn nur Termine von diesem Auftrag angezeigt werden 9->(DbSetFilter( {|| PadR(::cAuftrag,E) == SubStr(TX,At(",",TX)+2,E) } ) ) ELSEIF DtoC(::VonDat) != " " // wenn nur Termine in diesem Zeitraum angezeigt werden 9->(DbSetFilter( {|| ::VonDat <= 9->datum .AND. ::BisDat >= 9->datum } ) ) ELSE //s.o. 9->(DbClearFilter()) ENDIF IF Len(::BrowseFeld)>0 ::BrowseFeld[1]:refreshAll() ENDIF 9->(DbGotop()) 9->(DbGoto(nRec)) DO CASE CASE nIndex == 1 ::XbpObjekt(::DruckKnopf,"Datum"):setParent():SetColorBG(GRA_CLR_RED) ::XbpObjekt(::DruckKnopf,"Auftrag"):setParent():SetColorBG(GRA_CLR_BACKGROUND) ::XbpObjekt(::DruckKnopf,"Name"):setParent():SetColorBG(GRA_CLR_BACKGROUND) CASE nIndex == 2 ::XbpObjekt(::DruckKnopf,"Datum"):setParent():SetColorBG(GRA_CLR_BACKGROUND) ::XbpObjekt(::DruckKnopf,"Auftrag"):setParent():SetColorBG(GRA_CLR_RED) ::XbpObjekt(::DruckKnopf,"Name"):setParent():SetColorBG(GRA_CLR_BACKGROUND) CASE nIndex == 3 ::XbpObjekt(::DruckKnopf,"Datum"):setParent():SetColorBG(GRA_CLR_BACKGROUND) ::XbpObjekt(::DruckKnopf,"Auftrag"):setParent():SetColorBG(GRA_CLR_BACKGROUND) ::XbpObjekt(::DruckKnopf,"Name"):setParent():SetColorBG(GRA_CLR_RED) ENDCASE RETURN self METHOD TerminFF:MonAnf( dDatum ) DO WHILE Day(dDatum)>1 --dDatum ENDDO RETURN dDatum // šbertragen der j„hrlichen Termine (z.B. Geburtstage) aus dem Vorjahr/ins n„chste Jahr: METHOD TerminFF:Geburtstage(nJahr1,nJahr2) //17.01.2008 12:08 LOCAL nRec := RecNo(), nRecI, aData := Array(FCount()), n, nI := OrdNumber(), dGebDat DEFAULT nJahr1 TO Year(DATE())-1 , nJahr2 TO Year(DATE()) // šbernahme aus dem Vorjahr ::Datumsgrenze( 1, ::VonDat:=CtoD(" "), 2, ::BisDat:=CtoD("01.01.2030") ) DbSuspendNotifications() DbSetOrder( 1 ) DbSetScope( SCOPE_TOP, Str(nJahr1,4)+"0101" ) DbSetScope( SCOPE_BOTTOM, Str(nJahr2,4)+"1231" ) DbGotop() // alle Termine des Jahres1 durchgehen DO WHILE Year(9->datum) == nJahr1 .AND. !Eof() IF 9->kennz != "" DbSkip() LOOP ENDIF FOR n := 1 to FCount() aData[n] := FieldGet( n ) NEXT // den Record der Quelle im Jahr 1 sichern: nRecI := RecNo() cGebDat := Str(nJahr2,4,0)+SubStr(DtoS(aData[1]),5) // den Geburtstag im Jahr2 suchen: DbSeek(cGebDat,.F.) // gibt es diesen Eintrag schon? DO WHILE DtoS(9->datum) == cGebDat IF 9->kennz != "" .OR. Trim(9->tx) != Trim(aData[2]) DbSkip() LOOP ELSEIF 9->kennz == "" .OR. Trim(9->tx) == Trim(aData[2]) EXIT ENDIF DbSkip() ENDDO // wenn Eintrag noch nicht existiert: neu anh„ngen IF 9->kennz != "" .OR. Trim(9->tx) != Trim(aData[2]) 9->(DbAppend()) aData[1] := StoD(cGebDat) FOR n := 1 to FCount() FieldPut( n, aData[n] ) NEXT ENDIF // wieder zurck zur Quelle im Jahr1: DbGoto(nRecI) DbSkip() ENDDO DbClearScope() DbGoto( nRec ) DbSetOrder( nI ) DbResumeNotifications() RETURN FUNCTION Rauf(oB) SetAppFocus(oB) PostAppEvent( xbeP_Keyboard, xbeK_UP,, oB ) RETURN .T. FUNCTION Runter(oB) PostAppEvent( xbeP_Keyboard, xbeK_UP,, oB ) RETURN .T.