PDA

View Full Version : تغییر پرینتر



dan
سه شنبه 30 فروردین 1384, 08:23 صبح
سلام به همگی ، وقتی از داخل برنامه پرینتر default را تغییر می دهم تا وقتی برنامه را دوباره اجرا نکرده باشم ،دستورات پرینت به همان پرینتر قبلی ارسال می شوند . آیا چیزی مثل WM_FontChange برای پرینتر وجود دارد تا به اجرای مجدد برنامه نیازی نباشد؟

V60
سه شنبه 30 فروردین 1384, 15:27 عصر
وقتی از داخل برنامه پرینتر default را تغییر می دهم
منظورت اینه که با printdialog کار می کنی؟

dan
چهارشنبه 31 فروردین 1384, 08:43 صبح
خیر منظورم با کد نویسی بود . ببخشید یک سورس کد دیگر پیدا کردم که از WM_WININICHANGE استفاده می کند و دیگر نیازی به خروج از برنامه نیست . مشکل حل شد . :oops:

afshar
یک شنبه 01 خرداد 1384, 14:41 عصر
سلام
میشه لطف کنید سورس کدتان را اینجا بگذارید تا ما هم استفاده کنیم

dan
چهارشنبه 04 خرداد 1384, 08:33 صبح
procedure SetDefaultPrinter(PrinterName: string);
var
I: Integer;
Device: PChar;
Driver: PChar;
Port: PChar;
HdeviceMode: THandle;
aPrinter: TPrinter;
begin
Printer.PrinterIndex := -1;
GetMem(Device, 255);
GetMem(Driver, 255);
GetMem(Port, 255);
aPrinter := TPrinter.Create;
try
for I := 0 to Printer.Printers.Count - 1 do
begin
if Printer.Printers.Strings[i] = PrinterName then
begin
aprinter.PrinterIndex := i;
aPrinter.getprinter(device, driver, port, HdeviceMode);
StrCat(Device, ',');
StrCat(Device, Driver);
StrCat(Device, Port);
WriteProfileString('windows', 'device', Device);
StrCopy(Device, 'windows');
SendMessage(HWND_BROADCAST, WM_WININICHANGE,
0, Longint(@Device));
end;
end;
finally
aPrinter.Free;
end;
FreeMem(Device, 255);
FreeMem(Driver, 255);
FreeMem(Port, 255);
end;