delphi中怎么选择电脑中不同的打印机打印?

 我来答
波光视野
推荐于2018-02-11 · TA获得超过417个赞
知道小有建树答主
回答量:331
采纳率:81%
帮助的人:179万
展开全部
只有二个方法,一是调用API接口类来处理(不要追问我关于API的原理和方法,靠简单地在网上问是代替不了读书的。),直接获取打印机句柄,然后在窗体创建时写入ComBoBox的Items,供选择;
二是声明引用TPrinters类,通过自定义函数取得打印机句柄及其列表,在窗体创建时转入ComBoBox的Items中。
你参考这段代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Printers ,StdCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
//取得本机打印机列表,可不调用。
function GetCurrentPrinterHandle: THandle;

var
Form1: TForm1;
implementation
{$R *.dfm}

function GetCurrentPrinterHandle: THandle;
var
Device, Driver, Port : array[0..255] of char;
hDeviceMode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not OpenPrinter(@Device, Result, nil) then
RaiseLastWin32Error;
end;

//取得本机打印机列表
procedure TForm1.FormCreate(Sender: TObject);
Var
hPrinter : THandle;
begin
hprinter := GetCurrentPrinterHandle; //如果想取得详细的打印机信息,可用此句柄,否删除这行
ComboBox1.Items.Assign(Printer.Printers);
ComboBox1.ItemIndex := 0;//指向第一台打印机
end;
end.
一骑当后
推荐于2016-10-09 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40298 获赞数:306439
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部
1、delphi中,打印机选择如下:
var
mdevice : array[0..255] of char;
mdriver : array[0..255] of char;
mport : array[0..255] of char;
mhdmode : thandle;
mpdmode : pdevmode;
begin
printer.getprinter(mdevice, mdriver, mport, mhdmode);
printer.setprinter('fineprint pdffactory pro', mdriver, mport, mhdmode); //设置打印机

printer.begindoc;
printer.canvas.moveto(0, 0);
printer.canvas.lineto(300, 300);
printer.canvas.textout(20, 20, '打印文字');
printer.enddoc;
end;

2、显示默认打印机

ComboBox1.Text:=printer.Printers[printer.printerindex]
Tprinter.printers.count可以得到打印机数
Tprinter.printers可以得到打印机列表
Tprinter.printerINDEX可以设当前打印机
Tprinter.printerINDEX:=-1可以恢复默认打印机

3、Delphi枚举出系统所有的打印机

在uses中包含prints
procedure Tprintsetform.FormShow(Sender: TObject); //获取系统所有打印机
begin
Memo1.Clear;
memo1.Lines.Assign(Printer.Printers);
if trim(memo1.Text) = '' then
begin
showmessage('没有安装打印机!');
end;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c161d43c7
2013-08-28 · TA获得超过1776个赞
知道小有建树答主
回答量:1227
采纳率:69%
帮助的人:282万
展开全部
有个TPrinterDialog让你选择打印机啊。
追问
不用delphi自己带的控件,自己用combobox选择打印机
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式