[ Divjak @ 03.09.2002. 01:30 ] @
Kako da ostampam komponente sa Forme ako je to moguce?
[ Ilija Studen @ 06.09.2002. 17:31 ] @
Kako da sta? Odstampas izgled forme ili sadrzaj komponente (Memo, Rich Edit, Edit isl)? Budi malo jasniji.
[ Rapaic Rajko @ 07.09.2002. 15:56 ] @
Pogledaj TWinControl.PaintTo() metodu. Ako ne znas kako da je pozoves, vici.

Rajko
[ kingrale @ 05.10.2002. 14:48 ] @
Ako zelis da stampas Formu kao Bitmap onda je zadavanje naredbe za stampanje trivijalno.

Form1.Print;

No ako zelis da stampas sadrzaj komponente,za linije teksta (to je najcesce), a da nemoras da se peglas sa QReport onda postoji alternativa.

U odsjeku za uses dodaj printers,
a procedura za stampanje izgleda ovako:

procedure TForm1.Stampaj(sl: TStrings);
var linija, x, y: integer;
sirina, visina, razmak_l, razmak_g: integer;
begin

if PrintDialog1.Execute then begin
Printer.BeginDoc; //Zapocinje stampanje
SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC); //Prebacuje skalu na 1/10 mm

//Podesavanje slova i pozadine:
Printer.Canvas.Font.Name:='Verdana';
Printer.Canvas.Brush.Color:=clWhite;
Printer.Canvas.Font.Height:=40; //5 mm

//Pronalazenje velicine papira u jedinici 1/10 mm :
sirina:=GetDeviceCaps(Printer.Canvas.Handle, HORZSIZE)*10;
visina:=GetDeviceCaps(Printer.Canvas.Handle, VERTSIZE)*10;

razmak_l:=200; //2 cm
razmak_g:=200; //2 cm

x:=razmak_l;
y:=razmak_g*-1;

for linija:=0 to linije.Count-1 do begin

if -y>(visina-2*razmak_g) then
begin
//zavrsavamo stampanje prve strane i pripremamo novu za nastavak
Printer.EndDoc;
Printer.BeginDoc;
SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);
Printer.Canvas.Font.Name:='Arial';
Printer.Canvas.Brush.Color:=clWhite;
Printer.Canvas.Font.Height:=40; //5 mm
sirina:=GetDeviceCaps(Printer.Canvas.Handle, HORZSIZE)*10;
visina:=GetDeviceCaps(Printer.Canvas.Handle, VERTSIZE)*10;
razmak_l:=200;
razmak_g:=200;
x:=razmak_l;
y:=razmak_g*-1;
end;

if y=-razmak_g then begin
Printer.Canvas.Font.Style:=[fsbold];
Printer.Canvas.Font.Style:=[];
y:=y-Printer.Canvas.TextHeight(linije[linija]);
end;

Printer.Canvas.TextOut(x, y, linije[linija]);

y:=y-Printer.Canvas.TextHeight(linije[linija]);


end;

Sada ako postavite na Form1 komponentu Memo1,PrintDialog1 i Button1 i na event OnClick za Button jedan izprogramirate na sljedeci nacin: Stampaj(Memo1.lines); stampac ce vam isprintat sadrzaj memo-boxa.

Nezaboraviti dodati u public deklaraciji klase TForm1 sljedecu liniju:
procedure Stampaj(sl:Tstrings);