Jak w temacie:
delphi
uses Printers;
procedurę DrukujRichEdita(RE:TRichEdit;margL,margT,margR,margB:Extended);//marginesy w mm
var
log_pixelsX,log_pixelsY,non_printL,non_printT:Integer;//drukarka
page_rect:TRect;
begin
log_pixelsX := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
log_pixelsY := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
non_printL := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
non_printT := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
margL:=margL/25.4;
margR:=margR/25.4;
margT:=margT/25.4;
margB:=margB/25.4;
page_rect.Left := Round(log_pixelsX * margL) - non_printL;
page_rect.Right := Printer.PageWidth-Round(log_pixelsX * margR) - non_printL;
page_rect.Top := Round(log_pixelsY * margT) - non_printT;
page_rect.Bottom:= Printer.PageHeight - Round(log_pixelsY * margB)- non_printT;
RE.PageRect:=page_rect;
RE.Print('Drukowanie z marginesami');
end;
czy to działa na kazdej drukarce, bo prawde powiedziawszy mam problem z uzyskaniem tych marginesów
Ja również mam problem z marginesami.
mi to jakoś nie włazi...;(
Poniższy komentarz jest zamieszczony dla tych, co nie rozumieją lub nie wiedzą, jak skorzystać z tego, co jest widoczne powyżej. Ja przedstawiam to trochę inaczej, chyba prościej, posługując się działającym przykładem. Przykład wszystko wyjaśni. Zrób tak.
Teraz przekopiuj obie funkcje widoczne poniżej zaraz po implementation (muszą być wpisane jako pierwsze, inaczej nie będzie działać). Pierwsza funkcja zamienia milimetry na punkty (i dla nas jest najważniejsza), a druga zamienia punkty na milimetry. Obie funkcje uwzględniają rozdzielczość drukarki, co oznacza że wydruk na każdej drukarce będzie wyglądać identycznie z tym, że w funkcji użyłem rozdzielczości drukarki w osi X. Nigdy nie widziałem drukarki, w której rozdzielczości w osiach X i Y są różne, więc śmiało można posługiwać się tylko jedną z nich. Gdybyś jednak chciał to zmienić drobną modyfikacją funkcji łatwo można to zmienić
// oraz
W polu Edit1 wpisz wartość 10, a w pole Edit2 wpisz 50. Dla przycisku Button2 przekopiuj poniższą procedurę
Klikając w Button2 wydrukujesz kwadrat o boku 50 mm, 10 mm od górnej i lewej krawędzi kartki. Wielkość wydruku można zmieniać zależnie od wartości wstawionych do pól Edit1 i Edit2 . Funkcję MM_na_DPI() można wykorzystać w każdej aplikacji. Jeżeli chcesz wydrukować jakąkolwiek grafikę lub cos innego, 127 milimetrów od lewej krawędzi i 43 milimetrów od górnej krawędzi kartki, to obie wartości przepuszczasz przez funkcję i od uzyskanej wartości odejmujesz margines drukarki, zgodnie z załączonym wzorem. I jeszcze jedno! Musisz pamiętać, że skoro marginesy drukarki laserowej wynoszą około 5 milimetrów, to nie da rady coś wydrukować 3 milimetry od krawędzi kartki.
Sprawdź, a zobaczysz jakie to proste.
Jak coś nie rozumiesz pisz na GG-9990906.