**BRegieTE.prg - Regie-Zentrum fr Bestattungsverwaltung // Verwaltung der Termine #include "Gra.ch" #include "Xbp.ch" #include "Appevent.ch" #include "Appedit.ch" #include "Appbrow.ch" #include "Font.ch" FUNCTION TerminEingabe( oDlg1 ) LOCAL oDlg, nEvent, mp1, mp2, oSle, oPbSuch, oXbp LOCAL aSizeDesktop := AppDesktop():currentSize() LOCAL nBSb := aSizeDesktop[1] LOCAL nBSh := aSizeDesktop[2] // folgende Zahlen-Werte basieren auf 800x600: LOCAL nH := nBSb/800 // Korrekturfaktor fr tats„chliche Aufl”sung LOCAL nV := nBSh/600, nHV := nH/nV //+07.06.2011 17:28 LOCAL nOldArea := Select() PRIVATE oCB SELECT 9 USE Term INDEX xterm dDatum := 9->datum GO BOTTOM GO TOP // cFont := IIf( nBSb < 700, "8.Arial", "10.Arial" ) oDlg := AKDialog():new( AppDesktop(), oDlg1 ) oDlg:tasklist := .T. oDlg:title := "Eingabe/Žnderung von Terminen" oDlg:maxButton := .F. oDlg:border := XBPDLG_RAISEDBORDERTHIN_FIXED oDlg:create(,, {10,int(30*nV)}, {int(770*nH),int(500*nV)} ) oDlg:drawingArea:setFontCompoundName( cFont ) oDlg:drawingArea:setColorBG( GRA_CLR_YELLOW ) oCB := oDlg:drawingArea oSle := XbpStatic():new( oDlg:drawingArea, , {int(400*nH),int(220*nV)}, {int(90*nH),int(25*nV)}) oSle:caption := "Da~tum:" oSle:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT oSle:create() oSle := XbpSLE():new( oDlg:drawingArea, , {int(500*nH),int(220*nV)}, {int(80*nH),int(25*nV)}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) oSle:bufferLength := 10 oSle:setInputFocus := {|mp1,mp2,obj| HiliteSle( obj ) } oSle:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ), ; oSle:getdata(), ; oSle:setdata() } oSle:group := XBP_WITHIN_GROUP oSle:dataLink := {|x| IIf( PCOUNT()==0, ; IIf( DtoC( dDATUM )=" ", trim(" "), DtoC( dDATUM )), ; IIf( len(x)<7, dDATUM := CtoD(x+str(year(date(),4,0))), ; dDATUM := CtoD(x) ) ) } oSle:create():setData( DtoC(DATE()) ) //05.05.2008 13:41 oPbSuch := XbpPushButton():new( oDlg:drawingArea, , {int(600*nH),int(220*nV)}, {int(40*nH),int(25*nV)} ) oPbSuch:caption := "~Such" oPbSuch:group := XBP_WITHIN_GROUP oPbSuch:create() oPbSuch:activate := {|cD| cD := CtoD(Trim(oSle:editBuffer())), ; DbSeek( str(year(cD))+str(month(cD))+str(day(cD)), .T. ), ; //05.05.2008 13:45 Softseek SetAppFocus( oSle ) } APPBROWSE ; PARENT oDlg:drawingArea ; POSITION TOP ; FONT &cFont ; SIZE 45,100 PERCENT APPFIELD datum CAPTION "Datum" WIDTH 8 APPFIELD tx CAPTION "Text" WIDTH 40 APPFIELD kennz CAPTION "KZ/š" WIDTH 2 APPDISPLAY MODELESS APPEDIT INTO oEdit ; PARENT oDlg:drawingArea ; POSITION BOTTOM ; FONT &cFont ; SEEK TermSuch( Trim(oSle:editBuffer()), oDlg ) ; TRIGGER "TermEinfg" ON INSERT ; TRIGGER "TermAend" ON UPDATE ; TRIGGER "TermEntf" ON DELETE ; SIZE 45,100 PERCENT APPFIELD datum INTO oEdit CAPTION "Datum" WIDTH 8 APPFIELD tx INTO oEdit CAPTION "Text" WIDTH 40 APPFIELD kennz INTO oEdit CAPTION "KZ/š" WIDTH 2 APPDISPLAY oEdit MODELESS oDlg:setModalState( XBP_DISP_APPMODAL ) oDlg:show() oFocus := SetAppFocus( oSle ) DO WHILE nEvent <> xbeP_Close nEvent := AppEvent( @mp1, @mp2, @oXbp ) IF nEvent == xbeP_User nRec := Recno() 9->(DbGoBottom()) 9->(DbGoTop()) 9->(DbGoto(nRec)) ENDIF IF nEvent == xbeM_LbClick DO CASE CASE oXbp == oSle SetAppFocus( oSle ) CASE oXbp:isDerivedFrom( "XbpPushButton" ) .AND. ValType(oXbp:caption) == "N" IF oXbp:caption == 27 oEdit:SAVE() ENDIF ENDCASE ENDIF IF nEvent == xbeP_Keyboard DO CASE CASE mp1 == xbeK_RETURN PostAppEvent( xbeP_Activate,,, oXbp) CASE mp1 == xbeK_ALT_T SetAppFocus( oSle ) CASE mp1 == xbeK_ALT_S PostAppEvent( xbeP_Activate,,, oPbSuch) CASE mp1 == xbeK_ESC PostAppEvent( xbeP_Close) CASE mp1 == xbeK_F10 IF oXbp:isDerivedFrom( "XbpSle" ) .and. oXbp != oSle oEdit:save() SetAppFocus( oDlg ) ENDIF PostAppEvent( xbeP_Close) CASE mp1 == xbeK_F1 ModalDialog( (cDatver+"f1_TE.dbf"), "Bedienungshinweise", oDlg, 680*nH, 460*nV ) CASE mp1 == xbeK_F2 oEdit:goTop() CASE mp1 == xbeK_F3 oEdit:goPrevious() CASE mp1 == xbeK_F4 oEdit:goNext() CASE mp1 == xbeK_F5 oEdit:goBottom() CASE mp1 == xbeK_F6 oEdit:SEEK() CASE mp1 == xbeK_F7 .and. oXbp:isDerivedFrom( "XbpSle" ) oEdit:save() SetAppFocus( oEdit ) CASE mp1 == xbeK_F7 oEdit:edit() CASE mp1 == xbeK_F8 oEdit:insert() CASE mp1 == xbeK_F9 oEdit:DELETE() PostAppEvent( xbeP_User ) ENDCASE ENDIF oXbp:handleEvent( nEvent, mp1, mp2 ) ENDDO oDlg:setModalState( XBP_DISP_MODELESS ) oDlg:destroy() SetAppFocus( oFocus ) GO TOP DbCommit() Select &nOldArea RETURN .T. // ArtSuch wird gebraucht, wegen des Rckgabewertes APPOP_PROCEED !! FUNCTION TermSuch( cDatum, oDlg1 ) DbSeek( cDatum ) RETURN APPOP_PROCEED FUNCTION TermEinfg(aRechPos) RETURN APPOP_PROCEED FUNCTION TermAend(aRechPos) RETURN APPOP_PROCEED FUNCTION TermEntf(aRechPos) IF AScan( aRechPos, {|x| ! Empty(x) } ) == 0 RETURN APPOP_PROCEED ENDIF IF ConfirmBox( oCB, "Soll der Datensatz gel”scht werden?", ; "Datensatz l”schen", ; XBPMB_YESNO, ; XBPMB_QUESTION ) == XBPMB_RET_NO RETURN APPOP_IGNORE ENDIF RETURN APPOP_PROCEED