關於自編打印機設置問題(100分)

  • 主题发起人 主题发起人 wn66
  • 开始时间 开始时间
W

wn66

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,大家好:
我剛學delphi,水平很菜,用到delphi中的quickrep控件,現在加一按鈕,當按下時就出
現自編的"打印機設置對話"窗體.現想要得到本機中安裝的打印機信息(如打印機名稱,打印機
端口等),以及窗口中的一些設置信息能起到作用(如打印範圍,份數等),請高手指點.最好有
源代碼.
e-mail:wang66nan@163.com
 
quickrep控件在preview时有该按钮呀。
 
获得打印驱动以及端口名:
uses Printers;
{$IFNDEF WIN32}
const MAX_PATH = 144;
{$ENDIF}
procedure TForm1.Button1Click(Sender: TObject);
var
pDevice : pChar;
pDriver : pChar;
pPort : pChar;
hDMode : THandle;
begin
if PrintDialog1.Execute then
begin
GetMem(pDevice, cchDeviceName);
GetMem(pDriver, MAX_PATH);
GetMem(pPort, MAX_PATH);
Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);
if lStrLen(pDriver) = 0 then
begin
GetProfileString('Devices', pDevice, '', pDriver, MAX_PATH);
pDriver[pos(',', pDriver) - 1] := #0;
end;
if lStrLen(pPort) = 0 then
begin
GetProfileString('Devices', pDevice, '', pPort, MAX_PATH);
lStrCpy(pPort, @pPort[lStrLen(pPort)+2]);
end;
Memo1.Lines.Add('Device := ' + StrPas(pDevice));
Memo1.Lines.Add('Driver := ' + StrPas(pDriver));
Memo1.Lines.Add('Port := ' + StrPas(pPort));
FreeMem(pDevice, cchDeviceName);
FreeMem(pDriver, MAX_PATH);
FreeMem(pPort, MAX_PATH);
end;
end;
 
实在不行的话,可以调用printsetupdialog使用呀。不用搞得那么复杂吧。
 
我現在是想自編一打印機設置窗口,不用delphi自帶的功能
 
那你可以用修该注册表的方法。我先找一找键值。
 
HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/WINDOWS(WINDOWS NT)/CURRENTVERSION/PRINT/PRINTERS/YOUR PRINTER NAME
下有你印表机的的一些参数,
你可以用修该注册的参数来设定。
 
同意楼上
 
接受答案了.
 
后退
顶部