一、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;表名为自己系统的表,哪个都行. |