Delphi program ile printer kullanma

Başlatan Zoroaster, 21 Şubat 2017, 10:08:08

Zoroaster

Delphi ile oluşturacağım BMP formatındaki resimin yazıcıdan çıktısını almam lazım.

Daha önceleri yazılımla printerden çıktı aldığımı hatırlamıyorum.

Basit bir örneğiniz varmı? (Örnek üzerinde sorularım olabilir)

---------------

Asıl amacımdan da bahsedeyim. Çek koçanından kopardığım boş çeki A4 kağıdına iptidai bir yöntemle sabitleyip program ekranında yazdığım sayısal değeri çekin ilgili bölümüne yazan tarih vs kısımlarını dolduran bir yazılım yapmam gerekiyor. En son aşamada da print edecek.

Malesef hazır yazılımları kullanamıyorum. Benim yazmam lazım.

Seytan deliginden kacti.

Yuunus

Fast report u indirip kurun design modunda istediginiz formati hazirlayabilirsiniz.

mert3162

#2
Hocam excel içindeki visual basic düzenleyicisni kullanarak bir form oluştursanız açılışınada bir macro ile formu tam ekran getirtseniz baskı alanını excel içindeki hücreler sayesinde kolaylıkla ayarlasanız sizin için daha basit olmazmı ?

Yıllar önce böyle bişiy yapmıştım.Fatura irsaliye falan basmak için yazıcımda nokta vuruşluydu.Bulursam eklerim sizin için

Birde şöyle birşey buldum belki işinize yarar
http://delphiexamples.com/devices/printbitmap.html
|^^^^^^^^^^^^\ ||\
|__PICPROJE.ORG __
||'""|""\___
| _____________ l | |__|__|___| )
(@!)!(@)"""""**|(@) (@)****|(@)---------

 Üstadlarım nonstradam & Logan

Klein

void __fastcall TfrmMain::btnPrintClick(TObject *Sender)
{
int l,t,r,b;
	if(dlgPrint->Execute())
	{
		try{
			Printer()->BeginDoc();
			ScanImage->Picture->Bitmap->TransparentMode = tmAuto;
			l = (Printer()->PageWidth - 2000) / 2;
			t = (Printer()->PageHeight - 2000)/ 2;
			r = l + 2000;
			b = t + 2000;
			TRect R = Rect(l,t,r,b);
		   Printer()->Canvas->StretchDraw(R, ScanImage->Picture->Graphic );
		   Printer()->EndDoc();
		}catch (...){
                      ShowMessage("Belge yazdırılamadı");
		}
	}
}


Abi bu C++ builder. Delphi ile fonksiyonlar aynı zaten. Küçük bir düzeltme ile kullanabilirsin.

ByTEK

#4
Ben daha önce çıktı almak için şöyle yol izlemiştim. Resmi ilgili yere kaydedip çıktıya göndermiştim. Daha pratik gelmişti. Hatta yazıcıda seçip gönderiyordum. örnek kod aşağıdaki gibi.

uses
  Printers, shellapi;

procedure TForm1.FormCreate(Sender: TObject);
begin
yazici.Clear;
yazici.Items := printer.Printers;
yazici.ItemIndex := 1;
end;

procedure TForm1.Dosya_yazdir(const documentToPrint : string) ;
var
printCommand : string;
printerInfo : string;
Device, Driver, Port: array[0..255] of Char;
hDeviceMode: THandle;
begin

if Printer.PrinterIndex = yazici.ItemIndex then
begin
printCommand := 'print';
printerInfo := '';
end
else
begin
printCommand := 'printto';
Printer.PrinterIndex := yazici.ItemIndex;
Printer.GetPrinter(Device, Driver, Port, hDeviceMode) ;
printerInfo := Format('"%s" "%s" "%s"', [Device, Driver, Port]) ;
end;
ShellExecute(Application.Handle, PChar(printCommand), PChar(documentToPrint), PChar(printerInfo), nil, SW_HIDE) ;
end;

Dosya_yazdir(Dosya_yolu);

boreas

Raporlama araçlarını öneririm.  Şöyle bir sıkıntı yaşamanız muhtemel. 70 dpi baskıya göre hesap yaptınız birisi yazıcı ayarlarını 300e çıkardı ve unuttu ? Bir anda hesaplarınız 4de 1 şaşar quick report ya da fast report gibi uygulamar bu işleri çok daha kolaylaştırıyor.

Salih

Alıntı yapılan: boreas - 21 Şubat 2017, 16:22:11
Raporlama araçlarını öneririm.  Şöyle bir sıkıntı yaşamanız muhtemel. 70 dpi baskıya göre hesap yaptınız birisi yazıcı ayarlarını 300e çıkardı ve unuttu ? Bir anda hesaplarınız 4de 1 şaşar quick report ya da fast report gibi uygulamar bu işleri çok daha kolaylaştırıyor.

Bende tavsiye ederim. Quick report ile çok uğraşmadan, print işlerimi görüyorum.