ich habe jetzt mein letztes Programm auf Windows Druck umgestellt (mein eigenes privates Haushaltsprogramm),
ich war es einfach leid immer die Drucker auf LPT zuordnen zu müssen ... also los.
Erstes Beispiel, aus einer Kontenübersicht kann man diese Liste drucken, wobei die Liste neu in der DBF gesucht wird:
Code: Alles auswählen
procedure kont_druck( konto , bis_dat ) && Parameter Kontonummer
local mk_nr,m_soll,m_haben,m_s_saldo,m_h_saldo
local win,seite,z,saldo:=.f.,kontinfo,kontname,tmp_bnr,tmp_txt, af[12], x
if empty( dru_aktiv )
meldung(12,"F",{"Kein Druckertreiber aktiv !","Sie müssen zuerst im Menu 'Drucken'","einen Druckertreiber auswählen"})
return
endif
m_soll:=m_haben:=m_s_saldo:=m_h_saldo:=0
for x := 1 to 12
af[x] := f[x]
f[x] := .f.
next
f[3]=.t.
do funk_tast
setprc(0,0)
seek konto
set printer to (DRU_SCHNIT)
set printer on
set cons off
seite=1
select kontplan
seek konto
kontinfo=kontplan->k_info
kontname=kontplan->k_name
select konten
do while .t.
meldung(12,"H",{"Bitte Drucker vorbereiten.","Wenn der Drucker bereit ist, bitte Taste drücken..."})
if isprinter()
exit
endif
enddo
begin sequence
?? dru_init+dru_grund
win=zeigen(12,"H",{"Seite: "+alltrim(str(seite))+" wird gedruckt."})
do while .t.
if inkey()=K_F3
if ask(16,"Druck wirklich <A>bbrechen, oder <W>eiter drucken?","<")="A"
?? dru_rueck
break
endif
endif
if prow()=0 && Kopfzeile drucken
for z=1+dru_obraof to 3
? dru_z10
next
?? space(dru_rand)+"Konto: "+dru_fett_1+konto+" "+kontname+dru_fett_0+" ("+alltrim(kontinfo)+")"+dru_cr+space(67)+"Seite:"+str(seite,3)
?
? space(dru_rand)+"Stand:",if(DATE()<=bis_dat,date(),bis_dat)
?
? space(dru_rand)+dru_z12+"Buch- Gegenkonto- Beleg- Buchungssatzinformation"+space(7)+"SOLL | HABEN"+ dru_z10
? space(dru_rand)+dru_z12+"nr. nr. name datum "+space(7)+ZeigWaehrung()+" | "+ZeigWaehrung()+ dru_z10
? space(dru_rand)+dru_z12+replicate("-",71)+"|"+replicate("-",10)+dru_z10
if seite > 1
? space(dru_rand)+dru_z12+"Übertrag"+space(53)+nichtnull(m_soll,10,"@e ###,###.##")+"|"+nichtnull(m_haben,10,"@e ###,###.##")+dru_z10
endif
endif
if prow()+dru_obraof+1 > min(dru_maxzei-2,64) && Nächste Seite ??
if konten->k_nr==konto && weitere Datensätze vorhanden
? space(dru_rand)+dru_z12+replicate("-",71)+"|"+replicate("-",10)+dru_z10
? space(dru_rand)+dru_z12+"Zwischensumme"+space(48)+transform(m_soll,"@e ###,###.##")+"|"+transform(m_haben,"@e ###,###.##")+dru_z10
seite++
eject
do while ! isprinter()
inkey(7) && Zeit fr Papiertransport
enddo
setprc(0,0)
wselect(win)
wclose()
win=zeigen(12,"H",{"Seite: "+alltrim(str(seite))+" wird gedruckt."})
else && alles gedruckt !
if saldo && Saldo wurde bereits gedruckt
? space(dru_rand)+dru_z12+replicate("-",71)+"|"+replicate("-",10)+dru_z10
? space(dru_rand)+dru_z12+"Endsumme"+space(53)+dru_unte_1+transform(m_soll+m_s_saldo,"@e ###,###.##")+"|"+transform(m_haben+m_h_saldo,"@e ###,###.##")+dru_unte_0+dru_z10
wselect(win)
wclose()
exit
endif
endif
else
do while konten->datum > bis_dat && Endedatum berücksichtigen
skip
enddo
if konten->k_nr==konto && Datensatz gehört zu Konto
do case
case konten->b_nr = 0 // Anfangsbestand
tmp_bnr=blank(str(konten->b_nr),.t.)
tmp_txt="Anfangsbestand"+space(len(buchsatz->b_info)-14)
case konten->b_nr = -1 // Endbestand
tmp_bnr=blank(str(konten->b_nr),.t.)
tmp_txt="Endbestand"+space(len(buchsatz->b_info)-10)
otherwise
tmp_bnr=str(konten->b_nr)
tmp_txt=buchsatz->b_info
end case
? space(dru_rand)+dru_z12+;
left(tmp_bnr+" "+konten->gegen_k_nr+" "+konten->gegen_k_na+" "+dtoc(konten->datum)+" "+tmp_txt , 61 )+nichtnull(konten->soll,10,"@e ###,###.##")+"|"+nichtnull(konten->haben,10,"@e ###,###.##") + dru_z10
m_soll += konten->soll
m_haben += konten->haben
skip
else && Kontenende berschritten
if saldo && saldo wurde bereits gedruckt !
? space(dru_rand)+dru_z12+replicate("-", 61 )+;
space(10)+"³" + dru_z10
else
do case && Salden ermitteln
case m_soll > m_haben
m_h_saldo=m_soll-m_haben
case m_soll < m_haben
m_s_saldo=m_haben-m_soll
otherwise
m_s_saldo:=m_h_saldo:=0
endcase
? space(dru_rand)+dru_z12+" Saldo"+space(50)+nichtnull(m_s_saldo,10,"@e ###,###.##")+ "|"+nichtnull(m_h_saldo,10,"@e ###,###.##") + dru_z10
saldo=.t.
endif
endif
endif
enddo
?? dru_rueck
end sequence
wselect(win)
wclose()
set printer off
set printer to
set cons on
for x := 1 to 12
f[x] := af[x]
next
do funk_tast
return