Yazıcıyı duraklatmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
heavy
Üye
Mesajlar: 67
Kayıt: 07 May 2005 03:31

Yazıcıyı duraklatmak

Mesaj gönderen heavy »

Arkadaşlar aşağıdaki yöntem ile dot-matrix yazıcıdan yazdırma yapmak istiyorum. Belli birşeyleri yazdırdıktan sonra duraklatmak istiyorum ve daha sonra tekrar kaldığım yerden devam etmek istiyorum.

Bunu nasıl yapabilirim?

Kod: Tümünü seç

Pr := tprinter.Create;
Pr.BeginDoc;
Pr.Canvas.Font.Name := fontbox1.FontName;
Pr.Canvas.Font.Size := puntobox1.Value;
Pr.Canvas.Font.Height := boybox1.Value;
Pr.Canvas.TextOut(xbox1.Value, ybox1.Value, LabeledEdit1.Text);
Pr.EndDoc;
Pr.Free;
istediğim olay şunun için. elimde sürekli form kağıdı var ve bu kağıtın her sayfası 3 e bölünmüş durumda (kesme yerleri var). bu kesme yerlerini bilet basımı için kullanıcam. yukarıdaki yöntem ile yazdırdığımda istediğimi yazdıktan sonra tüm sayfayı çıkartıyor. ben istiyorumki sayfayı çıkartmasın, müşterim basılmış bileti kessin, sonra tekrar bilet basmaya devam etsin.

ilk defa böyle bi olayla karşılaşıyorum ve maalesef bu hafta bitirmem gerekiyor. yardımcı olabilirseniz çok sevinirim.
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Senin yazdırma yöntemin Windows'un apilerini kullanarak yapılıyor.
O anda seçili printer için kağıt boyutu ne ise ENDDOC diyince sayfayı çıkartıyor.

Sen eski yöntemle yazdırmayı dene.

Kod: Tümünü seç

var
   F : TextFile;
begin
   Assign(F, 'lpt1:');
   Reset(F);
   Write(F, 'Merhaba ');
   WriteLn(F, 'Dünya');
   WriteLn(F);
   WriteLn(F);
   Close(F);
end;
Kodlarda hata olabilir. Fikir vermek için yazdım.


Bu şekilde yazırırsan kaç satır yazıp yazmıyacağına sen karar verirsin. Normal sürekli form kağıtlar 66 satırdır. eğer sayfayı 3'e böldüysen, demekki sen 32 satırı baz alacaksın.

Ama eğer Windows fontları ve grafik gibi şeyler basmak istiyorsan senin yaptığın gibi yazdırabilirsin. Ancak basım işleminden önce kağıt tipini seçtirmelisin ya da içerden ayarlamalısın.
heavy
Üye
Mesajlar: 67
Kayıt: 07 May 2005 03:31

Mesaj gönderen heavy »

aşağıdaki şekilde yönlendirdiğiniz gibi yaptım fakat bu sefer de şöyle bir sorun çıktı;

yazma işlemi bittikten sonra bileti kesip alamıycam, çünkü printer'ın kafası son yazdırdığım yerde kalıyor. yazıcının (epson lx-300+) bu kağıdı yukarı çıkartması gerekiyor ve ben sonradan tekrar yazdırmak istediğimde kağıt başı yapması gerekiyor. bunlar için Writeln(PrintTextF, ??)'e ekleyebileceğimiz bir kod varmı ? yoksa kağıt boyutunu belirtmek mi gerekecek (gerçi bununda nasıl yapıldığını bilmiyorum)

ilginiz için teşekkür ederim.

Kod: Tümünü seç

var 
  PrintTextF: System.TextFile;
  yaziciadi  :String;
  ..........
  try
       yaziciadi:='LPT1:';
       AssignFile(PrintTextF, yaziciadi);
       Rewrite(PrintTextF);
       Writeln(PrintTextF, #18);
       Writeln(PrintTextF, 'LAY LAY LOM');
       WriteLn(PrintTextF);
  finally
       closefile(printtextf);
  end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- Aşağıdaki kod yardımcı olacaktır...

Ref : viewtopic.php?t=2812#14375

Kod: Tümünü seç

var 
  Dosya : Textfile; 
begin 
  AssignFile(Dosya, 'LPT1'); 
  ReWrite(Dosya); 
  Write(Dosya, #27#106#49); // ESC+"j"+"1" 
  CloseFile(Dosya); 
end;
Resim
Resim ....Resim
heavy
Üye
Mesajlar: 67
Kayıt: 07 May 2005 03:31

Mesaj gönderen heavy »

çoook teşekkür ederim sayenizde hallettim.

Kod: Tümünü seç

  Write(Dosya, #27#106#49);// geri sardırmak   ESC+"j"+"1"
  Write(Dosya, #27#74#49); // ileri sardırmak  ESC+"J"+"1"
Cevapla