问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2023-10-13 12:22

我来回答

3个回答

热心网友 时间:2024-11-26 04:41

只有二个方法,一是调用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;
procere FormCreate(Sender: TObject);
procere 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;

//取得本机打印机列表
procere TForm1.FormCreate(Sender: TObject);
Var
hPrinter : THandle;
begin
hprinter := GetCurrentPrinterHandle; //如果想取得详细的打印机信息,可用此句柄,否删除这行
ComboBox1.Items.Assign(Printer.Printers);
ComboBox1.ItemIndex := 0;//指向第一台打印机
end;
end.

热心网友 时间:2024-11-26 04:41

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
procere Tprintsetform.FormShow(Sender: TObject); //获取系统所有打印机
begin
Memo1.Clear;
memo1.Lines.Assign(Printer.Printers);
if trim(memo1.Text) = '' then
begin
showmessage('没有安装打印机!');
end;
end;

热心网友 时间:2024-11-26 04:42

有个TPrinterDialog让你选择打印机啊。追问不用delphi自己带的控件,自己用combobox选择打印机

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 大学军训一般有什么内容?3 哪里能刻特殊的章,我有一个外圈是英文的,内圈是汉字的,中间有...2 有没有一个只要输入生产日期和保质期就知道商品是否过期的软件2 excel怎样计算商品效期的3分之一。比如A1是生产日期20...5 捷信金融服务有限公司这个公司合法吗,打电话叫我过去面试!有没... 我写了个Delphi打印服务,服务里面用的Printers不... 在WPS excel中,怎么通过食品的生产日期利用公式实现该...1 武汉凯惠置地怎么样 我求职的 请介绍下 超市怎样管理食品生产日期?30 delphi请问怎么选定指定的打印机打印呢?3 捷信中国集团销售代表,明天有吧友去面试么 唐龙集团主要做什么业务,有了解朋友吗?4 捷信销售代表待遇怎么样65 想进UPS实习,有人能告诉我北京UPS人事的电话么?非常感谢2 Delphi中能把窗口打印出来吗 得植物神经紊乱喝中药好还是西药好?1 根据现在的疫情严重性和控制情况,青岛最快多久能去? 房子是两兄弟建的想分户,但土地证是父母的,怎么分11 初学者完成将CAD转换成2018版本后怎么进行分享? 大女儿结婚了准备分户,还没分,可现在农村量房子的把我两套房孑...1 为什么两个人在一起会感觉很累?23 bandai的MG和普通噶bandai有什么据别?1 没有感情的两个人在一起生活,越来越累,有孩子,还不想离婚,这...15 三星s21mg版和其它版有什么区别1 两个人在一起没有感情该不该离婚啊12 登不上,我又注册了一个新的,以前的微号还能找回来吗? 06年热火夺冠阵容??494 购销合同与销售合同有什么区别?419 陀螺旋转的时候为什么不会倒35 请问PG高达和MG高达有什么不同?55 唉,两个人没感情日子过的好累,而他却又不愿意离婚2 和一个没感情的人生活在一起好累4 两个人在一起很累了,还有坚持下去的必要吗?34 中国重庆十大名厨的名字5 一个可以有两个昵称怎么回事? 你们的羊毛大衣每年都会洗吗?干洗还是手洗,感觉清洗好费劲,为什么还要... 农村户口有两兄弟都结婚了又没房怎么分户吗 请风水先生支支招:我爷爷下世后,立祖迁了新坟,大致方向是:在...20 植物神经紊乱吃中药效果怎么样 植物神经紊乱吃中药能治好吗?1