一、splash窗口
1、open事件
Timer(6,this) //设定关闭时间,6秒
This.SetPosition(Topmost!) //将Splash窗口置于其它窗口之上
2、timer事件
close(this)
3、close事件
Timer(0)
二、拉数据窗口(DropDownDataWindow),有什么办法能得到此列的显示值?用GetItemNumber()函数只能得到实际值。
答:数据窗口中有一个内部函数LookupDisplay()可实现此功能,若列名为"currency",取第1行的值如下:
dw_1.Describe ( "Evaluate('LookupDisplay(currency)',1)" )
这种方法同样适用于编辑风格为下拉列表(DropDownListBox)、收音机按钮(RadioButtons)等的列。
三 、//如何生成固定长度的前面加零的数字编号,例如:12生成"00012",1234生成"01234"。方法很简单:
String(ll_number, "00000")
四、判断数据窗口中是否存在某列
可以利用Describe("column_name.width")是否为"!"来判断;
五、 1.shRunDefltBrowser 调用缺省的浏览器,打开指定页面
版本:PBVM60.dll,PBVM80.dll,PB7我没用过,不过我想应该有。
函数声明:function long shRunDefltBrowser(string szUrl) library "pbvm60.dll"
调用方法:shRunDefltBrowser("www.pdriver.com")
2 shCenterWindow 将窗口位于屏幕中央
版本:PBVM60.dll,PBVM80.dll,PB7我没用过,不过我想应该有。
函数声明:function long shCenterWindow(long hWnd) library "pbvm60.dll"
调用方法:shCenterWindow(handle(w_about))
六、//允许用户只允许修改新增加的记录,而检索出来的记录则不允许修改。
打开列的属性中的Expressions,在protect中输入条件判别式:
if(isRowNew(),0,1)
七。//当程序中用到了动态加入的对象,如BMP资源文件、数据窗口对象,PB编译时是扫描不到的,解决方法:
1.将此对象写入到资源文件中:
用记事本创建资源文件dw_object.pbr,写入:c:/myprogram.pbl(dw_sj)
编译时将此文件选入Resource File Name处。
2.将应用编译成PBD、DLL文件。
八、//当编辑框得到焦点时自动选中内容:
this.selectText(1,len(sle_1.text))
九、
//改变DW的查询条件语句
string ls_select,ls_filter
ls_select = dw_1.getSqlSelect()
ls_select = mid(ls_select,1,pos(upper(ls_select),'FROM ')+30)
ls_filter="WHERE service_kind=" + vi_service_kind + " ORDER BY FEE_ID ASC "
ls_select = ls_select + ls_filter
dw_1.Reset()
dw_1.SetTransObject(SQLCA)
dw_1.SetSQLSelect(ls_select)
dw_1.Retrieve()
十、
|
1、数据窗口隔行颜色显示
在列的字体背景中:
if(currentrow()=getrow(),rgb(255,240,194),if(mod(getrow(),2)=1, &rgb(255,254,249) , rgb(247,247,239)))
表达式中rgb(255,240,194)为浅黄色,rgb(255,254,249)为浅白色,rgb(247,247,239)为浅黄色
2、横向滚动条在最右处,当增加一行时,怎样让它滚到最左边呢?
dw_1.modify("datawindow.HorizontalScrollPosition=1")
3、ocx注册
1、在DOS或Windows命令行下运行:regsvr32 ocxname.OCX 注册
2、用Install Shield,在里面选“Self-Registered”,安装程序将自动注册。
3、在PB应用程序中注册:
函数声明:
Function long DllRegisterServer() Library "ocxname.OCX" 也许未amovie.ocx
调用:
LONG ll_RC
ll_RC = DllRegisterServer()
4、关闭所有子窗口
关闭所有子窗口 getfirstsheet,getnextsheet
do while isvalid(w_main.getfirstsheet())
close(w_main.getfirstsheet())
loop
关闭当前子窗口
window w_tmp
w_tmp = w_main.getactivesheet()
if isvalid(w_tmp) then
close(w_tmp)
end if
5 、透明背景
this.BackColor = 2^29
6、在设置DataWindow的过滤条件时注意比较符and or not like的先后顺序,最后以括号明显的表示顺序为好,提高可读性,确保结果万无一失。
例如下面的语法就是错误的
dw_1.setFilter("name like '赵%' and sex = 0")
因为and的级别比like优先,所以需要改为
dw_1.setFilter("(name like '赵%') and (sex = 0)")
7、取服务器事件
select getdate() from table_name;表名为自己系统的表,哪个都行.
|
PB技巧集锦
716

被折叠的 条评论
为什么被折叠?



