用C++Builder轻松创建票据套打组件
来源:互联网 发布:centos安装idea 编辑:程序博客网 时间:2024/06/05 18:07
在网页中实现票据套打的方法很多,但开放源代码的并不多,在这里提供一种简单的方法实现简单的票据打印供大家参考。
开发工具:Borland C++Builder 6.0
1、打开C++Builder,点击菜单File>>Close All关闭系统自动创建的Application,当然,这一步也可以不需要,直接进行下面的一步;
2、点击菜单File>>New>>Other,在NewItems对话框中点击ActiveX标签页,点击ActiveX Library,接着点击OK,就完成了ActiveX库的建立;
3、点击菜单File>>New>>Other,在NewItems对话框中点击ActiveX标签页,点击Automation Object,接着点击OK,弹出New Automation Object对话框,在CoClassName中输入TestPrint,Threading Model选择Apartment,在Description中填入对于这个ActiveX的描述,点击OK,这样就完成了自动化对象的建立;
4、把上面所建立的项目保存,项目暂且叫做TestPrint,CoClass的命名千万不能和项目名一致,暂且命名为CCTestPrint,保存后的界面大致如下图:
在左边导航栏中点击CCTestPrint(TestPrint的CoClass),右边的GUID便是由C++Builder自动生成的该接口的全球唯一标识;
5、在左边导航栏中点击ITestPrint,点击上面工具栏中的New Method,命名为PrintOpen,如此炮制PrintText、PrintClose两个方法,点击工具栏中Refresh Implementation,这时在CCTestPrintImpl.cpp文件中会相应地出现三个方法的定义;
6、分别为上面创建的三个方法添加参数,点击PrintOpen方法,右边会出现Parameters标签页,Return Type为HRESULT,Parameters>>Name填入PrintTitle,Parameters>>Name填入BSTR,Parameters>>Modifier填入[in],最后点击工具栏中的Refresh Implementation并保存,就完成了PrintOpen方法的参数定义,三个方法参考如下定义:
PrintOpen(BSTR PrintTitle);
PrintText(long PrintX, long PrintY,
BSTR PrintFontName, long PrintFontSize, BSTR PrintText);
PrintClose();
定义完成后在即可在CCTESTPRINTIMPL.CPP文件中看到增加了如下代码段:
{
}
STDMETHODIMP TCCTestPrintImpl::PrintText(long PrintX, long PrintY,
BSTR PrintFontName, long PrintFontSize, BSTR PrintText)
{
}
STDMETHODIMP TCCTestPrintImpl::PrintClose()
{
}
7、定义方法完成后,即可实现该方法了,在CCTESTPRINTIMPL.CPP文件中对照相应的方法写入如下代码:
{
Printer()->Title = PrintTitle;//打印标题
Printer()->BeginDoc();//开始打印
return S_OK;
}
STDMETHODIMP TCCTestPrintImpl::PrintText(long PrintX, long PrintY,
BSTR PrintFontName, long PrintFontSize, BSTR PrintText)
{
Printer()->Canvas->Font->Name = PrintFontName;//打印字体,名称
Printer()->Canvas->Font->Size = PrintFontSize;//打印字体大小
Printer()->Canvas->Brush->Style = bsClear;//打印背景透明
Printer()->Canvas->TextOut(PrintX,PrintY,PrintText);//打印文本,PrintX为打印横坐标,PrintY为打印纵坐标,PrintText为需要打印的文本
return S_OK;
}
STDMETHODIMP TCCTestPrintImpl::PrintClose()
{
Printer()->EndDoc();//结束打印
return S_OK;
}
8、点击C++Builder主菜单上的Project>>Options,选择Packages标签页,将Build with runtime packages前面的勾去掉,再点击Linker标签页,将Use Dynamic RTL前面的勾去掉,点击OK并保存项目,这样做是为了让生成的ActiveX组件能够脱离C++Builder的开发环境而运行,最后点击主菜单上的Project>>Build TestPrint,在项目文件夹下会找到TestPrint.dll文件,这个就是套打的ActiveX组件;
9、ActiveX组件生成了,如何调用呢?首先在DOS下注册上面生成的TestPrint.dll文件,即输入命令regsvr32 d:/TestPrint.dll,注册成功后可以在HTML文件中写入如下JavaScript代码:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>TestPrint Control</title>
<object classid="clsid:********-****-****-****-************" id="TestPrint">
</object>
</head>
<script language="javascript" type="text/javascript">
function TestPrint()
{
try
{
TestPrint.PrintOpen("打印测试");
TestPrint.PrintText(100,100,"宋体",10,"你好!世界!这是套打测试!Hello World!");
TestPrint.PrintText(100,200,"黑体",15,"你好!世界!这是套打测试!Hello World!");
TestPrint.PrintText(100,300,"楷体_GB2312",20,"你好!世界!这是套打测试!Hello World!");
TestPrint.PrintText(100,400,"华文行楷",45,"你好!世界!这是套打测试!Hello World!");
TestPrint.PrintText(100,500,"华文彩云",50,"你好!世界!这是套打测试!Hello World!");
TestPrint.PrintText(100,600,"隶书",35,"你好!世界!这是套打测试!Hello World!");
TestPrint.PrintClose();
}
catch(e)
{
alert(e);
}
}
</script>
<body>
<form id="form1" name="form1" method="post" action="">
<input type="button" name="Test" value="打印" onclick="TestPrint()" />
</form>
</body>
</html>
然后打开这个HTML文件并点击按钮,打印是不是成功了?
注意:<object classid="clsid:********-****-****-****-************" id="TestPrint">中的星号就是前面说到的C++Builder自动生成的GUID;
10、在打印的时候IE会弹出一个对话框说ActiveX不安全,那就在CCTestPrintImpl.h文件中添加一段“脚本安全”和“初始化安全”代码:
BEGIN_COM_MAP(TCCTestPrintImpl)
COM_INTERFACE_ENTRY(ICCTestPrint)
COM_INTERFACE_ENTRY2(IDispatch, ICCTestPrint)
END_COM_MAP()
/*这段代码是添加的*/
BEGIN_CATEGORY_MAP(TCoClassCPrintImpl)
IMPLEMENTED_CATEGORY(CATID_SafeForScripting)
IMPLEMENTED_CATEGORY(CATID_SafeForInitializing)
END_CATEGORY_MAP()
然后重新编译并注册TestPrint.dll这个文件,最后再试试,是不是打印成功了?如果打印成功了,那你就可以利用这个ActiveX组件进行简单的票据套打了,如果需要发布成cab文件便于客户端更新和下载,可以使用IEXPRESS进行打包,这里就不详细介绍了。
- 用C++Builder轻松创建票据套打组件
- LODOP票据套打
- jquery PrintArea 实现票据的套打
- 使用皕杰报表进行票据等的套打
- iReport3.7轻松实现套打布局
- 采用JXL+JCom轻松实现凭证套打
- 发票套打源码(WinForms C#+SQL2000)
- 套打
- 套打
- [C++] 用C++ Builder创建数字签名
- c#调用word com组件 替换书签套打
- 实现票据套打小程序
- c++builder安装ocx组件
- 巧用背景图实现精确套打
- 什么是套打 水晶报表套打
- c#中的套打
- 发票套打解决方案
- 信封套打 下载
- 为方便调试程序查看结果 而写的控制台输出类[继承CWnd]
- 异步调用Web Service的方式
- 追不上技术的脚步了
- java.sql.date 与 java.util.date及使用方法
- [NET]VS.NET多线程控制语句
- 用C++Builder轻松创建票据套打组件
- Struts2与Struts1的对比
- 不太常用的正则表达式
- 图形验证码的破解与设计
- 浅谈HashMap
- 讨论:在用Visual C#编程时,大家觉得“类”中是用“索引器”好还是用“属性”好?
- Struts2新特性预览
- 保护 ASP.NET 应用程序的安全
- Struts密籍__铁手总结