// BLATTDR_.prg - fllt ein Formular aus #include "Gra.ch" #include "Xbp.ch" #include "Appevent.ch" #include "Appedit.ch" #include "Appbrow.ch" #include "Font.ch" ** FUNCTION BlattDR_( cDatei, cTitle, oDlg, nXsize, nYsize, cLPTSCR, cCP, nAnz, nt ) PRIVATE nOldArea := Select(), aSchrift := {}, aBlatt := {}, aBlattZ := {} PRIVATE cSeite, cNa, cPrompt, cText, nTFont, cBereich, cFeld, nFFont, nZei, nSpa PRIVATE aSeite := {}, aNa := {}, aPrompt := {}, aText := {}, aTFont := {} PRIVATE aBereich := {}, aFeld := {}, aFFont := {}, aZei := {}, aSpa := {} PRIVATE cB, cF, aRep := {} PRIVATE nMSum := nGS := nS1 := nS2 := nS3 := nS4 := nS5 := 0, nF := xFaktor PRIVATE nGSV := nGSA := nGSN := nGRSA := nGRS := nSv := 0 PRIVATE nMSumh := nGSh := nS1h := nS2h := nS3h := nS4h := nS5h := 0, nF := xFaktor PRIVATE nGSVh := nGSAh := nGSNh := nGRSAh := nGRSh := nSvh := 0 FOR i := 11 TO 30 &("i"+Str(i,2,0)) := "0" NEXT PRIVATE nISum := 0, cISum := "0" //PRIVATE i1:=1,i2:=2,i3:=3,i4:=4,i5:=5,i6:=6,i7:=7,i8:=8,i9:=9,i10:=10 //PRIVATE i11:=11,i12:=12,i13:=13,i14:=14,i15:=15,i16:=16,i17:=17,i18:=18,i19:=19 //PRIVATE i21:=21,i22:=22,i23:=23,i24:=24,i25:=25,i26:=26,i27:=27,i28:=28,i29:=29 //PRIVATE i31:=31,i32:=32,i33:=33,i34:=34,i35:=35,i36:=36,i37:=37,i38:=38,i39:=39 //PRIVATE i20:=20,i30:=30 PRIVATE cNt := "0", cAnz := "1" , cMwstjn := "n" , cHgwjn := "n", cZweiseitjn := "n" PRIVATE cFremd := "In Ihrem Namen und fr Ihre Rechnung vorgelegt:", lFremd := .F. PRIVATE cZwi := "Im Rechnungsbetrag ist die gesetzliche Mehrwertsteuer" PRIVATE cHgw := "(Dieser Betrag entspricht", cKlzu := ".)" PRIVATE cAuf := Str( (1->auftrnr),6,0 ) SELECT 20 USE Drubef IF Upper( cDrucker ) = "HP" AAdd( aSchrift, Trim( 20->hpnorm ) ) Aadd( aSchrift, Trim( 20->hp12p ) ) Aadd( aSchrift, Trim( 20->hp14p ) ) Aadd( aSchrift, Trim( 20->hpres1 ) ) Aadd( aSchrift, Trim( 20->hpres2 ) ) Aadd( aSchrift, Trim( 20->hpres3 ) ) Aadd( aSchrift, Trim( 20->hpres4 ) ) nPoffY := Val( Substr( 20->hpres5, 1, 3 ) ) nPoffX := Val( Substr( 20->hpres5, 4, 3 ) ) nPpZ := Val( Substr( 20->hpres5, 7, 3 ) ) nPpS := Val( Substr( 20->hpres5, 10, 3 ) ) ELSE Aadd( aSchrift, Trim( 20->epnorm ) ) Aadd( aSchrift, Trim( 20->ep12p ) ) Aadd( aSchrift, Trim( 20->ep14p ) ) Aadd( aSchrift, Trim( 20->epres1 ) ) Aadd( aSchrift, Trim( 20->epres2 ) ) Aadd( aSchrift, Trim( 20->epres3 ) ) Aadd( aSchrift, Trim( 20->epres4 ) ) nPoffY := Val( Substr( 20->epres5, 1, 3 ) ) nPoffX := Val( Substr( 20->epres5, 4, 3 ) ) nPpZ := Val( Substr( 20->epres5, 7, 3 ) ) nPpS := Val( Substr( 20->epres5, 10, 3 ) ) ENDIF USE cDRnorm := aSchrift[1] IF Alias(1) = "BEST" Verwum( 1->ansp_bez ) ENDIF IF File( cDatei+"p.dbf" ) USE &(cDatei+"p") DO WHILE .NOT. Eof() cSeite := Trim( 20->seite ) // s=Rckseite, b=neues Blatt, n=neue Bildmaske cNa := Trim( 20->na ) // t=Text „nderbar, f=Feldinhalt „nderbar cPrompt := Trim( 20->prompt ) // Bildschirm: Text fr Eingabe cText := IIf( 20->Text="&", &(Trim( Substr( 20->text, 2, 69 ) ) ), Trim( 20->text ) ) nTFont := 20->tfont // Schriftart 1...7 cBereich := 20->bereich // Area des Feld-Files cFeld := Trim( 20->feld ) // Feldbezeichnung nFFont := 20->ffont // Schriftart 1...7 nZei := 20->zeile // 0..80 = Zeilen, >80 = Pixel nSpa := 20->spalte // Angabe in Spalten/Pixel je nach nZei AAdd( aBlatt, { cSeite, cNa, cPrompt, cText, nTFont, ; cBereich, cFeld, nFFont, nZei, nSpa }, RecNo() ) SKIP ENDDO ************************************************************************ aBlatt := BSEingabe( aBlatt, oDlg ) IF Empty( aBlatt ) USE SELECT &nOldArea RETURN NIL ENDIF ************************************************************************ FOR i := 1 to Len( aBlatt ) aBlattZ := aBlatt[i] // AAdd( aSeite, aBlattZ[1] ) // AAdd( aNa, aBlattZ[2] ) // AAdd( aPrompt, aBlattZ[3] ) AAdd( aText, aBlattZ[4] ) // AAdd( aTFont, aBlattZ[5] ) // AAdd( aBereich, aBlattZ[6] ) AAdd( aFeld, aBlattZ[7] ) // Feldbezeichnung // AAdd( aFFont, aBlattZ[8] ) // AAdd( aZei, aBlattZ[9] ) // AAdd( aSpa, aBlattZ[10] ) cText := aBlattZ[4] cFeld := aBlattZ[7] IF !Empty( cFeld ) &cFeld := Trim( cText ) ENDIF NEXT //cAnz := Trim( aText[1] ) //cZweiseitjn := Trim( aText[2] ) //cMwstjn := Trim( aText[3] ) //cHgwjn := Trim( aText[4] ) ASize( aBlatt,0 ) ENDIF nt := Val( cNt ) nAnz := Val( cAnz ) USE &cDatei DO WHILE .NOT. Eof() cSeite := Trim( 20->seite ) // s=Rckseite, b=neues Blatt, n=neue Bildmaske cNa := Trim( 20->na ) // t=Text „nderbar, f=Feldinhalt „nderbar cPrompt := Trim( 20->prompt ) // Bildschirm: Text fr Eingabe cText := Trim( 20->text ) nTFont := 20->tfont // Schriftart 1...7 cBereich := 20->bereich // Area des Feld-Files cFeld := Trim( 20->feld ) // Feldbezeichnung nFFont := 20->ffont // Schriftart 1...7 nZei := 20->zeile // 0..80 = Zeilen, >80 = Pixel nSpa := 20->spalte // Angabe in Spalten/Pixel je nach nZei IF Upper( cMwstjn ) == "N" .and. Upper( cNa ) == "M" SKIP LOOP ENDIF IF Upper( cHgwjn ) == "N" .and. Upper( cNa ) == "H" SKIP LOOP ENDIF AAdd( aBlatt, { cSeite, cNa, cPrompt, cText, nTFont, ; cBereich, cFeld, nFFont, nZei, nSpa }, RecNo() ) SKIP ENDDO ************************************************************************ aBlatt := BSEingabe( aBlatt, oDlg ) IF Empty( aBlatt ) USE SELECT &nOldArea RETURN NIL ENDIF ************************************************************************ FOR i := 11 TO 30 nISum := nISum + Val( &("i"+Str(i,2,0)) ) NEXT cISum := Str( nISum,8,2 ) SET DEVICE TO PRINTW IF cLPTSCR = "S" SET PRINTER TO blattdr.txt FOR i := 1 to Len( aBlatt ) aBlattZ := aBlatt[i] cSeite := aBlattZ[1] cNa := aBlattZ[2] cPrompt := aBlattZ[3] cText := IIf( cCP="A", ConvToAnsiCP( aBlattZ[4] ), aBlattZ[4] ) nTFont := aBlattZ[5] cBereich := aBlattZ[6] cFeld := IIf( cCP="A" .AND. ValType( aBlattZ[7] ) = "C", ; ConvToAnsiCP( aBlattZ[7] ), aBlattZ[7] ) // Feldinhalt nFFont := aBlattZ[8] nZei := aBlattZ[9] nSpa := IIf( aBlattZ[10]<0, PCol(), aBlattZ[10] ) IF cFeld <> NIL DO CASE CASE Valtype( cFeld ) == "C" @ nZei,nSpa SAY cText+" "+cFeld CASE Valtype( cFeld ) == "N" @ nZei,nSpa SAY cText+" "+Str( cFeld ) CASE Valtype( cFeld ) == "D" @ nZei,nSpa SAY cText+" "+DtoC( cFeld ) ENDCASE ELSE @ nZei,nSpa SAY cText ENDIF NEXT ELSE SET PRINTW ON SET PRINTER TO &cLPT DO WHILE --nAnz >= 0 SetPrc( 0, 0 ) FOR i := 1 to Len( aBlatt ) aBlattZ := aBlatt[i] cSeite := aBlattZ[1] cNa := aBlattZ[2] cPrompt := aBlattZ[3] cText := IIf( cCP="A", ConvToAnsiCP( aBlattZ[4] ), aBlattZ[4] ) nTFont := aBlattZ[5] cBereich := aBlattZ[6] cFeld := IIf( cCP="A" .AND. ValType( aBlattZ[7] ) = "C", ; ConvToAnsiCP( aBlattZ[7] ), aBlattZ[7] ) // Feldinhalt nFFont := aBlattZ[8] nZei := IIf( aBlattZ[9]<1, PRow()-aBlattZ[9], aBlattZ[9] ) // PRow() korrigiert "blinde" Zeilen nSpaalt := PCol() nSpa := IIf( aBlattZ[10]<1, PCol()-aBlattZ[10], aBlattZ[10] ) // PCol() -"- IF Upper( cSeite ) = "S" eject DO WHILE ConfirmBox( oCB, "fertig?", ; "Formular umdrehen!", ; XBPMB_YESNO, ; XBPMB_QUESTION ) == XBPMB_RET_NO ENDDO ELSEIF Upper( cSeite ) = "B" eject ELSEIF Upper( cSeite ) == "R" .OR. Upper( cSeite ) == "V" AAdd( aRep, aBlattZ ) ENDIF IF cSeite = "R" .OR. cSeite = "V" nZwiSumme := Repdruck1( aRep, cNa, AllTrim(cBereich), cCP, nt, cSeite ) &("nS"+cNa) := nZwiSumme ASize( aRep, 0 ) ELSEIF Upper( cSeite ) <> "R" .AND. Upper( cSeite ) <> "V" IF cSeite<>"2" .OR. (cSeite="2" .AND. cZweiSeitjn="2") IF Upper( cNa ) = "Z" EJECT LOOP ENDIF IF Upper( AppName() ) = "NOLTEX.EXE" nGS := nS1+nS2+nS3+nS4 ELSE nGS := nS1+nS2+nS3+nS4+nS5 ENDIF nGSA := nS1+nS2-nS3 nGRS := 1->&r_b_0 + 1->&r_b_1 + 1->&r_b_2 + 1->&r_b_3 nGRSA := nGRS-nS3 nGRSV := nGRS-nSv IF Upper( AppName() ) = "NOLTEX.EXE" nGSN := 1->&r_b_1 + 1->&r_b_n + nS2 - nSv ENDIF IF xdmeu == "D" nGSh := nGS/xFaktor nGSAh:= nGSA/xFaktor nGRSh := nGRS/xFaktor nGRSAh:= nGRSA/xFaktor nGRSVh:= nGRSV/xFaktor IF Upper( AppName() ) = "NOLTEX.EXE" nGSNh := nGSN/xFaktor ENDIF nS1h := nS1/xFaktor nS2h := nS2/xFaktor nS3h := nS3/xFaktor ELSE nGSh := nGS*xFaktor nGSAh:= nGSA*xFaktor nGRSh := nGRS*xFaktor nGRSAh:= nGRSA*xFaktor nGRSVh:= nGRSV*xFaktor IF Upper( AppName() ) = "NOLTEX.EXE" nGSNh := nGSN*xFaktor ENDIF nS1h := nS1*xFaktor nS2h := nS2*xFaktor nS3h := nS3*xFaktor ENDIF // nGSh := IIf( xdmeu=="D", nGS/xFaktor, nGS*xFaktor ) // ZS_( nZei, nSpa ) IF cFeld <> NIL IF Upper( AppName() ) = "DOENNEX.EXE" cFeld := IIf( Valtype( cFeld ) == "C", ; IIf( cFeld="&", ; IIf( Valtype( &(substr( cFeld,2,len(cFeld)-1 )))=="N", ; Transform( &(substr( cFeld,2,len(cFeld)-1 )), cPicture ), ; &(substr( cFeld,2,len(cFeld)-1 )) ), ; cFeld ), cFeld ) ELSE cFeld := IIf( Valtype( cFeld ) == "C", ; IIf( cFeld="&", ; IIf( Valtype( &(substr( cFeld,2,len(cFeld)-1 )))=="N", ; Str( &(substr( cFeld,2,len(cFeld)-1 )),8,2 ), ; &(substr( cFeld,2,len(cFeld)-1 )) ), ; cFeld ), cFeld ) ENDIF DO CASE CASE Valtype( cFeld ) == "C" ZS_( nZei, nSpa ) IIf( Len(Trim(cText))>0 .AND. cText <> "&" .AND. nTFont>0, ; FDr_( Trim( cText ), aSchrift[nTFont] ), ) IIf( nFFont>0, FDr_( Trim( cFeld ), aSchrift[nFFont] ), ) CASE Valtype( cFeld ) == "N" ZS_( nZei, nSpa ) IIf( Len(Trim(cText))>0 .AND. cText <> "&" .AND. nTFont>0, ; FDr_( Trim( cText ), aSchrift[nTFont] ), ) IF Upper( AppName() ) = "DOENNEX.EXE" IIf( nFFont>0, FDr_( Trim( Transform( cFeld, cPicture ) ), aSchrift[nFFont] ), ) ELSE IIf( nFFont>0, FDr_( Trim( Str( cFeld ) ), aSchrift[nFFont] ), ) ENDIF CASE Valtype( cFeld ) == "D" ZS_( nZei, nSpa ) IIf( Len(Trim(cText))>0 .AND. cText <> "&" .AND. nTFont>0, ; FDr_( Trim( cText ), aSchrift[nTFont] ), ) IIf( nFFont>0, FDr_( Trim( DtoC( cFeld ) ), aSchrift[nFFont] ), ) ENDCASE ELSE ZS_( nZei, nSpa ) IIf( nTFont>0, FDr_( Trim( cText ), aSchrift[nTFont] ), ) ENDIF ENDIF ENDIF NEXT EJECT ENDDO ENDIF SET PRINTER TO &cLPT SET DEVICE TO SCREEN USE SELECT &nOldArea RETURN nGS FUNCTION ZS_( nZei, nSpa ) IF Upper( cDrucker ) = "HP" IF nZei<80 QQOut( Chr(27)+"*p"+LTrim(Str(nPoffY+Int(nZei*nPpZ),4,0))+"Y" ; + Chr(27)+"*p"+LTrim(Str(nPoffX+Int(nSpa*nPpS),4,0))+"X" ) SetPrc( nZei, nSpa ) ELSE QQOut( Chr(27)+"*p"+LTrim(Str(nPoffY+nZei,4,0))+"Y" ; + Chr(27)+"*p"+LTrim(Str(nPoffX+nSpa,4,0))+"X" ) SetPrc( Int(nZei/nPpZ), Int(nSpa/nPpS ) ) ENDIF ELSE @ nZei,nSpa SAY "" // @ nZei,(nSpa-1) SAY "" ENDIF RETURN .T. FUNCTION Fdr_( cFeldText, cSchrift ) LOCAL nRow := PRow() , nCol := PCol() IF !Empty( cSchrift ) QQOut( Chr(27)+cSchrift ) ENDIF SetPrc( nRow, nCol ) QQOut( Trim( cFeldText ) ) nRow := PRow() ; nCol := PCol() QQOut( Chr(27)+cDRnorm ) RETURN SetPrc( nRow, nCol ) FUNCTION Kurzlang( cFeld ) DO CASE CASE cFeld = "le" cFeld := "ledig" CASE cFeld = "vh" cFeld := "verheiratet" CASE cFeld = "vw" .OR. cFeld = "Ww" cFeld := "verwitwet" CASE cFeld = "ge" cFeld := "geschieden" CASE cFeld = "ev" cFeld := "evangelisch" CASE cFeld = "r.k" cFeld := "r”misch katholisch" ENDCASE RETURN cFeld FUNCTION BSEingabe( aBlatt, oDlg1 ) LOCAL oDlg, nEvent, mp1, mp2 LOCAL aSizeDesktop := AppDesktop():currentSize() LOCAL nBSb := aSizeDesktop[1] LOCAL nBSh := aSizeDesktop[2] // folgende Zahlen-Werte basieren auf 800x600: LOCAL nV := nBSb/800 // Korrekturfaktor fr tats„chliche Aufl”sung LOCAL nOldArea := Select() LOCAL aEditcontrols := {} // LOCAL oFocus := SetAppFocus() LOCAL aSeite := {}, aNa := {}, aPrompt := {}, aText := {}, aTFont := {} LOCAL aBereich := {}, aFeld := {}, aFFont := {}, aZei := {}, aSpa := {} LOCAL n200 := 200 // IIf( Len(aBlatt)<16, 400, 200 ) PRIVATE oWin := oDlg1 oDlg := AKDialog():new( AppDeskTop(), oDlg1 ) oDlg:tasklist := .T. oDlg:title := "Felder korrigieren/eingeben" oDlg:maxButton := .F. oDlg:clipSiblings := .T. oDlg:border := XBPDLG_RAISEDBORDERTHIN_FIXED oDlg:create(,, {10,10}, {int(740*nV),int(460*nV)} ) oDlg:drawingArea:setColorBG( GRA_CLR_DARKGREEN ) oCB := oDlg:drawingArea oCB:clipSiblings := .T. nBo := int(430*nV) nBr := 0 j := 0 FOR i := 1 to Len( aBlatt ) aBlattZ := aBlatt[i] AAdd( aSeite, aBlattZ[1] ) AAdd( aNa, aBlattZ[2] ) AAdd( aPrompt, aBlattZ[3] ) AAdd( aText, aBlattZ[4] ) AAdd( aTFont, aBlattZ[5] ) AAdd( aBereich, aBlattZ[6] ) AAdd( aFeld, aBlattZ[7] ) // Feldbezeichnung AAdd( aFFont, aBlattZ[8] ) AAdd( aZei, aBlattZ[9] ) AAdd( aSpa, aBlattZ[10] ) // fr die Positionierung im Editierfenster: nBr := IIf( i<>1 .AND. (aSeite[i]="n" .OR. nBo-Int(j*25*nV) < Int(30*nV)), ; (nBr+Int(370*nV)), nBr ) j := IIf( nBo-Int(j*25*nV) < Int(30*nV) .OR. aSeite[i]="n", 0, j ) IF Upper( aSeite[i] ) = "R" .OR. Upper( aSeite[i] ) = "V" // keine Žnderungen, wenn es sich um "Rechnungszeilen" handelt AAdd( aEditcontrols, aFeld[i] ) ELSE IF aNa[i] = "t" // Text ist zu ver„ndern // aText[i] := aText[i]+Space(70-len(aText[i])) oXbp := XbpStatic():new( oDlg:drawingArea, , {nBr+int(30*nV),nBo-int(++j*25*nV)}, {int(100*nV),int(25*nV)}) oXbp:caption := aPrompt[i] oXbp:clipSiblings := .T. oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT oXbp:create() oSle := XbpSLE():new( oDlg:drawingArea, , {nBr+int(140*nV),nBo-int(j*25*nV)}, {int(n200*nV),int(25*nV)}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) oSle:bufferLength := 70 oSle:setInputFocus := {|mp1,mp2,obj| HiliteSle( obj ) } oSle:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) } oSle:group := XBP_WITHIN_GROUP oSle:dataLink := {|x| IIf( PCOUNT()==0, Trim( aText[i] ), aText[i] := x ) } oSle:create():setData() AAdd( aEditcontrols, oSle ) // IF ASC( aFeld[i] ) > 32 cB := aBereich[i] ; cF := aFeld[i] IF !Empty( cF ) .AND. Val( cB ) > 0 aFeld[i] := ((&cB)->(&cF)) //Feldinhalt ENDIF ELSEIF aNa[i] = "f" // Feldinhalt soll editiert werden cB := aBereich[i] ; cF := aFeld[i] xF := ( (&cB)->(&cF) ) //Feldinhalt DO CASE CASE Valtype( xF ) == "C" aFeld[i] := xF CASE ValType( xF ) == "N" aFeld[i] := Str( xF ) CASE ValType( xF ) == "D" aFeld[i] := DtoC( xF ) ENDCASE oXbp := XbpStatic():new( oDlg:drawingArea, , {nBr+int(30*nV),nBo-int(++j*25*nV)}, {int(100*nV),int(25*nV)}) oXbp:caption := aPrompt[i] oXbp:clipSiblings := .T. oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT oXbp:create() oSle := XbpSLE():new( oDlg:drawingArea, , {nBr+int(140*nV),nBo-int(j*25*nV)}, {int(n200*nV),int(25*nV)}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) oSle:bufferLength := 50 oSle:setInputFocus := {|mp1,mp2,obj| HiliteSle( obj ) } oSle:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) } oSle:group := XBP_WITHIN_GROUP oSle:dataLink := {|x| IIf( PCOUNT()==0, Trim( aFeld[i] ), aFeld[i] := x ) } oSle:create():setData() AAdd( aEditcontrols, oSle ) aText[i] := "" ELSEIF aNa[i] = "v" .AND. aBereich[i] = "v" // Variable soll editiert werden cF := aFeld[i] xF := &(cF) //Variableninhalt DO CASE CASE Valtype( xF ) == "C" aFeld[i] := xF CASE ValType( xF ) == "N" aFeld[i] := Str( xF ) CASE ValType( xF ) == "D" aFeld[i] := DtoC( xF ) ENDCASE oXbp := XbpStatic():new( oDlg:drawingArea, , {nBr+int(30*nV),nBo-int(++j*25*nV)}, {int(100*nV),int(25*nV)}) oXbp:caption := aPrompt[i] oXbp:clipSiblings := .T. oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT oXbp:create() oSle := XbpSLE():new( oDlg:drawingArea, , {nBr+int(140*nV),nBo-int(j*25*nV)}, {int(n200*nV),int(25*nV)}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } ) oSle:bufferLength := 50 oSle:setInputFocus := {|mp1,mp2,obj| HiliteSle( obj ) } oSle:killInputFocus := {|mp1,mp2,obj| DeHiliteSle( obj ) } oSle:group := XBP_WITHIN_GROUP oSle:dataLink := {|x| IIf( PCOUNT()==0, Trim( aFeld[i] ), aFeld[i] := x ) } oSle:create():setData() AAdd( aEditcontrols, oSle ) ELSEIF aNa[i] <> "v" .AND. aBereich[i] = "v" // im aFeld steht Mem-Variable cF := aFeld[i] aFeld[i] := "&(" + cF + ")" AAdd( aEditcontrols, aFeld[i] ) ELSE IF ASC( aFeld[i] ) > 32 cB := aBereich[i] ; cF := aFeld[i] aFeld[i] := ((&cB)->(&cF)) //Feldinhalt ENDIF AAdd( aEditcontrols, aFeld[i] ) ENDIF IF ValType(cF)="C" IF Upper(cF) = "FAM" .OR. Upper(cF) = "KONF" aFeld[i] := Kurzlang( aFeld[i] ) ENDIF ENDIF ENDIF NEXT i=1 oDlg:setModalState( XBP_DISP_APPMODAL ) oDlg:show() oDlg1:invalidateRect() IF Len( aEditcontrols ) > 0 .AND. ValType( aEditControls[1] ) = "O" oFocus := SetAppFocus( aEditcontrols[1] ) ELSE oFocus := SetAppFocus( oDlg ) ENDIF DO WHILE nEvent <> xbeP_Close nEvent := AppEvent( @mp1, @mp2, @oXbp ) IF nEvent == xbeM_LbDblClick PostAppEvent( xbeP_Close) ENDIF IF nEvent == xbeP_Keyboard DO CASE CASE mp1 == xbeK_F10 .or. mp1 == xbeK_PGDN PostAppEvent( xbeP_Close) CASE mp1 == xbeK_ESC ASize( aBlatt, 0 ) PostAppEvent( xbeP_Close) ENDCASE ENDIF oXbp:handleEvent( nEvent, mp1, mp2 ) ENDDO // wie Gather( aEditcontrols ) : FOR i := 1 TO len( aEditcontrols ) IF ValType( aEditcontrols[i] ) == "O" IF aNa[i] == "t" aText[i] := aEditcontrols[i]:getdata() ELSE aFeld[i] := aEditcontrols[i]:getdata() ENDIF ENDIF NEXT FOR i=1 to len(aBlatt) aBlattZ := { aSeite[i], aNa[i], aPrompt[i], Trim(aText[i]), aTFont[i], aBereich[i], ; IIf( ValType(aFeld[i])="C", Trim(aFeld[i]), aFeld[i]), ; aFFont[i], aZei[i], aSpa[i] } aBlatt[i] := aBlattZ NEXT oDlg:setModalState( XBP_DISP_MODELESS ) oDlg:destroy() oDlg1:invalidateRect() SetAppFocus( oFocus ) SELECT &nOldArea RETURN aBlatt FUNCTION RepDruck1( aRep, cNa, cArea, cCP, nt, cRAV ) LOCAL nOldArea := Select(), nRec LOCAL nSumme := 0 , nZeile := -1 lFremd := .F. // PRIVATE der vorigen Ebene nMSum := 0 cAuf := Str( (1->auftrnr),6,0 ) SELECT &cArea nRec := RecNo() //****** IF Val( cArea ) < 10 FIND &cAuf // wenn Index ELSE GO TOP // wenn kein Index (bei TEMP-Dateien:Vers/Rng/Aufst) ENDIF DO WHILE auftrnr = Val(cAuf) .AND. .NOT. Eof() IF Upper( cRAV ) == "R" lFremd := IIf( kennz = "2" .AND. nt=Val(rn), .T., lFremd ) // beim 1.Durchlauf setzen! IF cNA <> kennz .OR. nt <> Val( rn ) SKIP LOOP ENDIF nMSum := nMSum + IIf( mwst_schl="3", ; &b_g/(100+zschl_voll)*zschl_voll, 0 ) ENDIF IF Upper( cRAV ) == "A" IF Upper( rn ) == "A" SKIP LOOP ENDIF ENDIF IF cDrucker = "HP" ELSE SetPrc( PRow()+1, 0 ) ENDIF FOR k := 1 to Len( aRep ) aBlattZ := aRep[k] cSeite := aBlattZ[1] cNa := aBlattZ[2] cPrompt := aBlattZ[3] cText := IIf( cCP="A", ConvToAnsiCP( aBlattZ[4] ), aBlattZ[4] ) nTFont := aBlattZ[5] cBereich := aBlattZ[6] cFeld := IIf( cCP="A" .AND. ValType( aBlattZ[7] ) = "C", ; ConvToAnsiCP( aBlattZ[7] ), aBlattZ[7] ) // Feldinhalt nFFont := aBlattZ[8] IF cBereich = "v" cF := &cFeld // xF := (cF) //Variableninhalt // DO CASE // CASE Valtype( xF ) == "C" // cFeld := xF // CASE ValType( xF ) == "N" // cFeld := Str( xF ) // CASE ValType( xF ) == "D" // cFeld := DtoC( xF ) // ENDCASE ELSE cF := ((&cBereich)->(&cFeld)) ENDIF // wenn cF leer ist -> keine Bewegung von Zeile/Spalte: nZei := IIf( !Empty( cF ) .OR. (Empty(nFFont) .AND. Empty(nTFont)), ; IIf( aBlattZ[9]<1, PRow()-aBlattZ[9], aBlattZ[9] ), ; PRow() ) // nSpaalt := PCol() nSpa := IIf( !Empty( cF ) .OR. (Empty(nFFont) .AND. Empty(nTFont)), ; IIf( aBlattZ[10]<0, PCol(), aBlattZ[10] ), ; PCol() ) ZS_( nZei,nSpa ) DO CASE CASE Valtype( cF ) == "C" // ZS_( nZei,nSpa ) IIf( nFFont>0, FDr_( Trim( cF ), aSchrift[nFFont] ), ) CASE Valtype( cF ) == "N" // ZS_( nZei,nSpa ) IF cF <> 0 .AND. ( Upper( cRAV ) = "R" .OR. Upper( cRAV ) = "V" ) IF Upper( AppName() ) = "DOENNEX.EXE" IIf( nFFont>0, FDr_( Trim( Transform( cF, cPicture ) ), aSchrift[nFFont] ), ) ELSE IIf( nFFont>0, FDr_( Str(cF,8,2), aSchrift[nFFont] ), ) ENDIF ENDIF nSumme := nSumme + cF CASE Valtype( cF ) == "D" // ZS_( nZei,nSpa ) IIf( nFFont>0, FDr_( DtoC( cF ), aSchrift[nFFont] ), ) ENDCASE NEXT SKIP ENDDO GO nRec //****** SELECT &nOldArea RETURN nSumme