pb开发中的一些小窍门和知识点,希望大家继续补充

kylinwind 2002-04-22 07:41:16
1.你注意到没有,数据窗口画板里面,在写表达式的时候,试着用一些用户自定义的全局变量和全局函数,你会发现在某些特殊的场合,这个小窍门还是很有用的。
2.有些程序员在窗口的右键pop菜单里面写了很多代码,在菜单里面有很多w_windowname.controlname等等引用,如果这个窗口被继承,很容易就会出毛病,别忘了在菜单里面可以引用parentwindow哦,有了它我的pop菜单里面的代码和具体窗口无关,随便继承。当然强烈建议最好还是把所有和窗口相关的逻辑都转移到窗口的函数和事件中去,在pop菜单中触发调用。
3.whichdw.describe("evaluate('lookupdisplay("+colname+")',"+string(row)+")")
这个表达式可以得到指定列的显示值。(这个知识点有滥竽充数之嫌,但是一时间我真是想不起来太多的东西)
4.在数据窗口画板里面我们如果想要比较当前行和上一行或者下一行的值,怎么比较呢,哈哈,看这个就知道了
if ( yw_bc_circuit_dlcode = yw_bc_circuit_dlcode [-1] and yw_bc_circuit_dlname = yw_bc_circuit_dlname [-1] and yw_bc_circuit_xtno = yw_bc_circuit_xtno [-1] ,0,1)
这个表达式就是比较当前行和上一行是否相同的。其他的依此类推就行了。
5.两个结构相同的数据窗口之间快速复制数据
dw_1.object.data = dw_2.object.data

暂时想起来这么多,欢迎大家继续补充。。。
...全文
152 84 打赏 收藏 转发到动态 举报
写回复
用AI写文章
84 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyi2002 2002-05-20
  • 打赏
  • 举报
回复
脚本自动生成,我认为十分方便,它内括一些常用的SQL语句,如:INSERT,SELECT等等,还有就是程序结构,如IF..END IF,CHOOSE CASE..END CHOOSE等,你再也不必为语句的错误输写而烦恼。虽然我用PB已有一段时间了,但还是在最近才开始使用到这个功能。
   在脚本编辑状态下,点右键。
suziniren 2002-05-18
  • 打赏
  • 举报
回复
PB 中的导出、 修改、 导入等很方便。
cdzydgyr 2002-05-18
  • 打赏
  • 举报
回复
值得,我要收藏它!
xiongxiao 2002-05-18
  • 打赏
  • 举报
回复
学习
longfix 2002-05-17
  • 打赏
  • 举报
回复
up!
mahujava 2002-05-17
  • 打赏
  • 举报
回复
学习。
zhangli8884615 2002-05-17
  • 打赏
  • 举报
回复
我收
风在天涯 2002-05-17
  • 打赏
  • 举报
回复
收藏。
yjs_lh 2002-05-17
  • 打赏
  • 举报
回复
直接修改datawindow的源代码。
先将datawindow导出为srw,修改后再导入。
修改units: 单位
修改process:风格
......
zjchenhui 2002-05-17
  • 打赏
  • 举报
回复
GZ.
herotx 2002-05-17
  • 打赏
  • 举报
回复
作个记号!
banalman 2002-05-17
  • 打赏
  • 举报
回复
pb 的脚本自动填充功能大家注意到了吗??
lingshiming 2002-05-16
  • 打赏
  • 举报
回复
收藏
qlzgdzfl 2002-05-16
  • 打赏
  • 举报
回复
算我一个
来,不过俺从别人那里学的
Tips:消除数据窗口的英文提示 [Close]  
  //在数据窗口的dberror事件中加入下列代码,可以根据自己需要来扩展出错检测
//文章中的'primary key for'等会根据pb的版本而不同。
if pos(sqlerrtext,'primary key for')<>0 then
messagebox("","记录重复了,请重新输入")
this.setfocus()
this.scrolltorow(row)
return 1
elseif pos(sqlerrtext,'not running')<>0 then
messagebox("","数据库连接不上,请与管理员联系")
return 1
elseif pos(sqlerrtext,"Integrity constraint violation: Column")<>0 then
string ziduan
ziduan=mid(sqlerrtext,80,pos(sqlerrtext,"in table") - 82)
messagebox("","["+this.describe(ziduan+"_t.text")+"]不能为空")
this.setfocus()
this.scrolltorow(row)
this.setcolumn(ziduan)
return 1
end if
//pb6.5中的

integer ls_len,ls_len1,ls_len2,ls_len3,ls_len4
if pos(sqlerrtext,'primary key for')<>0 then
messagebox("","记录重复了,请重新输入")
this.setfocus()
this.scrolltorow(row)
return 1
elseif pos(sqlerrtext,'not running')<>0 then
messagebox("","数据库连接不上,请与管理员联系")
return 1
elseif pos(sqlerrtext,"Integrity constraint violation: Column")<>0 then
ls_len = pos(sqlerrtext,"Integrity constraint violation: Column")
ls_len1 = len("Integrity constraint violation: Column")
ls_len2 = ls_len + ls_len1 + 2
ls_len3 = pos(sqlerrtext,"in table")
ls_len4 = ls_len3 - 2 - ls_len2
string ziduan
ziduan=mid(sqlerrtext,ls_len2,ls_len4)
messagebox("系统提示","[ "+this.describe(ziduan+"_t.text")+" ] 不能为空!",stopsign!)
this.setfocus()
this.scrolltorow(row)
this.setcolumn(ziduan)
return 1
else
messagebox("系统提示","数据发生错误!,是否有一项未输入值,请检查!",stopsign!)
return 1
end if

asa7.0中的
其实简单的,只是一点不同看看sqlerrtext就知道连

OK

jxc 2002-05-16
  • 打赏
  • 举报
回复
收藏
me_jhj 2002-05-16
  • 打赏
  • 举报
回复
怎么用变速齿轮,请多指教
mx_ch 2002-05-16
  • 打赏
  • 举报
回复
我也来一个,数据窗口中的一个函数,不知大家注意到没有,计算方差的函数
Varp(计算方差的列{,范围}{,表达式(条件)}
例:
Varp(salary)----求得salary列的方差
jjweid 2002-04-28
  • 打赏
  • 举报
回复
继续up阿~~~

选中控键 ctrl+t 复制多个嘿嘿~
ctrl+k察看其script
tiger201 2002-04-25
  • 打赏
  • 举报
回复
ldy(罗大佑) ( )
变速齿轮是:用变速齿轮像加速游戏一样,加速你的程序。
它没有优化你的程序,但反应时间确实短了好多!
调试的时候老是要连库,每次要等好久,烦!



yt_yule 2002-04-24
  • 打赏
  • 举报
回复
Case( dealintype WHEN 0 THEN RGB(254,251,235) WHEN 2 THEN rgb(254,251,235) ELSE RGB(0,0,255))
写道字段的protect中不仅仅是颜色改变的问题看看

实验过了,没有通过。protect的值只能是1和2。
请作者验证!拿出正确的。
加载更多回复(64)

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧