PB开发笔记文档格式.docx
- 文档编号:22961616
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:150
- 大小:97.27KB
PB开发笔记文档格式.docx
《PB开发笔记文档格式.docx》由会员分享,可在线阅读,更多相关《PB开发笔记文档格式.docx(150页珍藏版)》请在冰豆网上搜索。
win[3]="
w_sales"
fori=1to3
Open(newarray[i],win[i])
next
//显示一个与Windows操作系统风格一致的About对话框。
首先声明如下外部函数:
functionintShellAboutA(ulongal_hWnd,stringas_szApp,stringas_szOtherStuff,ulonghIcon)library"
shell32"
ShellAboutA(handle(parent),"
关于...#摆渡人工作室"
"
欢迎光临摆渡人工作室"
0)
//如何将COLUMN的显示风格在EDIT、DDDW、DDLB之间相互切换:
(1)切换成DDDW:
dw_1.Modify("
#1.dddw.Name='
dddw_jg'
"
)
#1.dddw.DisplayColumn='
name_jg'
#1.dddw.DataColumn='
id_jg'
(2)切换成DDLB:
#1.ddlb.case='
any'
)
dw_1.Object.#1.Values="
red~t1/white~t2"
(3)切换成EDIT:
#1.edit.case='
#1.edit.AutoSelect='
Yes'
(4)获取当前风格:
dw_1.Describe("
#1.Edit.Style"
(5)如果还不行,可能得要如下操作:
'
)一下;
//在dw_1中选定想要打印的几条记录
longll_pos
dataStorelds_ds
lds_ds=createdataStore
lds_ds.dataObject=dw_1.dataObject
forll_pos=1todw_1.rowCount()
ifdw_1.IsSelected(ll_pos)then
dw_1.RowsCopy(ll_pos,ll_pos,Primary!
lds_ds,lds_ds.rowCount()+1,Primary!
endif
lds_ds.print()
//实现在循环时可以通过点击按钮终止循环
integern
//sb_interrupt是共享变量
sb_interrupt=false
forn=1to3000
yield()
ifsb_interruptthen//sb_interrupt的值在"
取消”按纽的Clicked事件中修改为true
MessageBox("
我不干了"
你真坏!
)
sb_interrupt=false
exit
else//其它处理,在单行编辑器中显示当前n值
sle_1.text=string(n)
endif
next
//SQL语句调用规范
INTEGERli_customer_id=1
STRINGls_city_code='
501'
PREPARESQLSAFROM"
DELETEbb_customer_info_tWHEREcity_code=?
ANDcustomer_id=?
;
EXECUTESQLSAUSING:
ls_city_code,:
li_customer_id;
//通过modify函数来同时修改多个表
1、新建一个数据窗口d_grid_dep_emp,它的Select语句为
SELECTdepartment.dept_id,
department.dept_name,
employee.emp_id,
employee.emp_fname,
employee.emp_lname
FROMdepartment,employee
WHEREemployee.dept_id=department.dept_id
2、设置数据窗口d_grid_dep_emp的属性,将列的taborder改为非0值;
并点击菜单Rows——>
Update
Properties,设置此数据窗口AllowUpdates,TabletoUpdate设为department,UpdateableColumns为
department.dept_id,department.dept_name。
3、在窗口中更新数据窗口按钮的clicked事件编写脚本:
longll_rtn
//修改Department表(Department表在第2步已设置为可更新)
ll_rtn=dw_1.update(true,false)
Ifll_rtn=1then
//关闭对Department表的修改
dw_1.Modify("
department_dept_name.Update='
No'
department_dept_id.Update='
department_dept_id.Key='
//设置Employee表成为新的可修改表
DataWindow.Table.UpdateTable='
employee'
employee_emp_id.Update='
employee_emp_fname.Update='
employee_emp_lname.Update='
employee_emp_id.Key='
//修改Employee表
ll_rtn=dw_1.Update()
IFll_rtn=1THEN
COMMITUSINGSQLCA;
dw_1.retrieve()
messagebox('
提示信息'
'
更新成功!
ELSE
ROLLBACKUSINGSQLCA;
MessageBox('
'
更新失败!
//重置修改标志
department'
ELSE
ENDIF
//可以将以上功能作成一个函数,在必要的时候调用即可。
//单击编辑框选中其中内容
getfocus事件中书写代码:
this.selecttext(1,len(this.text))。
保存后运行,却得不到我们想要的
效果。
想到了一个另类办法:
以pbm_bnclicked为事件ID,创建单行编辑框的自定义事件ue_clicked,
代码是:
this.selecttext(1,len(this.text)),
getfocus事件的代码改为:
This.PostEventue_clicked()。
保存后运行,效果出来了!
//怎样得到字符串中汉字的个数
Fori=1toLen(aString)
ls_ch=Mid(aString,i,1)
IfAsc(ls_ch)>
=128then//是汉字
li_num++
i=i+1
Endif
Next
//最后,li_num就是汉字的个数了
//DW支持双击标题进行排序
Stringls_old_sort,ls_column,ls_name,ls_criteria
Charlc_sort
IFRight(dwo.Name,2)='
_t'
THEN
//取得是否是列标题名
ls_column=LEFT(dwo.Name,LEN(String(dwo.Name))-2)
ls_old_sort=this.Describe("
Datawindow.Table.sort"
IFls_column=LEFT(ls_old_sort,LEN(ls_old_sort)-2)THEN
lc_sort=RIGHT(ls_old_sort,1)
IFlc_sort='
A'
THEN
lc_sort='
D'
this.SetSort(ls_column+"
"
+lc_sort)
ls_criteria=ls_column+"
A"
this.SetSort(ls_criteria)
this.Sort()
//DW支持单击按Ctrl或Shift进行多选
int
il_last_row
//il_last_row为实例变量,记录上次单击的行
intli_current_row
//当前单击行
intli_row
//中间变量
//未选择就返回
ifrow=0then
return
else
li_current_row=row
endif
ifkeydown(keyshift!
)then
//按下SHIFT键
ifil_last_row=0then
this.selectRow(row,true)
il_last_row=li_current_row
else
this.selectRow(0,false)
ifli_current_row>
il_last_rowthen
forli_row=il_last_rowtoli_current_row
this.selectrow(li_row,true)
endfor
else
forli_row=il_last_rowtoli_current_rowstep-1
this.selectrow(li_row,true)
else
//未按下SHIFT键
il_last_row=li_current_row
ifkeydown(keycontrol!
//按下CTRL键
ifthis.isSelected(li_current_row)then
this.selectrow(li_current_row,false)
this.selectrow(li_current_row,true)
//无CTRL键或SHIFT键按下
this.selectrow(0,false)
//改变DW的查询条件语句
stringls_select,ls_filter
ls_select=dw_1.getSqlSelect()
ls_select=mid(ls_select,1,pos(upper(ls_select),'
FROM'
)+30)
ls_filter="
WHEREservice_kind="
+vi_service_kind+"
ORDERBYFEE_IDASC"
ls_select=ls_select+ls_filter
dw_1.Reset()
dw_1.SetTransObject(SQLCA)
dw_1.SetSQLSelect(ls_select)
dw_1.Retrieve()
//数据窗口的closeQuery事件:
提示保存数据
dw_1.AcceptText()
IFdw_1.ModifiedCount()+dw_1.DeletedCount()>
CHOOSECASEMessageBox("
操作提示"
数据已经发生变化,是否保存?
Question!
YesNoCancel!
1)
CASE1
cb_save.TriggerEvent(clicked!
CASE2
Return0
//不做任何操作直接关闭窗口
CASE3
Return1
//不会运行CloseEvent,维持原来的情况
ENDCHOOSE
//提示:
请选择要删除的记录
ifdw_2.GetSelectedRow(0)=0then
提示信息"
请选择要删除的记录!
//按某字段进行排序
IFdwo.name="
fee_id_t"
this.setSort("
fee_ida"
this.sort()
elseifdwo.name="
fee_position_t"
then
this.setsort("
fee_positiona,fee_ida"
//控制DATAWINDOW里每页显示的行数
1、在Datawindow中增加一个计算域,起名为:
ceil_page,此计算域必须放在Detail段中,
Expression中输入ceiling(getrow()/25)25表示每页打印25行,也可以是一个参数。
2、分组,选择菜单Rows\CreateGroup,选择ceil_page
按ceil_page分组,并选中NewPageOnGroupBreak(意思是新组开始时换页)。
3、将此计算域设为隐藏(在属性页中的expression页中在visible属性中写0)。
4、补空行:
在窗口的open事件中写如下代码:
longli_count,li_i
li_count=dw_1.retrieve()
ifmod(li_count,25)<
>
0then
forli_i=1to25-mod(li_count,25)
dw_1.insertrow(0)
next
//如何实现数据窗口数据的自动折行
1)在DataWindowPainter中打开此DataWindow对象。
2)在需设定自动折行的列上双击鼠标,弹开此列的属性窗口。
3)选择Position标签,选中AutosizeHeight多选框。
4)选择Edit标签,不选中AutoHorzScroll多选框。
5)单击OK按钮,保存所做的修改。
6)点中DetailBand(即写有Detail的灰色长带),单击鼠标右键,选择Properties...菜单项。
7)选中AutosizeHeight多选框。
8)单击OK按钮,保存所做的修改。
9)保存此DataWindow。
注意:
连在一起的汉字(中间没有标点或空格分隔),系统将认为是一个单词,不会自动进行折行,
英文也是如此……DW窗口折行如果有汉字的话就必需中间加空格才会折行,否则怎样设置都不行。
例如你
如果想在第20位折行,就先判断第20位是否是个汉字,如不是就在第20位后加空格,如果是汉字就在
第19位加空格。
判断是否是汉字可以用它的ASCII码是否大于127来判断。
//按条件对某行数据进行颜色区分
case(cjwhenis>
=90thenrgb(255,0,0)whenis<
60thenrgb(0,255,0)elsergb(0,0,255)))
//PB中同时连接多个数据库,如连接SQLServer2000和Oracle8
stringls_startupfile
ls_startupfile='
hisini.ini'
sqlca.DBMS=ProfileString(ls_startupfile,"
database"
"
dbms"
sqlca.database=ProfileString(ls_startupfile,"
sqlca.userid=ProfileString(ls_startupfile,"
userid"
sqlca.dbpass=ProfileString(ls_startupfile,"
dbpass"
sqlca.logid=ProfileString(ls_startupfile,"
logid"
sqlca.logpass=ProfileString(ls_startupfile,"
LogPassWord"
sqlca.servername
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PB 开发 笔记