PFC培训Word文档格式.docx
- 文档编号:19949746
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:24
- 大小:1.08MB
PFC培训Word文档格式.docx
《PFC培训Word文档格式.docx》由会员分享,可在线阅读,更多相关《PFC培训Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
步骤8,如图
哈哈,成功了,PFC的基本框架就算搭建起来了,这里就是我们的家。
步骤9,我们生成一个frame窗口名字叫w_stady,要继承来,这是PFC的“规则”,
如图
步骤10,如图,打开n_cst_appmanager,pfc_open事件中写脚本:
open(w_stady),保存。
运行。
成功了!
,你的呢?
?
好像标题栏缺少点什么?
不要着急,按图操作,在constructor事件中写脚本:
iapp_object.DisplayName="
一拖(洛阳)柴油机有限公司"
引号里面的内容,各位自便。
数据库联接
现在做一个datawindow,名字叫d_unit,字段unit_idchar(3)主键,unit_namechar(20)notnull,
也就是一个计量单位表。
步骤11,继承一个sheet窗口,名字叫w_unit,如图
其中的数据窗口控件(u_dw)、按钮(u_cb)都是PFC中的对象。
在w_stady窗口的pfc_open事件中写脚本:
stringls_sheet
w_sheetlw_sheet
ls_sheet=message.stringparm
opensheet(lw_sheet,ls_sheet,this,0,Original!
)
将PFC的菜单m_frame中的open的clicked事件下面写脚本,一定要取消祖先的脚本,否则要出错。
哈哈,我的成功了,你的呢?
下面来点PFC里面的真东西。
在w_unit窗口中的dw_1控件的constructor事件中写脚本
this.settransobject(SQLCA)
this.of_setrowselect(true)
this.inv_rowselect.of_setstyle(this.inv_rowselect.EXTENDED)
这回感觉出来了吧,试试ctrl键shift键。
再加两行脚本试试:
this.of_setsort(TRUE)
this.inv_sort.of_setcolumnheader(TRUE)
这回点击标题头,看看有什么反映,哦,会自动排序,还会倒序呢。
做一个profile.ini文件,在图中is_appinifile填写profile.ini
做个登录窗口,继承w_response。
定义实例变量:
stringis_inifile
定义全局变量:
/*记录用户登录名和密码*/
stringgs_userid
stringgs_password
切计,窗口中的两个单行编辑器,一定要用PFC的对象(u_sle)
设置口令控件的属性为password
在退出按钮的clicked事件写脚本:
haltclose
在登录按钮的clicked事件写脚本:
/*检测用户名*/
iflen(trim(sle_1.text))=0orIsNULL(sle_1.text)then
messagebox("
信息"
"
请输入用户名"
return-1
endif
/*断开数据库连接*/
Disconnect;
/*配置连接参数*/
stringls_dsn
stringls_userid
stringls_password
ls_dsn
="
DSN="
+ProfileString(is_inifile,"
odbc"
"
dsn"
None"
)+"
;
"
ls_userid
="
UID="
+sle_1.text+"
ls_password="
PWD="
+sle_2.text+"
/*进行数据库连接*/
SQLCA.DBMS="
ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="
ConnectString='
+ls_dsn+ls_userid+ls_password+"
'
Connect;
IfSQLCA.SQLCode=-1Then
MessageBox("
错误"
不能连接到数据库!
Exclamation!
Return-1
EndIf
/*保存登录名*/
SetProfileString(is_inifile,"
userID"
user"
sle_1.text)
gs_userid=sle_1.text
gs_password=sle_2.text
CloseWithReturn(Parent,1)
将n_cst_appmanager的pfc_open事件改为图示
再做一个datawindow,要用freeform风格。
名字叫d_person_maintain
字段:
person_idchar(8)主键,person_namechar(20)notnull,birthdaydatetime,ageint
提交按钮脚本:
parent.eventpfc_save()
插入按钮脚本:
dw_1.pfc_insertrow()
dw_1控件脚本:
this.pfc_insertrow()
在w_person_maintain窗口的dw_1控件的constructor事件添加脚本:
of_SetDropDownCalendar(true)
iuo_calendar.of_Register('
birthday'
iuo_calendar.DDLB_WITHARROW)
of_SetDropDownCalculator(true)
iuo_calculator.of_Register('
age'
iuo_calculator.DDLB_WITHARROW)
效果不错吧
针对w_unit窗口我们再进行改进。
在open事件写脚本:
/*启用尺寸服务*/
of_SetResize(True)
/*设置最小尺寸*/
inv_resize.of_SetMinSize(1300,400)
/*设置对象的尺寸变化方式*/
inv_resize.of_Register(dw_1,inv_resize.SCALERIGHTBOTTOM)
inv_resize.of_Register(cb_1,inv_resize.FIXEDRIGHT)
inv_resize.of_Register(cb_2,inv_resize.FIXEDRIGHT)
下面介绍一下状态条。
stringls_compute_name
stringls_path
longll_count,ll_retcd=0
ls_path="
HKEY_LOCAL_MACHINE\system\&
CurrentControlSet\Control\ComputerName\ComputerName"
ll_retcd=RegistryGet(ls_path,"
ComputerName"
ls_compute_name)
IFll_retcd=-1then
SetNull(ls_compute_name)
endif
Returnls_compute_name
在w_stady的open事件写脚本:
/*状态条*/
this.of_setstatusbar(TRUE)
/*时间*/
this.inv_statusbar.of_settimer(TRUE)
/*获取计算机名*/
stringls_computer
ls_computer=f_computername()
this.inv_statusbar.of_register("
computer"
text"
计算机名:
+ls_computer,500)
状态条有东西了吧?
打开n_cst_appmanager,在pfc_open事件中写脚本:
open(w_logon)
/*飞屏*/
this.of_splash(3)
open(w_stady)
注意,括号里面的数字(3)决定了飞屏停留的时间秒数。
是不是觉得没有图片很单调,好,如图:
在is_logo里面填上图片的名称,不要带路径,如果带,也要是相对路径。
支持flash哦
必须列服务
我们以d_unit为例。
将unit_id,unit_name两个字段的edit属性里面的required,emptystringisnull设置为有效。
特别注意:
emptystringisnull一定要选中
将w_unit中dw_1控件的constructor事件改成如图
这样如果有没有输入的字段,系统不会立即提示,而是在你提交的时候提示你。
如果将this.of_setreqcolumn(true)注释掉,则你在第一个字段为空的时候就会提示你。
会不会有这种要求:
有些字段要立即提示,而有些字段要在提交的时候提示呢?
PFC同样能够满足。
只需添加脚本:
dw_1.inv_requcolumn.of_registerskipcolumn('
unit_id'
这样unit_id字段就会保持标准的Powerbuilder的必须列处理。
今天讲搜索列。
我们先做一个datawindow,名字叫d_item,字段为:
item_idchar(8)主键
item_namechar(40)
unit_idchar(3)unit表的外键
以unit表,做一个grig风格的datawindow,名字叫d_unit_list,
将d_item的unit_id字段的edit->
styletype指定为dropdownDW,
edit->
datawindow指定为d_unit_list
displaycolumn指定为unit_id
datacolumn指定为unit_id
在窗口中的dw_1的constructor事件添加下列脚本
this.of_SetDropDownSearch(TRUE)
this.inv_dropdownsearch.of_register()
在窗口中的dw_1的editchanged事件添加下列脚本
this.inv_dropdownsearch.eventpfc_editchanged(row,dwo,data)
在窗口中的dw_1的itemfocuschanged事件添加下列脚本
this.inv_dropdownsearch.eventpfc_itemfocuschanged(row,dwo)
运行一下,看看结果。
当我们在计量单位代码中输入值的时候会按序自动搜索
今天我们讲主从表的检索。
做表的问题我就不给大家例子了,总之一个主表,我们可以认为是一个订单的头,
而从表是一个订单行。
实现结果:
当我们改变主表的行,从表中的内容则跟着改变
如图结果
做一个主表d_province_display,有一个主键province_id。
做一个从表d_city_display,有一个主键province_id,以province_id为检索参数
在窗口的open事件写脚本:
dw_1.of_setlinkage(TRUE)
dw_2.of_setlinkage(TRUE)
dw_1.inv_linkage.of_settransobject(SQLCA)
dw_2.inv_linkage.of_settransobject(SQLCA)
dw_2.inv_linkage.of_setmaster(dw_1)
dw_2.inv_linkage.of_register("
province_id"
)
dw_2.inv_linkage.of_setstyle(dw_2.inv_linkage.retrieve)
dw_1.of_retrieve()
dw_2.setfocus()
其中dw_1是主表,dw_2是从表。
括号中的两个province_id,前面的是主表的主键,后面的从表的外键
一切OK!
多么简单。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PFC 培训
![提示](https://static.bdocx.com/images/bang_tan.gif)