当前位置:首页 > 技能相关 > PowerBuilder > 正文内容

PB 关于数据窗口DataWindow的31个小技巧(设置篇)(收藏检索使用)

admin1年前 (2023-12-30)PowerBuilder4970 修订时间:2023-12-30 12:37:16

1、如何让存储文件目录的列,显示图片?

选择对应的column的display as picture属性为true

2、如何复制grid类型的所选择的行的数据到系统剪切板?

string ls_selected
ls_selected=dw_1.Object.DataWindow.Selected.Data
clipboard(ls_selected)

3、如何复制graph风格的datawindow中的图形到剪切板?

dw_1.clipbord("gr_1")

4、如何设置的DW底色?

在DW的editsource中改变color的值

5、如何将Grid风格改成自由格式?

在DW的editsource中将processing=1的1改为0

6、如何实现gird风格的datawindow的多栏表头?

添加 text到header带区,并设置band属性为foreground保存,edit source 修改text的x和width属性表达式如下:

x="100~t integer(describe('firstcol.x')" width="100~tinteger(describe('lastcol.x')) - integer(describe('firstcol.x')) +integer(describe('lastcol.width'))

7、如何过滤dw编辑风格的显示值为指定值的记录?

dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your+"'")
dw_1.filter()

8、如何设置datawindow的某一列为空?

string ls_temp[]
setnull(ls_temp)
dw_1.object.columnname.primary.current=ls_temp

9、如何设置datawindow的单双行不同颜色间隔?

在detail带区的color属性表达式中写上

if(mod(getrow(),2)=1 ,rgb(255,0,0),rgb(0,255,0))

如果是当前行以第三种颜色表示,表达式如下:

if(getrow()=current(),rgb(255,0,0),if(mod(getrow(),2)=1 ,rgb(0,0,255),rgb(0,255,0)))

10、如何获取指定名称的datawindow  OBJECT?

DWObject ldwo_use,ldwo_abc
ldwo_use = dw_1.Object
ldwo_abc = ldwo_use.__get_attribute("t_1",FALSE)   //t_1为datawindow中text对象的名称

11、如何使用datawindow的查询模式?

dw_1.Object.DataWindow.QueryMode='yes'将datawindow改变为查询模式后,接收用户的输入,再使用一下代码获取结果:

dw_1.accepttext()
dw_1.retrieve()

12、如何在已过滤后的数据基础上对datawindow进行过滤?

dw_1.setfilter(dw_1.describe("datawindow.table.filter")+your_join+your_new_filter)
dw_1.filter()

13、如何在datawindow中显示动态时间?

建立一个计算域,表达式为

string(datetime(today(),now()),'yyyy年mm月dd日 hh点mm分ss秒')

同时设置datawindow的属性

dw_1.Object.DataWindow.Timer_Interval=500

14、如何让带用title bar的datawindow控件的标题栏成活动窗口的颜色?

外部函数定义:

funcation logn SetActiveWindow(long hwnd ) Library "user32.dll"

datawindow控件的clicked事件代码:

setactivewindow(handle(this))

15、如何让带有title bar的datawindow不可以移动?

在datawindow的自定义事件ue_nchittest(pbm_nchittest)中写入如下代码:

return 1

16、如何设置datawindow的当前行指示图标?

在datawindow中建立一个计算列,expression为'',并将该计算列移动为datawindow的第一个列,在datawindow控件的rowfocuschanged事件中写入代码:

SetRowFocusIndicator(hand!)

或 

setrowfucsindicator(p_1)     //p_1为窗口上的picture控件名

17、如何通过代码打开dddw?

答:定义外部函数引用声明

SUBROUTINE keybd_event( int bVk, int bScan, int dwFlags, int dwExtraInfo) LIBRARY "user32.dll"

代码如下:

[constant integer VK_F4 = 115
dw_1.SetFocus()
dw_1.SetColumn("dept_head_id") //设置当前dddw
keybd_event( VK_F4,0,0,0 ) // 按下F4键
keybd_event( VK_F4,0,2,0 ) // 释放F4键

18、如何设置dddw的初始值?

dw_1.Object.columnname.Initial="your_initial_value"

19、如何只显示不同的数据?

dw_1.filter("isnull(columnname[-1]) and columnname<>columnname[-1]")
dw_1.filter()

20、如何在N-UP显示风格中建立基于第N栏中的列的计算列?

如column有两列,number和price ,并显示为两栏,则第一栏的cost计算列的expression为number*price,第二栏的cost_1计算列的expression为number[1]*price[1]

21、如何清空ddlb或edit.codetable中项目?

dw_1.Object.columnname.Values=""

22、如何实现指定的column的字体旋转90度?

dw_1.Oblect.columnname.font.Escapement ="900"

23、如何获取datawindow的sql代码?

可以通过以下四种方法获取sql代码:

string szselect
szselect=dw_1.describe("datawindow.table.select")
szselect=dw_1.describe("datawindow.table.sqlselect")
szselect=dw_1.describe("datawindow.table.select.attribute")
szselect=dw_1.getsqlselect()

24、如何获取datawindow对象占有的虚拟存储的容量?

使用datawindow.storage属性

举例:在datawindow控件的retrieverow事件中,写如如下代码:

long lstorage
lstorage=long(dw_1.Oblect.datawindow.storage)
if lstorage>50000 then dbcancel()

25、如何设置datawindow分组后每个分组中的记录号?

建立一个计算列,expression为

getrow() - first(getrow() for group 1)+1

26、如何实现在datawindow中只有新增的行,才可以编辑?

在所有的column的protect属性表达式中写入以下表达式:

if(isrownew(),'0','1')

27、请问如何实现当用户单击单行编辑框时,选中编辑框内的所有字符,以便用户替换录入?

不要在getfocus()中直接写入代码,创建单行编辑框的自定义单击事件ue_clicked(),Event ID为 pbm_bnclicked

this.selecttext(1,len( this.text))

getfocus事件的代码为

This.Post Event ue_clicked()

28、我想在DataWindow对象中添加一计算域,统计一下性别为男的记录个数,该如何实现呢?

添加一计算域,公式为

sum( if( stu_sex ='男', 1, 0 
))

29、我想在数据窗口控件中判断用户是否按下CTRL+W复合键来保存数据该如何做呢?

创建数据窗口控件自定义事件 ue_keydown() ,Event ID 为 pbm_dwnkey :

If KeyDown(KeyControl!) and KeyDown(KeyW!) Then  
   Messagebox("ok","你按的是CTRL+W键")
End if

30、如何实现对dw数据窗口中的某一列按指定字符串"string"进行检索后,使检索结果中的所有与"string"相匹配的字符显示为一指定颜色

//如果符合条件,则显示灰色的背景,否则白色;本方法同样可以设置该列的字体颜色:其中“column_name”为列名。

dw_1.object.column_name.background.color = "16777215~tif ( fromid = 'string', rgb(192,192,192), rgb(255,255,255))"

也可以是一行都变色:

dw_1.object.Datawindow.detail.color = "16777215~tif ( fromid = 'string', rgb(192,192,192), rgb(255,255,255))"

31、在运行中怎样刷新dataWindow中的DropDownDW 数据?
在dataWindow中定义了其中某些字段的edit属性为DropDownDW,在运行程序时,DropDownDW的值已经改变,但下拉时还是原来的数据,怎样更新?

DataWindowChild state_child
integer 
rtncode
rtncode = dw_1.GetChild(' emp_state', state_child)
IF rtncode = -1 
THEN MessageBox("Error", "Not a DataWindowChild")
CONNECT USING SQLCA;
state_child.SetTransObject(SQLCA)
state_child.Retrieve()
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/?id=353

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。