Problem z drukowaniem

0

Mam taki kodzik który napisałem w Delphi 3.
Drukowanie danych z editów,labelów oraz jednego stringgrida:

kod

procedure TMainForm.Print1Click(Sender: TObject);
var
l,i,h:integer;
begin
h:=0;
if PrintDialog1.Execute then
try
with Printer do
begin
BeginDoc;
Printer.Canvas.Font.Name:='Times New Roman';
Printer.Canvas.Font.Size:=10;
Printer.Canvas.Font.Style:=Printer.Canvas.Font.Style+[fsBold];

Printer.Canvas.TextOut(100,100+h,Label1.Caption+' '+Kk.Text);
Printer.Canvas.TextOut(100,200+h,Label7.Caption+' '+Oproc.Text);
Printer.Canvas.TextOut(100,300+h,Label6.Caption+' '+Ls.Text);
Printer.Canvas.TextOut(100,400+h,Label4.Caption+' '+Oplat.Text);
Printer.Canvas.TextOut(100,500+h,Ogolnie.Caption);
Printer.Canvas.TextOut(100,600+h,'Harmonogram spłat kredytu:');
h:= h+Printer.Canvas.TextHeight('ABC')+10;

with StringGrid2 do
for i:=0 to RowCount-1 do
if Cells[0,1]<>'' then

begin
Printer.Canvas.TextOut(100,700+h,Cells[0,i]);
l:=200;
Printer.Canvas.TextOut(100+l,700+h,Cells[1,i]);
l:=l+500;
Printer.Canvas.TextOut(100+l,700+h,Cells[2,i]);
l:=l+500;
Printer.Canvas.TextOut(100+l,700+h,Cells[3,i]);
l:=l+500;
Printer.Canvas.TextOut(100+l,700+h,Cells[4,i]);
l:=l+500;
Printer.Canvas.TextOut(100+l,700+h,Cells[5,i]);
l:=l+500;
Printer.Canvas.TextOut(100+l,700+h,Cells[6,i]);
h:= h+Printer.Canvas.TextHeight('ABC')+10;
end;
Printer.EndDoc;
end;
except
ShowMessage('Problem z drukowaniem');

end;
end;

Jeżeli chodzi o wydruk - działa i ładnie rozmieszcza na stronie w
poziomie - poziom ponieważ danych jest sporo i w pionie się nie
mieszczą więc przy wydruku zaznaczam sobie poziomo.
Ale problem jest w tym że jeżeli zapełniony jest StringGrid np. 40
wierszami lub 100 wierszy to wtedy reszta wydruku przechodzi na
nastepną stronę a drukuje mi tylko jedną stronę mimo że w
PrintDialog zaznaczyłem możliwość wyboru ilości stron oraz max i
min ilość stron.
Przyznam się że nie potrafię poradzić sobie z tym problemem a nie chciałbym zmieniać swojego kodu - tzn. pisać go od początku ponieważ ten akurat rozumiem . W sieci jest pełno kodów na drukowanie jednak są one dla mnie niezrozumiałe (cóż dopiero raczkuje w delphi) więc nie wiem czy jest możliwe dopisanie czegoś do mojego kodu czy trzeba wszystko zmienić.
Po drugie przyznam się że nie radzę sobie z tymi "stopkami', 'nowymi stronami-Printer.NewPage' i dlatego bardzo proszę o pomoc.
Acha wydruk sprawdzałem na dwóch drukarkach - słyszałem jednak że powinno się uwzględnić w kodzie rozdzielczość - ponieważ nie na wszystkich drukarkach będzie tak samo drukowała ta procedurka.
Proszę o pomoc w modyfikacji tego kodu bo sam sobie nie mogę poradzić.
W delphi dopiero raczkuje:))))

Mam nadzieję że w miarę jasno opisałem problem

Pozdrawiam

Kamil

0

Przeanalizuj poniższy kod źródłowy dotyczący wydruku na różnych drukarkach.

http://www.republika.pl/bogdanb/podz_cal.zip

1 użytkowników online, w tym zalogowanych: 0, gości: 1