fast report 4.0.11 找不到共享打印的问题,奇怪了!! ( 积分: 200 )

  • 主题发起人 主题发起人 hnljh190
  • 开始时间 开始时间
H

hnljh190

Unregistered / Unconfirmed
GUEST, unregistred user!
我用fast report 4.0.11做的报表,在打印的时候 找不到网络上共享的打印机
但是可以找到本机上连接的打印机;
而且网络上共享的打印机打印execl什么的是没有问题的
郁闷了 请各位走过路过的富翁 给点意见
 
你应该先将网络上共享的打印机添加到本地打印列表中。
 
谢谢kaida
在打印列表里面已经有了,不知道是不是驱动的问题
怎么在有的机器上添加网络打印机的时候 他不需要装驱动 ,不知道是不是因为没有装驱动引起的
 
应该是你打印机没装好,
FR不会有这么低级的错误的。
 
也是啊 网上找了一圈 都没有发现有谁有这样的问题
真是见鬼了
还是整整驱动看看
 
最好还将网络打印机设置为 本机的默认打印机
 
现在问题是这样的了
打印机装在xp系统下面,如果是另外一太机器是xp的系统,安装网络打印机的时候,回提示从装装打印机的哪个系统安装驱动,这样装好的网络打印机,可以在fast report中找到 ,如果另外一台机器是2000的系统 则安装网络打印的时候 没有提示安装驱动,这样装好的网络打印机则找不到,
郁闷,对打印机的设置了解得太少了
我怎么样在安装2000的网络打印机的时候 让它装上驱动那?
ps:直接在2000下装驱动的话,也找不到;
 
问题解决了,在fast report 资源中 找到 frxPrintter.pas 文件有这样一个过程
procedure TfrxPrinters.FillPrinters;
var
i, j: Integer;
Buf, prnInfo: PChar;
Flags, bufSize, prnCount: DWORD;
Level: Byte;
sl: TStringList;
procedure AddPrinter(ADevice, APort: String);
begin
FPrinterList.Add(TfrxPrinter.Create(ADevice, APort));
FPrinters.Add(ADevice);
end;

begin
Clear;
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
Flags := PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL;
//Level := 5;
Level := 4;
end
else
begin
Flags := PRINTER_ENUM_LOCAL;
Level := 5;
end;

bufSize := 0;
EnumPrinters(Flags, nil, Level, nil, 0, bufSize, prnCount);
if bufSize = 0 then
Exit;
GetMem(Buf, bufSize);
try
if not EnumPrinters(Flags, nil, Level, PByte(Buf), bufSize, bufSize, prnCount) then
Exit;
prnInfo := Buf;
for i := 0 to prnCount - 1do
if Level = 4 then
with PPrinterInfo4(prnInfo)^do
begin
AddPrinter(pPrinterName, '');
Inc(prnInfo, SizeOf(TPrinterInfo4));
end
else
with PPrinterInfo5(prnInfo)^do
begin
sl := TStringList.Create;
frxSetCommaText(pPortName, sl, ',');
for j := 0 to sl.Count - 1do
AddPrinter(pPrinterName, sl[j]);
sl.Free;
Inc(prnInfo, SizeOf(TPrinterInfo5));
end;

finally
FreeMem(Buf, bufSize);
end;
end;
这个段就是查找打印机的,其中的Level是判断是以那种方式 返回打印机的信息,如果Level=5,在win2000下就返回不了网络打印机的信息,如果为4则可以返回,在delphi的printer模块中也是在winnt的操作系统以level=4来做为返回信息的.
不知道在这个版本的fastreport中谁把他改了level=5 所以就找不网络打印机
将其修改为4就解决了这个问题
 
多人接受答案了。
 
后退
顶部