Drukowanie w Delphi

Strona g│≤wna

 

Drukowanie w Delphi

Drukowanie w Delphi wcale nie jest trudne. Trzeba tylko zrozumieµ istotΩ dzia│ania niekt≤rych funkcji. Istnieje spos≤b na proste drukowanie. Np. komponent RichEdit posiada funkcje "Print". Wystarczy j▒ wywo│aµ, aby wydrukowaµ dokument:

RichEdit.Print('Plik Readme.txt');

Mo┐esz tak┐e skorzystaµ z pomocy innych edytor≤w. Oto przyk│ad jak to zrobiµ:

uses ShellAPI;

ShellExecute(Handle, 'print', 'Plik.doc', nil, nil, SW_HIDE);

W tym wypadku wdrukowany zostanie plik "Plik.doc". Program najpierw odczyta jaki program skojarzony jest z rozszerzniem *.doc, a nastΩpnie u┐yje go do wydrukowania pliku. DziΩki parametrowi "SW_SHIDE" okno programu nie zostanie nawet pokazane! Je┐eli chcesz siΩ dowiedzieµ co╢ wiΩcej na temat funkcji "ShellExecute" kliknij tutaj

Na zak│adce "Dialogs" znajduj▒ siΩ komponenty "PrintDialog" i "PrinterSetupDialog". Najpierw om≤wiΩ pierwszy z nich. 
Po umieszczeniu komponentu "PrintDialog" na formularzu ujrzysz w Inspektorze Obiekt≤w takie oto pozycje: 

Collate  -  je┐eli ta opcja ustawiona jest na True przy wielu kopiach wydruku najpierw drukowane s▒ pierwsze strony w kilku kopiach. Je┐eli ta warto╢µ ma "False" najpierw wydrukowane zostan▒ wszystkie strony pierwszej kopii, a dopiero p≤╝niej drugiej. 

Copies  -   okre╢la liczbΩ kopii wydruku. 

FromPage  -  w│a╢ciwo╢µ ta okre╢la od kt≤rej strony rozpocznie siΩ proces drukowania.

PrintRage   -  okre╢la, kt≤re przyciski s▒ aktywne.

PrintToFile   -  okre╢la, czy u┐ytkownik wybra│ opcje drukowania do pliku ( zapisywania ). 

Options  -  tutaj znajduj▒ siΩ opcje okre╢laj▒ce wygl▒d i zachowanie komponentu. 

Komponent "PrinterSetupDialogs" umo┐liwia ustawienie opcji wydruku przed rozpoczΩciem drukowania. Okno ( komponent ) wywo│uje siΩ poprzez metodΩ EXecute - np:

PrinterSetupDialog.Execute;

Delphi udostΩpnia klasΩ "Printers". Wystarczy, ┐e dodasz te s│owo to listy "uses". 

Aborted  -  Je┐eli ta warto╢µ przybierze "True" do znaczy, ┐e proces drukowania zosta│ przerwany. 

Canvas  -  reprezentuje p│≤tno drukarki. Mo┐na po nim rysowaµ jak po zwyk│ym "Canvasie".

Copies   -   liczba kopii wydruku.

Fonts  -  lista czcionek reprezentowanych przez drukarkΩ. 

Orientation  -  ta w│a╢ciwo╢µ mo┐e przybraµ warto╢ci "poPortrait", "poLandscape". 

PageHeight  -  wysoko╢µ strony w pikselach. 

PageNumber   -  numer aktualnie drukowanej strony. 

Printing  -  je┐eli ta w│a╢ciwo╢µ posiada warto╢µ "True" to znaczy, ┐e trwa proces drukowania. 

Abort  -  u┐ycie tej funkcji oznacza przerwanie procesu drukowania.

BeginDoc  -  rozpoczyna proces wydruku.

EndDoc  - ko±czy proces wydruku. 

Je┐eli chcesz np. wydrukowaµ jaki╢ obrazek to piszesz:

var
  B : TBitmap;
brgin
  B := TBitmap.Create;
  B.LoadFromFile('C:\obrazek.bmp');
  Printer.BeginDoc;
  Printer.Canvas.Draw(20, 20, B);
  Printer.EndDoc;
  B.Free;
end;

Lepszym rozwi▒zaniem jednak bΩdzie u┐ycie funkcji "StretchDraw", gdy┐ umo┐liwia ona dopasowanie rozmiaru wydruku to rozmiar≤w drukarki. 

var
  R : TRect;
begin
// zaladuj obrazek
  Image1.Picture.LoadFromFile('e:\mikolaj.bmp');
// pobierz jego wymiary
  Image1.Canvas.FillRect(R);

  Printer.BeginDoc;  // rozpocznij drukowanie
// umiesc obrazek
  Printer.Canvas.StretchDraw(R, Image1.Picture.Graphic);
// zakoncz
  Printer.EndDoc;
end;