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.
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;
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;
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.
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.