Fastreport Yazıcı seçme problemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Fastreport Yazıcı seçme problemi

Mesaj gönderen tayipk »

herkese merhaba arkadaşlar yazdığım projede iki ayrı çıktı işlemi olduğu için yazcılıarı ayrı ayrı seçmek durumunda kalıyordum buna kolaylık olsun diye database ime ryazıcı ve barkodyazıcı olmak üzere 2 adet string alan oluşturdum ve program ayarlarındanda sistemdeki yazıcılardan yazıcı seçtiriyorum sorun şurda yazdırma aşamasında aşağıdaki gibi kod yazmama rağmen program hala sistemde tanımlı olan default printere çıktı gönderiyor. halbuki ben veritabanımda bulunan yazıcı adına göndermesini istiyorum kodlarım aşağıdadır sizce nerde hata yapıyorum arkadaşlar yardımlarınıza ihtiyacım var.

Kod: Tümünü seç

frxReport1.PrepareReport(True);
frxReport1.PrintOptions.Printer:=QYazicibyazici.AsString;
frxReport1.Print;
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Fastreport Yazıcı seçme problemi

Mesaj gönderen greenegitim »

uses a printers ekle

Kod: Tümünü seç

function GetDefaultPrinter: string;
var
  ResStr: array[0..255] of Char;
begin
  GetProfileString('Windows', 'device', '', ResStr, 255);
  Result := StrPas(ResStr);
end;
 
procedure SetDefaultPrinter(NewDefPrinter: string);
var
  ResStr: array[0..255] of Char;
begin
  StrPCopy(ResStr, NewdefPrinter);
  WriteProfileString('windows', 'device', ResStr);
  StrCopy(ResStr, 'windows');
  SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@ResStr));
end;

Kod: Tümünü seç

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  //Fill the combobox with all available printers
  Combobox1.Items.Clear;
  Combobox1.Items.AddStrings(Printer.Printers);
  // Get the Default Printer:
  label1.Caption := Format('Default Printer: %s',[GetDefaultPrinter]);
end;
 
procedure TfrmMain.Button2Click(Sender: TObject);
begin
  //Set the selected printer in the combobox as default printer
  if Combobox1.Text <> '' then
    SetDefaultPrinter(Combobox1.Text)
  else ShowMessage('Choose a Printer first !');
end;

Dosya ekleri
delphi_default_printer.zip
default printer
(222.2 KiB) 110 kere indirildi
Mücadele güzelleştirir!
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Fastreport Yazıcı seçme problemi

Mesaj gönderen tayipk »

greenegitim hocam verdiğin cevap için ve gönderdiğim örnek için teşekkürederim fakat bu sadece varsayılan yazıcıyı değiştirme işlemlerinde kullanılabilecek bir örnek ama benim sorunum paylaştığım resimdede belirttiğim gibi program ayarlarından bir kere girecem hangi rapor hangi yazıcıya çıkacak diye ondan sonra sürekli yazıcı değiştirmeden o yazıcıya gönderecek program bunu nasıl yapabilirm.

http://s15.postimg.org/o2xxl1pvf/Ekran_Al_nt_s_23.png
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Fastreport Yazıcı seçme problemi

Mesaj gönderen greenegitim »

raporu yazdırmadan önce default printer ı gönderdiğim örnekteki gibi yazdıracağın yazıcıyı default printer yapman iş görmezmi
yazdıra tıklanınca

Kod: Tümünü seç

varsayılan yazıcıyı değiştir epson yap
frxReport1.PrepareReport(True);
frxReport1.Print;
Mücadele güzelleştirir!
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Fastreport Yazıcı seçme problemi

Mesaj gönderen tayipk »

greenegitim hocam cevabın için tekrar teşekkürederim ama seni yordum hakkını helal et hata tamamen bende ilk düşünmem gerekeni en son düşündüm malum belli bir süreden sonra insan beyni ister istemez kısırdöngüye giriyor. sorunumu şöyle çözdüm kodların başında showmessage olarak yazici değikenime gelen değeri görmek istedim birde farkettim ki değer dönmüyor. meğersem ben programın açılışında sistem ayarlarını tutan queryimi açmayı unutmuşum. program açılışında programayarları queryimi açınca sorunum düzeldi hocam. tekrar hakkını helal et seni yordum. Yardımların için tekrar teşekkürederim.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Cevapla