TRichEdit Yazdırılırken Kenarlıkların Ayarlanması

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
RamazanG
Üye
Mesajlar: 73
Kayıt: 16 Tem 2010 03:38

TRichEdit Yazdırılırken Kenarlıkların Ayarlanması

Mesaj gönderen RamazanG »

Makale: Zarko Gajic
Çeviri: Ramazan Gülbahar

TRichEdit Yazdırılırken Kenarlıkların Ayarlanması
TRichEdit kontrolü Windowsun rich text kontrolünü destekler. Rich text edit kontrolleri kullanıcının (düzenle, biçim, yazdır, ve kaydet) yazı ve paragraf biçimlerini değiştirmesine olanak verir.

Rich Edit basit bir yazdırma metodu sağlar, aktif durumdaki yazıcıdan istenen biçimde yazdırma işlemi yapabiliriz.
Bu yazdırma işlemi malesef kenar biçim ayarlarını desteklemez.

Rich Edit Yazdırılırken Kenarlık Ayarlarının Yapılması
SetRichEditMargins procedure'ü PageRect özelliğini kullanarak TRichEdit kenarlık özelliklerini ayarlayabilir. PageRect özelliği rich text edit kontrolü yazdırılırken piksel boyutlarını ayarlayabilir.

İlk dört değişken Sol, Sağ, Üst, Alt kenarlığın inç boyutudur(1 IN = 2.54 cm). Son Değişken ise rich edit Kontrolüdür.
(* Aktif durumdaki yazıcı için, RichEdit kenarlıklarını ayarla(1 in = 2.54 cm)*)

Kod: Tümünü seç

 procedure SetRichEditMargins(const mLeft, mRight,mTop, mBottom: extended; const re : TRichEdit) ;
 var
   ppiX, ppiY : integer;
   spaceLeft, spaceTop : integer;
   r : TRect;
 begin
   {Her inç için pikseller}
   ppiX := GetDeviceCaps(Printer.Handle, LOGPIXELSX) ;
   ppiY := GetDeviceCaps(Printer.Handle, LOGPIXELSY) ;
 
   {Yazdırılamaz Kenarlıklar}
   spaceLeft := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX) ;
   spaceTop := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY) ;
 
   {kenarlıkları hesapla}
   R.Left := Round(ppiX * mLeft) - spaceLeft;
   R.Right := Printer.PageWidth - Round(ppiX * mRight) - spaceLeft;
   R.Top := Round(ppiY * mTop) - spaceTop;
   R.Bottom := Printer.PageHeight - Round(ppiY * mBottom) - spaceTop;
 
   {Kenarlıkları ayarla}
   re.PageRect := r;
 end;
Not: VCL içindeki "Printer Margins" ile "Margins" özelliğini karıştırmayın.

Kullanılışı:

Kod: Tümünü seç

 SetRichEditMargins(1, 1, 0.5, 0.5, richEdit1) ;
 richEdit1.Print('Printing with margins') ;
Cevapla