Peruzzi
Domaćin
- Poruka
- 4.066
Treba da se odstampa niz labela na artiju ali na odredjenoj poziciji, u mm. Odnos forme i lista je 1.8:1, ako je jedan pixel na formi = 1 mm na hartiji. Stampa se na A4 formatu. Naisao sam na neke procedure i probao ih i u nastavku ide kod procedura. Prva ne stampa nista, a druga stampa stranu ali umanjenu 4 puta (s tim sto velicina fonta ostaje nepromenjena, greska je u koordinatama)
Pomazite braco, imam jos par dana da zavrsim maturski cu se samoubijem ako ne bude gotovo. Samo mi jos ovo ostalo
ukupnostrana:integer odredjuje koliko ukupno strana ima za stampanje
brojstrane:integer odredjuje koja strana se trenutno stampa
generisistranurocedura koja popuni caption objekata u niz:array[1..1000] of TLabel;
====================================================
Ova procedura ne stampa nista. Samo provuce praznu stranu kroz stampac
Sta radi procedura
for petljom potera od prve do poslednje stranice
popuni caption objekata vrednostima koje se stampaju na strani koja je trenutno na redu
podesi da je merna jedinica 0.1 mm
prodje kroz niz labela i odstampa ih na datim koordinatama
kod koordinata vrsi se preracunavanje jer su one na prozoru u razmeri 1.8:1 u odnosu na stranu (ako je pixel na formi ekvivalentan milimetru na papiru)
=================================================
Ova procedura stampala je stranu ali 4x manju
isti princip rada kao i prethodna, s tim sto je ovde ScaleX i ScaleY ipak nesto radilo
Pomazite braco, imam jos par dana da zavrsim maturski cu se samoubijem ako ne bude gotovo. Samo mi jos ovo ostalo
ukupnostrana:integer odredjuje koliko ukupno strana ima za stampanje
brojstrane:integer odredjuje koja strana se trenutno stampa
generisistranurocedura koja popuni caption objekata u niz:array[1..1000] of TLabel;
====================================================
Ova procedura ne stampa nista. Samo provuce praznu stranu kroz stampac
Kod:
procedure TForm1.Stampanje();
var
j,k:integer;
begin
Printer.Canvas.Create;
for i:=1 to ukupnostrana do
begin
brojstrane:=i;
generisistranu;
Printer.BeginDoc;
SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);
for k:=1 to 1000 do
begin
Printer.Canvas.Font.Name:= niz[k].Font.Name;
Printer.Canvas.Font.Color:=niz[k].Font.Color;
Printer.Canvas.Font.Size:=niz[k].Font.Size;
Printer.Canvas.Font.Style:=niz[k].Font.Style;
Printer.Canvas.TextOut(Round((niz[k].Left-20)/1.8)*10,
Round((niz[k].top-20)/1.8)*10,
niz[k].capton);
end;
end;
end;
Sta radi procedura
for petljom potera od prve do poslednje stranice
popuni caption objekata vrednostima koje se stampaju na strani koja je trenutno na redu
podesi da je merna jedinica 0.1 mm
prodje kroz niz labela i odstampa ih na datim koordinatama
kod koordinata vrsi se preracunavanje jer su one na prozoru u razmeri 1.8:1 u odnosu na stranu (ako je pixel na formi ekvivalentan milimetru na papiru)
=================================================
Ova procedura stampala je stranu ali 4x manju
Kod:
procedure TForm4.Stampanje();
var j,k:integer;
ScaleX, ScaleY: Integer;
begin
Printer.Canvas.Create;
for j:=1 to ukupnostrana do
begin
brojstrane:=j;
GenerisiStranu;
With Printer do
begin
BeginDoc;
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
end;
for k:=1 to 1000 do
begin
Printer.Canvas.Font.Color:=niz[k].Font.Color;
Printer.Canvas.Font.Size:=niz[k].Font.Size;
Printer.Canvas.Font.Style:=niz[k].Font.Style;
Printer.Canvas.TextOut(Round((niz[k].Left-20)/1.8)*ScaleX,Round((niz[k].Top-20)/1.8)*ScaleY,niz[k].Caption);
end;
Printer.EndDoc;
end;
end;
isti princip rada kao i prethodna, s tim sto je ovde ScaleX i ScaleY ipak nesto radilo