网页上“打印”网页上打印按钮没反应应

急,在线等。。 本人的电脑要运行一个网页打印程序。点击打印按钮后总是弹出这个警告信息: 以不安全的方式使用ActiveX控件
[问题点数:100分,结帖人zhoubohua]
本版专家分:2
结帖率 100%
CSDN今日推荐
本版专家分:2
本版专家分:1872
本版专家分:36059
2009年5月 Web 开发大版内专家分月排行榜第一2009年4月 Web 开发大版内专家分月排行榜第一
本版专家分:2
本版专家分:11960
本版专家分:2
本版专家分:62520
2011年5月 Web 开发大版内专家分月排行榜第一2011年4月 Web 开发大版内专家分月排行榜第一
2010年5月 Web 开发大版内专家分月排行榜第二2009年8月 Web 开发大版内专家分月排行榜第二2009年7月 Web 开发大版内专家分月排行榜第二2007年10月 Web 开发大版内专家分月排行榜第二2007年9月 Web 开发大版内专家分月排行榜第二
2009年9月 Web 开发大版内专家分月排行榜第三
本版专家分:24402
2008年11月 Web 开发大版内专家分月排行榜第三
本版专家分:2
本版专家分:2
本版专家分:0
本版专家分:0
匿名用户不能发表回复!
其他相关推荐
一般的业务场景里,只需要将pdf文件下载到本地,然后打开直接打印就可以了。但是,有的场景会考虑到pdf文件的敏感性,需要pdf文件不能被下载,只能打印且只能打印一次,这就需要考虑使用控件了。
基于MFC的ActiveX控件,主要功能是加载图片进行局部放大。
Demo小样:一、放大控件的设计过程1.新建MFC ActiveX项目
2.添加对话框MyDlg类,对话框ID为IDD_MYDLG;
3.在控件类CActiveXDemoCtrl类中进行改写如下函数
在CActiveXDemoCtrl.h声明对话框类的变量CMyDlg m_
改写OnCreate方法
昨天接到一个bug,我们的软件有一个浏览器activeX插件,在html页面里面显示附件列表,支持直接拖放文件,这个控件在浏览的时候挺正常,但是如果使用IE的网页打印预览功能,那个控件就有一块是空白。 刚拿到这个问题确实让我挺挠头,完全不知道从哪下手。不过通过分析代码,发现是这个控件里面的一个list control没画出来,跟了一下activex控件的ondraw方法,发觉里面没有对list c
关闭是否只查看安全传送的网页内容提示框最新编写 爬虫程序,运行程序后,电脑就总是出现下面这个提示框,一遍遍点“是”或“否”繁琐又麻烦。我看得有点不耐烦了。于是就想个办法不让这个提示框总是出来提示。解决办法:启动 Internet Explorer 浏览器:对于这个提示框。点击 否然后弹出下面的提示框,点击 “是” 就可以:之后就不会再出现了下面这个窗口了:但是会出现另外一个问题:电脑之后就一次出现这
在登入系统之后,系统会自动加载控件,所以浏览器安全级别太高的话是无法加载的,所以要对浏览器进行设置,下面是在加载控件时经常出现的错误,如图5-1和图5-2。
图5-1 ActiveX控件已被阻止
图5-2交互不安全的提示
浏览器设置方法:
1.将登录站点加入受信任站点;
图5-3添加信任站点
2、将受信任站点的安全级别降低,然后还必须把所有
//在包含DllRegisterServer和DllUnregisterServer函数的cpp文件中加入以下代码
//加入一个新的头文件
//以下GUID为为当前使用的组件的GUID
const GUID CDECL CLSID_SafeItem ={ 0x6a3227ec, 0x4, { 0x82, 0xee, 0x29, 0x9d, 0xd, 0x
如果想在页面中,点击打印按钮,打印出相应的内容,
如下图所示:
可以借助一下面的代码来实现(本人工作中上线的功能)
function promotion_demotion_print() {
//待渲染的html部分信息
var str = ''
str += ''
str += ''
str += ''
function startprint(url) {
if (window.print && window.frames && window.frames['printerIframe']) {
var html = '';
html = '';
html += '';
html += '';
html += 'function set_print(){';
1.1.0.121 版的控件,更新如下   SetPrintBackground 已被取消
SetMediaHeader
去掉了两个参数,见被划掉的文字部分
在做项目中发现要用到Web方面的打印,于是从网上搜索了一些相关的web打印控件,有scriptx,jatoolsPrinter等,不过都不是免费的,想想还是自己做的好,毕竟这不是
工资管理系统
工资管理系统是提供给财会人员使用的一个对单位职工工资进行管理的系统。它能自动对在职人员和离退人员的工资、个人所得税金和公积金进行管理,并生成多种相关的财务报表。
用户需求分析(设计要求)
开发一个应用程序是一个逐步实践的过程。其中最重要的是应用程序模型分析和客户需求分析。应用程序应该做成什么样并没有一个确切的标准,但至少应该包括两个方面:第一,是否满足用户的需求:第二,系统运行性能是否稳定。实现上述目标的关键是首先要与用户有很好的沟通,充分理解用户的需求,其次是合理组织数据,然后利用VisualFoxPro提供的强大的功能皖成整个应用程序的设计。
工资管理系统用户需求的主要功能有:
(1)人员的调入与调出。
在一个单位中,人员的调入与调出或者人员在部门之间调动(内调)以及人员的离退都
是十分常见的。反应在工资管理系统中必须具备人员基本信息的增加、修改和删除等功能。
(2)工资数据的生成。
此功能包括两个部分:第一,在开始应用工资管理系统第一个月的工资数据是手工按
部门逐个人员输入的:第二,以后每月工资数据是以上个月或者上一年同月的工资数据为
参考由系统自动生成,然后进行适当的调整。
(3)多种工资报表的生成打印。
报表包括职工工资条清单、工资明细清单、部门工资汇总表和个人所得税清单等。
(4)个人和部门工资情况的查询与统计。
(5)用户界面要求。
用户界面应美观、简洁,操作方便。
系统总体设计
根据设计要求,画出了系统的结构图如图1.1.1所示。
图1.1.1工资管理系统的结构
建立应用程序项目
1.新建文件夹
新建一个文件夹(如:c:\工资管理)作为程序设计时的工作目录。根据需要在新建的工作目录下再创建一些子目录,用宋分别保存源文件。如\data\文件夹用来保存数据库文件及表文件,\forms\文件夹用来保存表单文件,中\pictures\文件夹用来保存图片文件,\icon\文件夹用来保存图标文件,\reports\文件夹用来保存报表和标签文件,\libs\文件夹用来保存类或资源库文件,\reports\文件夹用宋保存过程和.prg文件,\menus\文件夹用来保存菜单文件,\helps\文件夹用来保存系统帮助文件等。总之,所建文件夹要一目了然,养成一个良好的编程习惯。新建的文件夹如图1.1.2所示。
图1.1.2新建文件夹
2.设置默认选项。
在建立好工作目录之后,运行Visual FoxPro,选择菜单“工具/选项…”,在选项对话框中单击“表单”选项卡,设置最大设计区为:1024 X 768,如图1.1.3所示。单击“文件属性”选项卡,在“文件类型”列表框中选择“默认目录”,单击“修改”按钮,选择“使用默认目录”,并在定位默认目录栏的文本框中选择工作目录,如图1.1.4所示,例如将默认目录设置为c:\工资管理,单击“确定”按钮。单击“设为默认值”按钮,这样在每次启动Visual Foxpro 时当前的默认目录就会自动定位所设定的工作目录,表单的最大设计区大小为像素.最后单击“确定“按钮退出选项设置.
选项对话框
更改默认文件位置
3.新建项目。
新建一个项目文件并命名为“工资管理.pjx”,保存在“C:\工资管理”文件夹下,如图1.1.5所示。
新建“工资管理”项目
1.1.5建立数据库及数据库表的结构
1.建立数据库。
打开“工资管理”项目管理器。单击“数据”选项卡,新建数据库并保存在“data\工资.dbc”文件中.
2.立数据库表。
在“正资”数据库中分别建立4个数据库表“BM.dbf”、“GZ.dbf” 、“DWXX.dbf”和“CZY.Db”,表的基本结构如表1.1.1~表1.1.4所示。
(1) “BM.dbf” 表。
“BM.Dbf”表用于保存单位各部门名称信息。
“BM.Dbf”的基本结构
字段 字段名 类型 宽度 小数 字段说明(标题)
1 BMMC 安符型 12
说明:建立以BMMC为关键字段的普通索引,名称为BMMC,在表设计器中的设计
界面如图1.1.6所示。
表设计器中的设计界面
(2)“GZ.Dbf”表。
“GZ.Dbf”表用于保存工资数据。
表中工资数据存在的主要计算关系如下所示:
应发工资:YFGZ=ZDGZ+JT+BT+HMBT+DHBT+JTBT+ZGJT+TSJT+QTSR
扣款合计:KKHJ=KSD+KYB+KEB+KTC+KGJ+KSJ+KQT
实发工资:SFGZ=YFGZ-KKHJ
对于在职人员:扣公积: KGJ=YFGZ×10%;
JSGZ-KGJ-DHBT-JTBT
KSJ=(JSGZ-880)×各档个人所得税百公比(其中880为应交个人所得税基数).
说明:对于离退人员:KGJ、JSGZ、KSJ均为0;建立以BMMC为关键字段的索引,名称为BMMC;建立以XM为关键字段的索引,名称为XM。
“GZ.dbf”的基本结构
字段 字段名 类型 宽度 小数 字段说明(标题)
2 MM 日期型 2
3 RQ 字符型 8
4 BMMC 字符型 12
5 XM 字符型 8
6 YHZH 字符型 20
7 GJJH 字符型 10
公积金帐号
8 ZDGZ 数值型 10 2 职等工资
9 JT 数值型 10 2 津贴
10 BT 数值型 10 2 补贴
11 HMBT 数值型 10 2 伙煤补贴
12 DHBT 数值型 10 2 电话补贴
13 JTBT 数值型 10 2 交通补贴
14 ZGJT 数值型 10 2 职岗津贴
15 TSJT 数值型 10 2 特殊津贴
16 QTSR 数值型 10 2 其他收入
17 YFGZ 数值型 10 2 应发工资
18 KSD 数值型 10 2 扣水电
19 KYB 数值型 10 2 扣医保
20 KEB 数值型 10 2 扣儿保
21 KTC 数值型 10 2 扣统筹
22 KGJ 数值型 10 2 扣公积
23 JSGZ 数值型 10 2 计税工资
24 KSJ 数值型 10 2 扣税金
25 KQT 数值型 10 2 扣其他
26 KKHJ 数值型 10 2 扣款合计
27 SFGZ 数值型 10 2 实发工资
28 RYLX 字符型 4
人员类型(在职/离退)
“DWXX.dbf”的基本结构
字段 字段名 类型 宽度 小数 字段说明(标题)
1 DWMC 安符型 40
2 DWFZR 安符型 8
单位负责任人
3 CWZG 安符型 8
“CZY.dbf”的基本结构
字段 字段名 类型 宽度 小数 字段说明(标题)
1 CZYXM 字符型 8
操作员姓名
2 CZYKL 字符型 6
3 CZQX 数值型 1
1为管理员,0为一般操作员
(3)“DWXX.Dbf”表。
“DWXX.Dbf”表用于保存使用单位的基本信息。
(4)“CZY.Dbf”表。
“CZY.Dbf”表用于保存操作人员的基本信息。
在表的设计过程中,应注意以下几点:
1)文件、字段和索引的命名方法。
在建立数据库和数据库表的过程中,文件、字段和索引命名除了要规范以外,重要的
一点还要根据其表示的实际内容来命名,如取其名称的汉语拼音的声母或用英文单词命名
都是很好的命名方法。
2)在设计表时为字段加上汉字标题内容,用以标注该字段存储的内容。
3)字段的宽度、数字型字段的整数和小数位数等要多与用户交流,全面考虑。
4)为数据库中的每一个表加上适当的注释,以便程序编码及表的维护。
5)将数据库中所有表的结构打印出来备查。
6)数据库中的视图和查询在编写查询模块时再根据需要建立。
设计用户界面
一个完整的MIS系统一般包括数据和程序两个部分。数据是基础,是程序操作的对象。而程序对数据的修改和查询等处理总有一个交互的用户操作界面。用户对应用程序是否满意很大程度上取决于界面功能是否完善。在设计建立好数据库后,接下来是利用表单界面来完成对数据的操作。
1.设计表单
(1)创建单位基本信息设置表单。
单位基本信息设置表单的运行结果如图1.1.7所示。
1)创建单位基本信息设置表单“DWXX.scx”.
打开工资管理项目管理器,单击“文档”选项卡新建系统单位信息设置表单,保存为C:\工资管\forms\DWXX.scx文件。
2) 表单数据环境的非缺省和表单的非缺省属性.
数据环境的非缺省属性和表单非缺省属性设置分别如图1.1.8和图1.1.9所示
单位基本信息设置表单数据环境的非缺省属性
图1.1.9单位基本信息设置表单的非缺省属性
3)表单中主要控件的属性和事件代码.
表单中使用了四个标签、三个文本框、三个命令按钮和一个形状控件Shapel,其中形状控件Shape1用来美化界面。
表单中标题标签Labell的阴影效果的形成并不是用两个标签重叠而成,而是巧妙地使用了标签的DisableForeColor及Enabled属性,如图1.1.10所示。
表单中标题标签Labell的属性
三个标签及三个文本框可打开数据环境后直接将DWXX表中的字段拖放到表单的适当位置,这里还可以发现文本框前的标签内容就是在设计表结构时字段的标题,个分方便快捷。
命令按钮cmdsave
PROCEDURE cmdsave.Click
Select dwxx
=tableupdate(.t.)
&&更新启用开放式表缓冲表dwxx中的数据
thisform.refresh
&&窗口刷新
命令按钮cmdcancel
PROCEDUREcmdcancel.Click
selectdwxx
=tablerevert(.t.)
&&还原启用开放式表缓冲表dwxx中的数据
thisform.refresh
&&窗口刷新
命令按钮cmdquit
ROCEDUREcmdquit.Click
selectdwxx
=tableupdate(.t.)
&&更新启用开放式表缓冲表dwxx中的数据
thisform.release
&&关闭表单
(2)创建系统操作人员信息设置表单。
操作人员信息设置表单的运行结果如图1.1.11所示。
系统操作人员信息设置表单的运行结果
1)创建系统操作人员信息设置表单。
打开“工资管理”项目管理器,单击“文档”选项卡新建表单,保存为C:\工资管理\forms\CZYFRM.scx。编辑说明内容为:系统操作人员信息设置。
2)表单的数据环境非缺省属性和表单的非缺省属性。
数据环境的非缺省属性和表单非缺省属性设置分别如图1.1.12和图1.1.13所示。
系统操作人员信息设置表单数据环境及非缺省属性
3)表单中主要控件的属性和事件代码。
标签 Labell
AutoSize:.T.
FontSize:16
Caption:&系统操作人员信息设置&
Enabled=.F.
DisabledForeColor=RGB(0,0,255)
Name=&Label1&
系统操作人员信息设置表单的非缺省属性
表格控件grdCzyr的属性设置如图1.1.14
表格 grdCzyr 的非缺省属性
说明:打开表单的数据环境,直接将表CZY的标题拖到表单设计窗口中,即可生成表格grdCzy,然后右击表格,单击弹出菜单的“编缉”菜单项,如图1.1.15所示, 即可对表格进行编辑,包括列宽、列高、标题和行高等属性的设置,直到满意为止。
对表格grdCzy进行编辑修改
命令按钮cmdadd
PROCEDURE cmdadd.Click
Select czy
Append blank
thisform.grdczy.setfocus
&&焦点转移到表格
thisform.refresh
&&表单刷新
命令按钮cmddelete
PROCEDURE cmddelete.C1ick
Select czy
if!eof().or!bof()
if messagebox(&确实删除操作人员:[&+allt(c2y.czyxm)+ &]?&32十1十256,&系统信息&)==1
thisform.grdczy.setfocus
&&焦点转移到表格
thisform.refresh
&&表单刷新
命令按钮cmdsave
PROCEDUREcmdsave.Click
=tableupdate(.t.)
&&更新数据
thisform.grdczy.seffocus
&&焦点转移到表格
thisform.refresh
&&表单刷新
命令按钮cmdadd
PROCEDUREcmdcancel.Click
tablerevert(.t.)
&&更新数据
thisform.grdczy.setfocus
&&焦点转移到表格
thisform.refresh
&&表单刷新
命令按钮emdquit
PROCEDUREcmdquit.Click
=tablerevert(.t.)
&&数据还原
thisform.release
&&关闭表单
表格中第一列(操作人员姓名)中的文本框textl
PROCEDUREtextl.Valid
If empty(this.value)then
messagebox(&操作人员姓名不能为空! &,48,&系统信息&)
表格中第三列(操作权限)中文本框text1
PROCEDUREtext1.Valid
if this.value&&&l&.and.this.value&&&O& then
messagebox(&操作权限只能为:1-管理员权限,0-一般操作人员! &,48,&系统信息&)
replczy.czqxwith”0”
(3)创建单位部门信息设置表单。
单位部门信息设置表单的运行结果如图1.1.16所示。
单位部门信息设置表单运行结果
1)创建单位部门信息设置表单。
在工资管理项目管理器单击“文档”选项卡,新建“单位部门信息设置”表单
为C:\工资管理\forms\BMFRM.scx文件。
2)表单的数据环境的非缺省属性和表单的非缺省属性。
数据环境的非缺省属性和表单非缺省属性设置分别如图1.1.17和图1.1.18所示
单位部门信息设置表单数据环境及非缺省属性
单位部门信息设置表单的非缺省属性
3) 表单中主要控件的属性和事件代码。
● 表格 grdbm
ColumnCount=1
DeleteMark=.F.
HeaderHeight=32
Height=162
RecordSource=&bm&
RecordSourceType=1
RowHeight=21
SplitBar=.F.
Name=&grdBm&
Columnl.Width=133
C01Limnl.Name:&Columnl&
表格中第一列标题grdbm.columnl.header1
Alignment=2
Caption=&部门名称&
Name=&Headerr&
表格中第一列文本框grdbm.cOlumnl.Iext1
BorderStyle=0
ForeColor=RGB(0,0,0)
BackColor=RGB(255,255,255)
Name=&Text1&
PROCEDURE textl.Valid
if empty(this.Value)then
messagebox(&部门名称不能为空!&,48,&系统信息&)
=tablerevert(.t.)
&&取消修改
thisform.refresh
&&表单刷新
命令按钮CmdAdd
Caption=&增加(\&A) &
Name=&CmdAdd&
PROCEDURE cmdadd.Click
append blank
replbm.bmmc with&新部门&
thisform.grdbm.sefrocus
&&焦点转移到表格
thisform.refresh
&&表单刷新
命令按钮CmdDelete
Caption=&删除0<D=&
Name:&CmdDelete&
PROCEDUREcmddelete.Click
if!empty(bm.bmmc)then
&&部门名称不为空
ifmessagebox(&确实删除此部门:[&+allt(bm.bmmc)+&]?&,32+1+256,&系统信息&)==1
thisform.grdbm.setfocux
&&焦点转移到表格,
thisform.refresh
&&表单刷新
命令按钮CmdSave
Caption=&保存(\<S= &
Name=&CmdSave&
PROCEDUREcmdsave.Click
=tableupdate(.t.)
&&更新数据
thisform.grdbm.setfocus
&&焦点转移到表格
thisform.refresh
&&表单刷新
命令按钮CmdCancel
Caption=&取消0<C) &
Name=&CmdCancel&
PROCEDURE cmdcancel.Click
=tablerevert(.t.)
&&更新数据
&&移动记录指针到最后一条记录
thisform.grdbm.setfoells
&&焦点转移到表格
thisform.refresh
&&表单刷新
命令按钮CmdQuit
Caption=&退出\<Q=&
Name=&CmdQuit&
PROCEDURE cmdquit.Click
=tablerevert(.t.)
&&数据还原
thisform.release
&&关闭表单
(4)创建工资表生成及调整表单。
工资表生成及调整表单的运行结果如图1.1.19所示。
工资表生成及调整表单运行结果
1)创建工资表生成及调整表单。
打开工资管理项目管理器,单击“文档”选项卡,新建表单GzFrm,保存为C:\工
资管理\forms\GZFRM.sdx文件,其说明内容为工资表生成及调整。
2)表单数据环境的非缺省属性和表单的非缺省属性。
数据环境的非缺省属性和表单非缺省属性设置分别如图1.1.20和图1.1.21所示。
工资表生成以及调整表单数据环境及非缺省属性
3)表单中主要控件的属性和事件代码。
表单中主要控件的功能如表1.1.5所示。
表单中主要控件的属性和事件代码如下所示。
工资表生成以及调整表单的非缺省属性
表单中主要控件的功能
控件 Name属性 功能
文本框 Y1 参考工资年份
微调按钮 M1 参考工资年份
微调按钮 Y2 发放工资年份
微调按钮 M2 发放工资年份
命令按钮 ToNext 用于生成新的工资数据
文本框 QT1 其值用于批量修改本月其他收入数值
文本框 QT2 其值用于批量修改本月其他扣款数值
命令按钮 Cmd_Qtsr 用于批量更改本月其他收入
命令按钮 Cmd_Kqt 用于批量更改本月其他扣款
表格 GrdGz 用于显示、修改工资数据。
进度条(为ActiveX控件) ProgessBar 显示由参考月生成本月工资历数据时的进度
命令按钮 CmdIn 人员调入增加
命令按钮 CmdOut 人员调出增加
命令按钮 CmdSave 保存工资数据的修改
命令按钮 CmdCancel 取消对工资数据的修改
命令按钮 CmdQuit 退出关闭表单
Alignment=3
Value=(year(date()-30))
Format=&9&
InputMask=&9999&
微调按钮M1
KeyboardHighValue=12
KeyboardLowValue=1
SpinnerHeighValue=12.00
SpinnerLowValue= 1.00
Value=(month(date()-30))
微调按钮Y2
InputMask=&9999&
KeyboardHighValue=2050
KeyboardLowValue=2002
Value=(year(date())
微调按钮M2
KeyboardHeighValue=12
KeyboardLowValue=1
SpinnerHighValue=12.00
SpinnerLowValue=1.00
Value=(month(date())
m2.InteracriveVhange
Set filter to yy=thisform.y2.value.and.mm=thisform.m2.value
&&只显示本年
*本月发放的工资数据
thisform.refresh
进度条ProgressBar(ActiveX控件)
Name=”ProgressBar”
表单Int事件
PROCEDURE Init
Set filter to yy=thisform.y2.Value.and.mm=thisform.m2.valUe
*本年本月发放的工资数据
thisform.refresh
命令按钮&生成按钮&tonest.Click事件代码
PROCEDURE tonest.Click
set filter to
&&取消过滤条件
locate for,gz.yy=thisform.y1.value.and.mm=thisform.m1.Value
&&是否存在满足条件的数据
if eof() then
messagebox(&对不起,没有所选参考工资数据!”,48,&系统信息&)
&&存在参考工资数据
if messagebox(&是否确认生成新的工资表? &,32十1十256,&系统信息&)==1then
Select*from gz wherevyy=thisform.y1.Value.and.mm=thisform.m1.
cursormyquery
&&复制参考工资记录到临时表myquery
Selectmyquery
count to nreccount
&&计算参考工资记录总数
thisform.ProgressBar.max=nreccount
&&用来记录状态条的当前值
scan for gz.yy=thisform.y1.value.and.mm=thisforlm.m1.value
&&扫描复制参考工资数据
append blank
repl gz.yy with thisform.y2.value
repl gz.mm with thisfOrm.m2.Value
repl gz.rq withdate()
fepl gz.bmmc
myquery.bmmc
repl gz.xm
myquery.xm
repl gz.yh2h
myquely.yhzh
repl gz.gjjh
myquefy.gjjh
repl gZ.zdgz
myquery.zdgz
repl gz.jt
myquery.jt
repl gz.bt
mYquery.bt
repl gz.hmbt
myquery.hmbt
repl gz.dhbt
myquery.dhbt
repl gz.jtbt
myquery.jtbt
repl gz.zgjt
myquery.zgjt
repl gz.tsjt
myquery.tsjt
repl gz.qtsr
myquery.qtsr
repl gz.yfgz
myquery.yfgz
repl gz.kyd
myquery.ksd
repl gz.kyb
myquery.kyb
fepl gz.keb
myquery.keb
repl gz.ktc
myquery.ktc
repl gz.kgj
myquery.kgj
repl gz.jsgz
myquery.jsgz
repl gz.ksj
myquefy.ksj
repl gz.kqt
myquery.kqt
fepl gz.kkhj
myquery.kkhj
repl gz.sfgz
myquery.sfgz
repl gz.rylx
myquery.rylx
thisform.Progress Bar.value=n
&&状态条的当前值
if used(&myquery&)
SeleCtmyquery
set filter to yy=thisform.y2.value.and.mm=thisform.m2.value
&&表格中只显示本年本月
*发放的工资数据
thisform.Refresh
命令按钮cmd_qtsl
PROCEDUREcmd_qtsl.Click
Scanfor gz.yy=thisform.y2.Value.and.mm=thisform.m2.Value
repl gz.qtsr
with thisform.qtl.value
&&批量修改其他收入的值
thisform.jerefresh
thisform.grdgz.columnl6.setfocus
&&其他收入列得到焦点
thisform.refresh
命令按钮cmd_kqt
PROCEDURE cmd_kqt.Click
scan for gz.yy=thisform.y2.value.and.mm=thisform.m2.value
repl gz.kqt
with thisform.qt2.value
&&批量修改[扣其他]项的值
thisform.jerefresh
&&金额更新
thisform.grdgz.column25.setfocus
&&扣其他列得到焦点
thisform.refreSh
工资表格grdgz的Init事件代码
PROCEDUREgrdgz.Init
For i=1 to THIS.Coumncount
this.COLUMNS(1).HEADER1.BACKCOLOR=RGB(0,128,128)
&&列标题背景色
this.COLUMNS(1).HEADER1.FORECOLOR=RGB(255,255,255) &&列标题前景色
this.COLUMNS(1).HEADER1.ALIGNMENT=2
&&列标题居中
职等工资列中textl的InteractiveChange事件代码
PROCEDUREtext1.InteractiveChange
if this.value&0 then
messagebox(&工资金额不能为负数! &,48,&系统信息&)
repl gz.zdgz with 0
&&职等工资
this.value=0
repl gz.zdgz with this.value
&&职等工资
thisform.jerefresh
&&职等工资修改,相关数据更新
thisform.refresh
&&表单刷新
命令按钮cmdin的Click事件代码
PROCEDUREcmdin.Click
oldrq=gz.rq
append blank
repl gz.yy with thisform.y2.value
repl gz.mmWithdliSform.m2.value
repl gz.rqwithOldrq
thisform.grdgz.setfocus
thisform.refresh
命令按钮cmdouC的Click事件代码
PROCEDUREcmdout.Click
If messagebox(&确认删除此人的工资信息? &,32+1+256, &系统信息&)==1then
Thisform.grdgz.setfocus
Thisform.refresh
命令按钮cmdSave的Click事件代码
PROCEDURE cmdcancel.Click
=tablerevert(.t.)
thisform.grdgz.setfocus
thisform.refresh
命令按钮cmdquit的click事件代码
PROCEDURE cmdquit.Click
Set filter to
=tablerevert(.t.)
&&放弃没被保存的修改
thisform.release
&&退出表单
4)为表单新建方法。
为表单新建方法jerefresh,其主要功能是:一旦基本工资历数据修改,相关数据会相应更新。
PROCEDURE jerefersh
Lodal je,sjje
*计算应发工资
repl gz.yfgz with gz.zggz+gz.bt+gz.hmbt+gz.dhbt+gz.jtbt+gz.zgjt+gz.tsjt+gz.qtsr
repl gz.kgj with iif(gz.rylx=” 在职”,round((gz.yfgz-gz.dhbt)*0.1,1),0) &&计算公积金
repl gz.jsgz with iif (gz.rylx=”在职” ,gz.yfgz-gz.kgj,0)
&&计算更新计税金额
je=gz.jsgz-880
&&净纳税金额
&&计算应交所得税金额
&&税金金额
Case je&0.and.je&=500
SJJE=round(je*0.05,1)
&&税金金额
Case je&500.and.je&=2000
SJJE=round(je*0.10,1) -25
&&税金金额
Case je&2000.and.je&=5000
SJJE=round(je*0.15,1) -125
&&税金金额
Case je&5000.and.je&=20000
SJJE=round(je*0.20,1) -375
&&税金金额
Case je&20000.and.je&=40000
SJJE=round(je*0.25,1)-1375
&&税金金额
Case je&40000.and.je&=60000
SJJE=round(je*0.30,1)-3375
&&税金金额
Case je&60000.and.je&=80000
SJJE=round(je*0.35,1)-6375
&&税金金额
Case je&80000.and.je&=100000
SJJE=round(je*0.40,1)-10375
&&税金金额
Case je&100000
SJJE=round(je*0.45,1)-15375
&&税金金额
repl gz.kkhj with gz.ksd+gz.kyb+gz.keb+gz.ktc+gz.kgj+gz.ksj+gz.kqt
repl gz.sfgz with gz.yfgz-gz.kkhj
&&计算更新实发工资
5)关于ActiveX控件进度条
本表单用到了ActiveX控件进度条,用于显示由参考月生成本月工资数据时的进度。其在表单中的应用简单介绍一下。
操作步骤:
①打开菜单“工具/选项”设置窗口,单击“选项卡”,选中ActiveX控件,在ActiveX控件列表框中选择“Microsoft
ProgressBar Control 6.0”、“Microsoft
StatusBar Control 6.0 (sp4)”,如图1.1.22所示。
图1.1.22 选择ActiveX控件:进度条和状态条
②单击“查看类”,选择ActiveX控件,如图1.1.23所示
图1.1.23 调用ActiveX控件:进度条和状态条
③在表单中像应用Visual FoxPro标准控件一样应用ActiveX控件,如图1.2.24所示。
④右击ActiveX控件,选择“ProgCtcl Properties”如图1.2.25所示,可对ActiveX控件属性进行设置。
在表单中应用ActiveX控件:进度条
ActiveX控件进度条的属性设置窗口
(5)创建工资查询表单。
工资查询表单运行结果如图1.1.26所示
1) 利用视图向导创建本地视图GZCX.
视图GZCX的SQL代码为:
FROM gzgl!
WHERE Gz.bmmc LINK?thisform.CmbBmmc.
ORDER BY Gz.bmmc
工资查询表单运行结果
说明:在创建本地视图的过程中,用到两个参数变量thisform.TxtXm.valuet和thisform.CmbBmmc.value,分别与查询条件值”姓名”和”部门” 相对应.视图设计过程主要操作步骤如图1.1.27和图1.1.28所示
选取视图GZCX的字段
调置视图GZCX的滤件
2)创建查询表单。
查询表单命名为GZCXFRM,并保存为C:\工资管理\forms\GZCXFRM.scx文件,标记其说明内容为工资查询表单。
3)表单的数据环境的非缺省属性和表单的非缺省属性。
表单的数据环境和数据环境的非缺省属性如图1.1.29所示。
图1.1.29
查询表单的数据环境和数据环境的非缺省属性
4)表单中主要控件的属性和事件代码。
表单中主要控件的功能如表1.1.6所示
表单中主要控件的功能
控件 Name属性 功能
复选框 Check1 按姓名查询
复选框 Check2 按部门查询
命令按钮 CmdQuit 退出表单
表格 GrdGz 用于显示符合条件的工资记录
命令按钮CmdQuit的Click事件代码
PROCEDURE cmdquit.Click
Thisform.release
&&退出表单
表格初始化事件代码
PROCEDURE grdgz.Init
For i=1 to THIS.columncount
this.COLUMNS(1).HEADERl.BACKCOLOR:RGB(0,128,128)
this.COLUMNS(1).HEADERl.FORECOLOR:RGB(255,255,255)
this.COLUMNS(1).HEADERl.ALIGNMENT:2
this.COLUMNS(1).TEXTl.SELECTEDBACKCOLOR;RGB(0,0,160)
this..COLUMNS(1).TEXTl.SELECTEDFORECOLOR:;
RGB(255,255,255)
this.COLUMNS(1).TEXTl.BACKCOLOR:RGB(0,0,160)
this.COLUMNS(1).TEXT1.FORECOLOR=RGB(255,255,255)
this.COLUMNS(1).TEXT1.DISABLEDBACKCOLOR =RGB(0,0,160)
this.COLUMNS(1).TEXT1.DISABLEDFORECOLOR=RGB(255,255,255)
表格grdgz的AfterRowColChang代码
PROCEDURE grdgz.AfterRowColChang
LPARAMETERS nColIndex
nTEMP=STR(recno(),8)
this.SetAll(&dynamicbackcolor&,&IIF(RECNO()=TEMP.RGB(0,0,160),;
RGB(213,236,238)) &,& Column&)
This.SetAll(&dynameicforecolor&,&IIF(recno()=&nTEMP,;
RGB(255,255,255),RGB(0,0,0)) &,&Column&)
This.pefresh
文本框txtxm的InteractiveChange及DblClick事件代码
PROCEDURE txtxm.InteractiveChange
=requery(&gzcx&)
thisform.refresh
PROCEDURE txtxm.DblClick
this.value=&%&
&&所有人员
=requery(&gzcx&)
thisform,refresh
部门下拉式列表框的cmbbmmc的DblClick事件及InteractiveChange事件代码
PROCEDURE cmbbmmc.Dblclick
this.value=&%&
&&所有人员
=rquery(&gzcx&)
tisform.refresh
PROCEDURE cmbbmmc.InteractiveChange
=requer(&gzcx&)
thisform.refresh
姓名复选框check1的InteractiveChange 事件代码
PROCEDURE check1的InteractiveChange
If this.value=0
tisform.TxtXm.enabled=.f.
tisform.TxtXm.value=&%&
&&所有人员
thisform.TxtXm.enabled=.t.
部门复选框check2r InteractiveChange事件代码
PRICEDURE check2InteractiveChange
If this.value=0
Thisform.CmbBmmc.enabled=.f.
Thisform.CmbBmmc.value=&%&
&&所有部门
thisform.CmmbBmmc.enabled=.t.
(6)创建报表打印表单。
报表打印表单运行结果如图1.1.30所示
工资报表打印表单运行结果
1) 创建工资报表的打印表单
打开“工资管理”项目管理器,单击“文档”选项卡,新建表单PrtFrm.,保存在C:\工资管理\form\PrtFrm.scx文件中.
2) 表单中主要控件的属性和事件代码.
命令按钮cmdpreview的Click事件代码
PRCEDURE cmdpreview.Click
Public yyy,mmm
&&全局变量
Select gzp
Calc cnt()to n
Messagebox(&无满足条件记录,无法预览! &,48, &系统提示&)
YYY=THISFORM.Y1.VALUE
打印范围::年
MMM=THISFORM.M1VALUE
打印范围:月
DEFINE POPUP EdtShort SHORTCUT RELATIVE FROM MROW(),MCOL()
DEFINE BAR 1 OF EdtShort PROMPT&报表封面&
DEFINE BAR 2 OF EdtShort PROMPT&个人清单&
DEFINE BAR 3 OF EdtShort PROMPT&财务清单&
DEFINE BAR 4 OF EdtShort PROMPT&部门汇总&
DEFINE BAR 4 OF EdtShort PROMPT&缴税清单&
ON SELE BAR 1 OF EdtShort report form sys(5)+sys(2003)+ &\reports\fm.frx&
Preview window p_window
ON SELE BAR 2FOF EdtShort
report form sys(5)+sys(2003)+ &reports\grqd.frx&
for yy=yyy.and.mm=mmm
preview window p_window
ON SELE BAR 3 OF EdtShort
report form sys(5)+sys(2003)+ &\reports\gzqd.frx&
for yy=yyy.and.mm=mmm preview window p_window
ON SELE BAR 4 OF EdtShort report form sys(5)+sys(2003)+ &\reports\bmhz.frx&
for yy=yyy.and.mm=mmm preview
windjow p_window
ON SELE BAR 5 OF EditShort
report form sys(5)+sys(2003)+ &\reports\sdsqd.frx&
for yy=yyy.and.mm=mmm preview
window P_window
ACTIVE POPUP EdtShort
命令按钮cmdprint的click事件代码
PROCEDURE cmdpring.Click
Public fmyy,fmmm,yyy,mmm
Select gzp
Calc cnt() to n
messagebox(&无满足条件记录,无法预览! &,48, &系统提示&)
YYY=THISFORM.Y1.VALUE
&&打印范围:年
MMM=THISFORM.M1.VALUE
&&打印范围:月
DEFINE POPUP EdtShort SHORTCUT RELATIVE FORM MROW(),MCOL()
DEFINE BAR 1 OF EdtShort PROMPT&报表封面&
DEFINE BAR 2 OF EdtShort PROMPT&个人清单&
DEFINE BAR 3 OF EdtShort PROMPT&财务清单&
DEFINE BAR 4 OF EdtShort PROMPT&部门汇总&
DEFINE BAR 4 OF EdtShort PROMPT&缴税清单&
ON SELE BAR 1 OF EdtShort report form sys(5)+sys(2003)+ &\reports\fm.frx&
TO PRINTER PROMPT NOCONSOLE
ON SELE BAR 2 OF EdtShort
report form sys(5)+sys(2003)+ &\reports\grqd.frx&
for yy=yyy.and.mm=mmm TO PRINTER PROMPT NICONSOLE
ON SELE BAR 3 OF EdtShort
report form sys(5)+sys(2003)+ &\reports\grqd.frx&
for yy=yyy.and.mm=mmm TO PRINTER PROMPT NICONSOLE
ON SELE BAR 4 OF EdtShort
report form sys(5)+sys(2003)+ &\reports\bmhz.frx&
for yy=yyy.and.mm=mmm TO PRINTER PROMPT NICONSOLE
ON SELE BAR 4 OF EdtShort
report form sys(5)+sys(2003)+ &\reports\sdsqd.frx&
for yy=yyy.and.mm=mmm TO PRINTER PROMPT NICONSOLE
ACTIVATE POPUP EdtShort
(7)创建系统主界面表单。
系统主界面表单运行结果如图1.1.31所示。
系统主表单运行结果
1)创建系统主界面表单。
打开“工资管理”项目管理器,单击“文档”选项卡,新建表单MainForm,保存在C:\工资管理\forms\MainForm.scx 文件中.
2) 表单中主要控件的属性和事件代码.
● 主界面表单MainForm
Height=600
Show Window=2
&&作为顶层表单
AutoCenter=.T.
&&自动居中
Picture=&..\pictures\mainbg.jpg&
&&界面背景
Caption=&工资管理系统(V1.0) &
Closable=.F.
Icon=&..\pictures\hb_3.ico&
WindowType=1
&&模式窗口
Name=&MAINFORM&
PROCED URE RESIZE
This.statebar.width=this.width+4
&&调整主窗口的状态条宽度
If this width&400
This.statebar.panels.item(2).width=this.width-360
PROCEDURE Init
DO Menus\mainmenu.MPR WITH thisform,.T.
&&调用系统主菜单
● 系统状态条StateBar (ActiveX控件)
Name=&statebar&
说明:在系统主界面表单中用到了一个ActiveX控件,即系统状态条。关于AcitveX
控件的使用已经在前面做过简单介绍。
在工资系统中还用到了系统登录界面、关于系统、系统启动时的FLASH窗口等三个
表单,因其创建设计比较简单,这里不再细述。
2.设计报表。
在工资管理系统中共有五个报表,其中包括一个报表封面,如图1.2.32所示。依次分别是:部门汇总表(BMHZ.FRX)、报表封面(FM.FRX)、个人工资条(GRQD.FRX)工资清单(GZQD.FRX)和个人所得税清单(SDSQD.FRX)。保存在c:\工资管理VormsVeports\目录下。本说明只介绍部门工资汇总报表的设计过程。
部门工资汇总报表(BMHZ.FRM)的设计步骤:
(1) 从“文件”菜单上选择“页面设置”,进行报表页面设置,如图1.1.33所示。
工资管理系统中的5个报表
报表页面设置
(2) 为报表设置数据环境,如图1.1.34所示。
图1.1.34
工资汇总报表的数据环境
图1.1.35
报表变量设计编辑窗口
(3)从“报表”菜单上选择&变量&,为报表添加变量,用来汇总部门工资,如图1.1.35所示。
(4)从“报表”菜单上,选择“数量分组”。因为本报表是对部门工资汇总,所以选择分组依据应是部门名称,即分组表达式为GZ.BMMC,如图1.1.36所示。
(5)报表具体设计如图1.1.37所示。
(6)报表预览结果如图1.1.38所示。
报表分组表达式为GZ.BMMC
部门工资汇总报表设计窗口
部门工资汇总报表预览窗口
自定义类的使用
使用类不但可以减少重复操作、节约开发时间、方便维护,而且还可以使开发的应用
程序组件具有相同的风格。如在创建设计用户操作界面时每个表单都有…—个立体的标题,
在系统主界面用到的工具条都可以分别封装成类。
1.类的创建。
方法一:(以创建立体标题标签为例)
在设计“单位部门设置”表单时,单击选中设计好的标题(标签)“单位部门信息设
置”,执行菜单“文件/另存为类”,出现“另存为类”对话框时选择“选定控件”,输入类名为cTitle,保存类文件路径及名称为c:\工资管理\libs\myclass.vcx, 如图1.1.39所示。
图1.1.39
立体标签另存为类对话框
这样就很容易地创建了一个标签类cTitle,保存在C:\工资管理lis\mychss‘vcx中。在工资管理项目管理器中单击“类”选项卡,就可以把myclass.vcx添加到类选项卡。当然也可以根据需要对类cTitle进行修改。
方法二:(利用类设计器创建系统工具栏类)
在“工资管理”项目管理器的“类”选项卡中选中类文件myclass,单击“新建”按钮,出现新建类对话框,输入类名myclass,从下拉列表框中选择Toolbar,同样存储于c:\工资管理UibsXmyclass.vcx文件中(一个类文件可包含多个类)。使用类设计器设计系统工具条如图1.1.40所示。
图1.1.40
使用类设计器设计系统工具条
工具条的ShowWindow属性设为:1:—最上层表单,即在顶层表单中显示工具栏。
在图1.1.40的工具栏中,分别编写命令按钮Click事件代码如下所示:
PROCEDUREcommandl.Click
doformforms\bmfrm.scx
PROCEDUREcommand2.Click
dOformforms\dwxxfrm.scx
PROCEDURE command3.Click
Do form forms\czyfrm.scx
PROCEDURE command4.Click
Do form forms\gzfrm.scx
PROCEDURE command5.Click
Do form forms\prtfrm.scx
PROCEDURE commang6.Click
Do form forms\gzxcfrm.scx
PRODECURE command7.Click
control timedate.cpl
&&外部命令,调用控制面板中的时间日期设置
PROCEDURE commang8.Click
Exefile=getenv(&windir&)+&\calc.exe&
&&查找在系统目录下的文件
If file(getenv(&windir&)+&\&calc.exe&)
!/n &exefile
messagebox(&警告:部分系统资源分文件删除! &+chr(13)+;
请与系统管理员联系! &,64,”系统信息&)
PROCEDURE command9.Click
2.自定义类的应用。
(1)在设计状态调用类。
执行菜单“工具/选项”打开选项对话框,单击“控件”选项卡,单选按钮组中选择“可视类库”,然后单击“添加”按钮,在打开对话框中选择已创建的自定义类文件c:\工资管理Uibs\myclass.vcx。设为默认值,确认退出。
在表单设计时,从表单的控件工具条中单击“选取类”,从下拉菜单中选择Myclass
则在表单控件工具栏中出现自定义的类:即标签控件及工具栏控件,如图1.1.41所示。
图1.1.41 自定义类的应用
这样就可以像VisualFoxPro标准控件一样使用自定义的类(控件)了;
(2)以编程方式调用类。
在工资管理系统中,表单界面标题标签设计时可直接调用cTitle类的定义,工具栏的
调用则以编程方式调用自定义的工具栏类。其代码为:
classlib to libs\myclass
&&指定自定义类库
maintoolbar=Createobject(&mytoolbars&)
&&创建系统工具条
maintoolbar
maintoolbar.show()
&&工具栏窗口显示
maintoolbar.dock(0)
&&工具条坞化在主窗口上方
说明:在系统主表单设计时应用自定义的工具栏控件,系统会提示创建一个表单集。
设计系统菜单
(1)在工资管理项目管理器单击“其他”选项卡,单击菜单,新建菜单MainMenu.,
保存在c:\工资管理XMENUS\MainMenu.mnx文件中。
(2)菜单的结构。
菜单的结构结构如表1.1.7所示。
exefile=getenv(&windir&)+&\calc.exe&
&&查找在系统目录下的文件
iffile(getenv(”windir&)+&\”+&calc.exe&)
messagebox(”警告:部分系统资源分文件被删除! &+chr(13)+ &
请与系统管理员联系!
&,64,&系统信息&)
表1.1.7 菜单的结构
菜单栏 子菜单/过程 菜单名称 命令或过程
基本信息(\&B)
子菜单 部门设置 do form forms\bmfrm.scx
子菜单 单位信息 do form forms\dwxxfrm.scx
子菜单 人员管理 do form forms\czyfrm.scx
工资管理(\&G)
子菜单 工资管理 do form forms\gzfrm.scx
子菜单 报表打印 Do form forms\prtfrm.scx
子菜单 工资查询 Do form forms\gzcxfrm.scx
系统工具(\&T)
子菜单 调整系统时间 !/n control timedate.cpl
子菜单 通用计 算 器 过程:见过程1代码
菜单栏 子菜单/过程 菜单名称 命令或过程
系统帮助(\&H)
子菜单 关于… do form forms\about.scx
子菜单 系统帮助 Help
与我联系 过程:见过程2代码
退出系统(\&Q)
过程:见过程3代码
● 过程2代码
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,;
STRING,STRING,STRING,STRING,INTEGER
Filename=’mailto:’
=shellexecute(0,0,filename,0,0,1)
IF MESSAGEBOX(&确认退出工资管理系统吗?&,32+1,&系统信息&)==1
Mainform.release
CLEA EVEVTS
(3) 使用菜单设计器设计菜单
在菜单设计器中设计菜单如图1.1.42所示
图1.1.42在菜单设计器中设计系统菜单
(4)在&显示&菜单上选择&常规选项&,选中顶层表单复选框,单击&确定&退出,
菜单设计时常规选项的设置如图1.2.43所示。
(5)保存所设计好的菜单文件,执行&菜单/生成&,输出到文件C:\工资管理
\menus\mainmenu.mpr中。(6)系统主菜单文件mainmenu.mpr生成后,就可在主界面表单的Init事件中用如下
语句调用:DO
Menus\mainmenu.mpr
thisform,.T.
菜单设计时常规选项的调置
说明:主菜单mainmenu.mpr“系统帮助/与我联系”的过程(详见过程代码2)中调
用了WindOWSAPI函数。WindOWSAPI函数即应用程序编程接口(AppUcationProgramming
Interface)是一个操作系统支持的函数定义、参数定义和信息格式的集合,可供应用程序
使用。用来完成VsualFoxPro语言本身很难或者无法实现的功能。WindOWSAPI函数的应
用主要包括两个部分:API函数的声明及调用。
调用WindOWSAPI函数举例如下:
例1打开Outlook Express书写E-mail的窗体。
DECALRE INTEGER ShellExecute IN shell32.dll INTEGER HEWND,STRING,;
STRING,lpszFile,STRING,STRING,INTEGER
&&声明API函数
LpszFile=’mailto:’
&&设定需要发送的E-mail地址
=ShellExecute(0,0,1)
&&调用函数
执行结果是启动Outlook Express书写E-mail的窗体。
例2 在一命令按钮Click事件或者共单驱动过程编写如下编码,实现关机等操作。
EWX_LOGOFF 0
EWX_SHUTDOWN 1
EWX_REBOOT
EWX_POWEROFF 8
DELCLARE nteger ExitWindowsEx N USER32.DLL AS hut_Down INTERER,INTEGER
LOCAL nChoice
CASE thisform.otiongroup1.Value==1
=Shut_Down(EWX_SHUTDOWN+EWX_FORCE,0)
&&关闭计算机
CASE thisform.otiongroup1.Value==2
=Shut_Down(EWX_REBOOT+EWX_FORCE,0)
&&重新启动计算机
CASE thisform.otiongroup1.Value==3
=Shut_Down(EWX_LOGOFF+EWX_FORCE,0)
&&以其他用户登录
执行结果为关闭计算机,重新启动计算机,使用户重新登录Windows。
制作系统HTML样式帮助文件
系统帮助文档是应用程序不可缺少的一部分。在系统帮助文档中可以详尽地介绍软件
的功能、操作方法和技巧、安装方法、注意事项和解决问题的方法等。方便的联机帮助是
用户正确使用软件的重要依据。
在VisualFoxPro中,能创建.dbf样式的帮助系统和创建图形方式的帮助系统(即HTML
样式的帮助文件)。图形方式的帮助中可以包含图形和用格式编辑的文本,而.dbf样式的
帮助不包含图形,只有单一字体的文本。
HTML样式帮助文件可由HTMLHelpWorkShop创建。该软件包含在VisualStudi06.0
中并独立于Visual FoxPro,应另行安装。下面就对HTML样式的帮助系统创建过程简单
介绍如下。
(1)安装HTMLHelpWorkshop。
在VFP6的安装光盘的根目录下有一个LHTMLHELP\目录,
运行目录下的
HTMLHELP.EXE文件开始解压,然后进行安装。安装界面如图1.2.44所示。
图1.1.44 HTMLHelpWorkshop安装
(2)制作帮助文件内容。
HTMLHelpWorkshop中常用的文件类型如下:
.chm:已编译生成的帮助文件。
.hhp:项目文件。
.hhk:索引文件,包含索引条目(关键字)。
.hhc:内容文件列表文件。
.htm:源内容文件(HTML文件)。
.gif:源图像文件。
逐个制作所有要用到的帮助文件页面,编辑制作工具可以用Word、FrontPage或DreamWaver等任何可以生成HTML文件的软件(图1.1.45就是用Word编辑&帮助文件说明&页面)。当然在制作过程中可以随心所欲插入图片、背景和GIF图像等内容。将不同的帮助页面分别以不同的文件名的HTML文件格式保存。如在Word中,将编辑好的Word文档另存为Web页即可。图1.1.46为已经完成的HTML文件列表。
(3)制作生成.chm帮助文件。
制作HTML样式帮助文件可使用HTMLHelpWorkshop向导来完成。
1)运行&C:\hr'rogramFilesXHTMLHelpWorkshopXhhw.exe&,启动HTMLHelpWorkshop,
如图1.1.47所示。
2)在HTMLHelpWorkshop主菜单中选择file菜单,单击New菜单条,出现如图1.1.48
所示的对话框。选择&Project&,然后单击“OK”按钮,出现&New Project&对话框,系统询问是否转换已有的WinHelp帮助文件(选择不转换),如图1.1.49所示.
用Word编辑帮助文件页面
帮助文件的源HTML文件列表
HTMLHelpWorkShop系统界面
新建帮助文件项目对话框
3)选择要建立项目的路径,并输入项目名称&Hlp.hhp &,如图1.1.50所示,单击&下
一步&按钮,出现&NewProject--ExistingFiles&对话框。
图1.1.49 NewProject对话框
选择路径并输入项目名称
4)在“NewProject--ExistingFiles”对话框中选择“HtmlFiles
(.htm)”,如图1.1.51
所示。单击“下一步”,出现如图1.1.52所示的对话框。单击“Add…”按钮,在第三步
所选定的路径中添加已建立的HTML文件,出现“NewProject—Finish”对话框,单击“完
成”按钮,返回系统界面。
选择已存在的帮助页面文件
5)在完成后的窗口中单击“Add/ModifyWindowDefinitions”工具按钮,出现“AddaNewWindowType”对话框,键入自己定义的窗口类型名字“Helpwindow”,然后单击“OK'’按钮,出现窗口类型定义对话框,如图1.1.52所示。选择“General”标签页,在“Titlebartext:”文本框中输入帮助文件窗口的标题。如工资管理系统帮助图1.1.53所示。
选择已建立的HTML文件
6)在“Buttons”标签页设置帮助窗口工具栏中出现的命令按钮。
7)在“Files”标签页设置帮助窗口打开时的默认页面。即在Default文本框中输入系统简介.htm。
8)根据用户喜好在“Styles”标签页中设置窗口风格,在“Position”标签页中设置窗口的位置与大小等。完成设置单击“确定”退出窗口类型定义对话框,返回HTMLHelpWorkshop系统主界面。如图1.1.54所示。
9)添加内容文件列表。在图1.1.54中,单击&Contents”选项卡,弹出“TableofContents
notSpecified”单选对话框,选择“Createanewcontentsfile”项,如图1.1.55所示。单击“OK&。出现另存为对话框,选定存放.hhc文件的目录及输入文伺:名如“hlp.hhc”,单击
“保存”,返回系统界面。然后添加系统内容列表。如图1.1.56所示。
图1.1.53 WindowTypes对话框
图1.1.54 完成窗口设置后的HTMLHelp Workshop系统界面
新建/打开内容列表文件对话框
图 1.1.56 添加内容表对话框
10)完成添加内容表后的系统界面如图1.1.57所示。
完成添加内容表后的系统界面
11)添加索引列表(.hhk文件)。
添加帮助索引文件(.hhk)与添加内容表文件过程是一样的,而且对于帮助主题不多或者简单的帮助文件没有必要建索引,比如在工资管理系统中,因帮助页面只有8个,就可以不建索引表。即在帮助文件中不显示索引选项卡。
12)添加完内容表及索引表后就可以保存、编译、测试帮助文件。单击“Save
files andcompile”按钮,系统对项目进行编译,最终生成Hlp.chm帮助文件。其运行结果如图1.1.58所示
工资管理系统帮助文件界面
(4)调用HTML样式的帮助文件。
制作生成.chm帮助文件之后,可以在应用程序的主程序的代码设置中添加如下代码:
1) SETHELPTOHLP.chm
&&Hlp.chm为编译生成的帮助文件。
2)在设计状态下对表单、控件、或者工具栏等需要帮助的对象设置其HelpContextID
属性值为代表HTML帮助文件中的特定主题编号。
3)在菜单标题或菜单命令相关联的过程代码中使用SETTOPIC命令。
4)执行help命令显示相关帮助内容。
举例说明:如何在一个表单的INIT事件中,将表单中所有的对象的helpContextID属
性值都设置为该帮助的ID值。例如,如果该值为7,可用如下命令:
THIS.SETALL(&HelpContextID&,7)
在表单中设计一个命令按钮,其caption属性值为&帮助&,在命令按钮的CLICK事件
中添加如下命令:HelpIDthis.HelpContextD
来显示指定主题的帮助。
(4) 工资管理系统中帮助文件运行如图1.1.58所示。
1.2.10连编应用程序
(1)打开工资管理项目管理器,单击“代码”选项卡,单击“程序”,新建主程序入口文件,保存在C:\工资管理\progs\MainPrg.prg文件中.
(2) 输入编辑MainPrg.Prg代码内容.
*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
MainPrg.prg
*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
HIDE WIND SCREEN
&&隐藏Visual FoxPro 主窗口
SET TALK OFF
SET STAT OFF
SET SAFETY OFF
SET SYSMENU OFF
SET STATUSBAR OFF
SET DELETED ON
SET CENTURY ON
&&年为四位数
SET DATE TO JAPAN
&&设置日期格式:年月日
SET PROC TO hlp.chm
&&指定帮助文件
CLOSE DATA
SET PROC TO
PUBLIC yyy,mmm,czqx
&& 全局变量:yyy-年,mmm –月,czqx- 操作权限
yyy=year(date())
&&初始化yyy
mmm=month(data())
&&初始化mmm
czqx=”0”
&&初始化czqx
FORMS\startfrm.scx
&&Flash窗口
FORMS\MAINFORM name MAINFORM
Set classlib to libs\myclass
&&指定自定义类库
Maintoolbar=Createobject(“mytoolbars”)
&&创建系统工具条
Maintoolbar
maintoolbar.show()
maintoolbar.doc(0)
&&工具条坞化在主窗口上方
DO FORM FORMS\Loginfrm.scx
&&系统登录
READ EVENTS
&&Visual FoxPro开始处理事件
(3)将程序文件MainPrg.prg指定为主文件。
一种方法是直接右击MainPrg.prg,在弹出菜单中设置主文件,MainPrg.prg文件名会变成粗体,如图1.1.59所示。
另一种方法是在项目管理器中单击MainPrg.prg文件,选择菜单“项目/设置主文件”,
也可将MainPrg.prg指定为应用程序入口的主文件。
将MainPrg.prg设置为主文件
(4)在应用程序中包含资源文件:Foxuser.dbf、Foxuser.fpt及配置文件Config.fpw位于工资管理项目所在目录C:\55资管理下。
(5) 更改默认的应用程序图标。可以在“项目”菜单的“项目信息”对话框中设置应用程序的图标及其他一些属性,如图1.1.60所示。
工资管理项目信息
(6)运行工资项目管理器主文件,确认所有程序能正确运行。
(7)生成工资管理应用程序。在“工资管理”项目管理器中选择连编,然后在“连
编选项”对话框中选择“Win32可执行程序/COM服务程序(exe)”,还可单击“版本”
按钮进行应用程序版及其他信息的设置,如图1.1.61所示。
工资管理应用程序连编选项
将源程序连编生成可执行的“工资管理.exe”应用程序后,最后的步骤就是制作系统发布磁盘。
生成应用程序发布安装磁盘
在发布一个应用程序时,需要将所有应用程序和支持文件复制到一个普通的磁盘中,然后为用户提供安装应用程序的方法。如果仅仅是将文件复制到用户的机器上,应用程序有可能不能正常运行。而Windows的安装例程比如由安装向导创建的安装程序,会进行版本检查,安装应用程序运行时需要的支持库,并注册多个DLL和ActiveX文件。因此为了确保正确安装,下面介绍利用“安装向导”完成应用程序的发布。
(1)备份源文件或新建发布树。
首先将项目管理的整个丁作目录复制到另一备份目录,如将C:\工资管理\下所有文件及文件夹复制到C:\code\文件夹,也可将其备份到软盘。或者另外新建一个目录结构,即“发布树”(如:c:\BeforePack),把希望复制到发布磁盘的所有的文件都放入该目录(需
要发布的典型文件详见第三步)。值得注意的是发布树几乎可以为任何形式,但是,应用程序或可执行文件必须放在该树的根目录下。
(2)执行菜单“工具/向导/安装”,如图1.1.62所示。
如果是第一次使用安装向导,系统会提示创建Distrib.src目录或指定其位置。该目录是“安装向导”的工作目录,主要保存安装时需要的支持文件。其默认目录是c:\ProgramFilesWlicrosoftVisualStudio\Vfp98YDistrib.src,如图1.1.63所示。
(3)定位发布树目录(C:\工资管理\),如图1.1.64所示.
发布树目录结构应与用户安装应用程序安装后所得到的目录结构相同。树中内容只包括连编生成的.exe可执行文件,所有应用程序要用到的数据库文件及Foxuser.dbf,Foxuser.fpt,Config.fpw等资源文件。而不需要表单、报表、程序、菜单、图片、图标等源代码文件。
图1.1.62 选取工具/向导/安装菜单
图1.1.63 安装向导工作目录Distrib.src
图1.1.64 定位发布树目录
(4)选择可选组件,如图1.1.65所示
图1.1.65 指定发布应用程序时所需组件
在工资管理系统中要选择以下三个组件.
1) 选中Visual FoxPro运行时组件.
2)选择ActiveX控件组件(如:MicrosoftStatusBarControl 6.0
(SP4)状态条控件、MicrosoftProgressBarControl6.0(SP4)进度条控件),如图1.1.66所示。
3)选择HTML帮助引擎。
(5)指定磁盘映像目录(如c:Xlnstall\)。
如将磁盘映像选择为“1.44MB
3.5英寸”,如图1.1.67所示。
(6) 定制要发布的安装对话框。
添加应用程序中需要的ActiveX控件
指定磁盘映像目录
如对话框标题:工资管理系统V1.0:版权信息及用户安装完成后执行的程序。典型的安装之后的操作是显示Readme.txt或启动相关产品的安装过程,如图1.1.68所示。
(7)指定默认安装的目标路径。
该对话框主要是指定安装程序需要创建的目标路径,如\工资管理\,程序组名为工资管理系统,如图1.1.69所示。
定制要发布的安装对话框
指定安装默认的目标路径
(8)为程序组添加菜单项。如“工资管理系统”、“系统帮助”,如图1.1.70和图1.1.71所示。
(9)查看文件总结,完成系统安装发布向导。如图1.1.72所示。
为程序组添加菜单项—工资管理系统
图1.1.71 为程序组添加菜单项—系统帮助
查看文件总结报告
在工资管理系统的发布安装向导中最后生成四张安装文件软盘,分别保存在C:\Insrall\Didk144目录的子目录Diskl、Disk2、Disk3、Disk4下。
(10)检测试用发布盘是否能正确安装。
运行C:\lnstalhDiskl44\Diskl\Setup.exe。用于检测的机器最好是没有安装过VisualFoxPro系统的机器,只有这样才能保证安装的正确性且不失一般性。
应用程序安装界面及程序组结果分别如图1.1.73和图1.1.74所示。
图1.1.73应用程序安装对话框
工资管理程序组及菜单项
开发应用程序小结
以上所介绍的工资管理系统开发实例涉及用户需求的分析、创建数据库、用户界面(表
单)设计、ActiveX控件的使用、类的定义与应用、报表设计、函数的应用、定制系统帮助、编译应用程序以及制作系统发布安装盘等各个方面,揭示了
用Visual FoxPro开发应用程序的一般过程。但应用程序的开发过程并不是一成不变的,
要根据具体情况灵活应用。}

我要回帖

更多关于 网页上点打印没反应 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信