60个PB数据窗口技巧.docx

上传人:b****2 文档编号:509529 上传时间:2023-04-29 格式:DOCX 页数:26 大小:27.80KB
下载 相关 举报
60个PB数据窗口技巧.docx_第1页
第1页 / 共26页
60个PB数据窗口技巧.docx_第2页
第2页 / 共26页
60个PB数据窗口技巧.docx_第3页
第3页 / 共26页
60个PB数据窗口技巧.docx_第4页
第4页 / 共26页
60个PB数据窗口技巧.docx_第5页
第5页 / 共26页
60个PB数据窗口技巧.docx_第6页
第6页 / 共26页
60个PB数据窗口技巧.docx_第7页
第7页 / 共26页
60个PB数据窗口技巧.docx_第8页
第8页 / 共26页
60个PB数据窗口技巧.docx_第9页
第9页 / 共26页
60个PB数据窗口技巧.docx_第10页
第10页 / 共26页
60个PB数据窗口技巧.docx_第11页
第11页 / 共26页
60个PB数据窗口技巧.docx_第12页
第12页 / 共26页
60个PB数据窗口技巧.docx_第13页
第13页 / 共26页
60个PB数据窗口技巧.docx_第14页
第14页 / 共26页
60个PB数据窗口技巧.docx_第15页
第15页 / 共26页
60个PB数据窗口技巧.docx_第16页
第16页 / 共26页
60个PB数据窗口技巧.docx_第17页
第17页 / 共26页
60个PB数据窗口技巧.docx_第18页
第18页 / 共26页
60个PB数据窗口技巧.docx_第19页
第19页 / 共26页
60个PB数据窗口技巧.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

60个PB数据窗口技巧.docx

《60个PB数据窗口技巧.docx》由会员分享,可在线阅读,更多相关《60个PB数据窗口技巧.docx(26页珍藏版)》请在冰点文库上搜索。

60个PB数据窗口技巧.docx

60个PB数据窗口技巧

60个数据窗口技巧

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

答:

选择对应的column的displayaspicture属性为true 

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

答:

stringls_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、要新建一个表A但风格和现有表格B风格一样,怎么将A表快速设置成表B风格?

复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可

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

答:

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

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

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

答:

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

dw_1.filter()

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

答:

stringls_temp[]

setnull(ls_temp)

dw_1.OBJECT.columnname.primary.current=ls_temp

10、如何设置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)))

11、如何获取指定名称的datawindowOBJECT?

答:

DWObjectldwo_use,ldwo_abc

ldwo_use=dw_1.Object

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

注﹕不是版本的问题,是你没找对位置。

在PB的browser中,展开任意放置了datawindow控件的窗口,然后展开datawindow出现dwobject,右边的函数部分就可以看到这几个函数。

因为它的参数从字面上无法猜测出其含义,而帮助上没讲,所以有此一问。

你从哪儿找到这些函数的?

我只知道__get_attribute()。

 

pb7.0以前的版本这些函数的形式为get_attribute(),没有前面的两个横线。

 

 dwobject ldwo_object,ldwo_object_item 

 ldwo_object= dw_1.object 

 ldwo_object_item=ldwo_object.__get_attribute('objectname',false) 

  

 参数中的objectname是datawindow中对象的名字,如列名等。

这样可以根据列名得到该列对应的dwo,就跟在datawindow的click事件中的dwo参数一样。

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

答:

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

dw_1.accepttext()

dw_1.retrieve()

13、如何缩放datawindow的打印大小?

答:

dw_1.OBJECT.datawindow.zoom=150ordw_1.OBJECT.datawindow.zoom=75

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

答:

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

dw_1.filter()

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

答:

建立一个计算域,表达式为string(datetime(today(),now()),'yyyy年mm月dd日hh点mm分ss秒'),同时设置datawindow的属性dw_1.Object.DataWindow.Timer_Interval=500

16、如何让带用titlebar的datawindow控件的标题栏诚活动窗口的颜色?

答:

外部函数定义:

functionlongSetActiveWindow(longhwnd)Library"user32.dll"

datawindow控件的clicked事件代码:

setactivewindow(handle(this))

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

答:

在datawindow中建立一个计算列,expression为'',并将该计算列移动为datawindow的第一个列,在datawindow控件的

rowfocuschanged事件中写入代码:

SetRowFocusIndicator(hand!

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

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

答:

定义外部函数引用声明

SUBROUTINEkeybd_event(intbVk,intbScan,intdwFlags,intdwExtraInfo)LIBRARY"user32.dll"

代码如下:

[constantintegerVK_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键

19、如何打印datawindow的内容到文件中?

答:

dw_1.OBJECT.datawindow.print.fileName="c:

\temp.prn"

dw_1.print()

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

答:

dw_1.OBJECT.columnname.Initial="your_initial_value"

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

答:

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

dw_1.filter()

22、如何让带有titlebar的datawindow不可以移动?

答:

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

return1

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

答:

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

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

答:

dw_1.Object.columnname.Values=""

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

答:

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

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

答:

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

stringszselect

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()

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

答:

使用datawindow.storage属性

举例:

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

longlstorage

lstorage=long(dw_1.OBJECT.datawindow.storage)

iflstorage>50000thendbcancel()

28、如何控制打印横向:

dw_control.OBJECT.datawindow.print.orientation=129、如何进行预览:

dw_control.OBJECT.datawindow.print.preview="yes"

30、如何连续在同一张纸打印两个数据窗口?

答:

dw_1.OBJECT.datawindow.print.filename="temp.prn"

dw_2.OBJECT.datawindow.print.filename="temp.prn"

dw_1.print()

dw_2.print()

31、如何将pb9.0的datawindow转化为pb8.0版本的datawindow?

答:

editsource将release9;改为release8;

并删除以下内容:

print.printername=""

print.canusedefaultprinter=yes

print.cliptext=noprint.overrideprintjob=no

hidegrayline=no

encodeselflinkargs="1"

export.xml(headgroups="1"includewhitespace="0"metadatatype=0savemetadata=0)

import.xml()

export.pdf(method=0distill.custompostscript="0"xslfop.print="0")

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

答:

建立一个计算列,expression为getrow()-first(getrow()forgroup1)+1

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

答:

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

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

34、保存datawindow数据到excel中

//...Initdocname

//...GetFileOpenNameoranyothermethodifdw_1.SaveAs(docname,HTMLTable!

True)=-1then

MessageBox("Warning","Unabletoexportdata.Errorwritingtofile!

",Exclamation!

return

endif//ConvertHTMLfiletoExcelnativeformat

OLEObjectexcel

excel=CREATEOLEObject

ifexcel.ConnectToObject(docname)=0then

excel.application.DisplayAlerts=FALSE

excel.application.workbooks

(1).Parent.Windows(excel.application.workbooks

(1).Name).Visible=True

excel.application.workbooks

(1).saveas(docname,39)

excel.application.workbooks

(1).close()

endifDESTROYexcel

//done35、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的行数?

一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?

其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。

方法一:

longll_Selectedll_Selected=long(dw_1.describe("evaluate('sum(if(IsSelected(),1,0)forall)',1)"))方法二:

longll_Selectedll_Selected=long(dw_1.describe("evaluate('count(IsSelected()forall)',1)"))方法三:

upperbound(dw_1.Object.Data.Selected)

36、问:

怎么让PB只打印当前记录,是用Free格式制作的数据窗口!

答:

DataStoreldt_temp

longll_Row,ll_Rows

ll_Rows=dw_XX.Rowcount()

Ifll_Rows=0ThenGoTothe_end

Ifll_Rows=1Then

dw_XX.Print()

GoTothe_end

Endif

dw_XX.SetRedraw(False)

ldt_temp=CreateDataStore

ldt_temp.DataObject=dw_XX.DataObject

ll_Row=dw_XX.GetRow()

dw_XX.RowsMove(1,ll_Rows,Primary!

ldt_temp,1,Primary!

ldt_temp.RowsMove(ll_Row,ll_Row,Primary!

dw_XX,1,Primary!

dw_XX.Print()

dw_XX.RowsMove(1,1,Primary!

ldt_temp,ll_Row,Primary!

ldt_temp.RowsMove(1,ll_Rows,Primary!

dw_XX,1,Primary!

Destroyldt_temp

dw_XX.SetRedraw(True)

the_end:

//只用将上述脚本拷入到打印部分即可,dw_XX为被打印的free型数据窗口,该方法可保证dw_XX中的数据在打印前后包括sort等属性均不发生任何改变,但效率较低,不宜用在数据量太大的数据窗口中,当然,考虑到打印本身速度就比较慢,所以3000行数据是可以采用这种方法并让用户接受的。

若在同一窗口上存在与dw_XX共享的grid数据窗口并且与dw_XX同时显示,则需要与dw_one一起SetRedraw()37、怎样将数据窗口(free格式)中的内容转成word文档

答:

给你两个函数:

(1)、辅助函数

$PBExportHeader$f_cncharnum.srf

$PBExportComments$得到字符串中汉字或者双字节的个数

globaltypef_cncharnumfromfunction_OBJECT

endtypeforwardprototypes

globalfunctionintegerf_cncharnum(stringaString)

endprototypesglobalfunctionintegerf_cncharnum(stringaString);

//函数名:

f_cncharnum

//用途:

返回一个字符串中汉字的个数

//输入:

aString-string,给定的字符串

//返回值:

li_num-Integer,给定的字符串中汉字的个数

//注意:

1.此方法基于汉字的国标汉字库区位编码的有效性,不符合此编码的系统此函数无效!

//2.若汉字串含有非汉字字符,如图形符号或ASCII码,则这些非汉字字符将保持不变.

//例如:

li_ret=f_cncharnum("摆渡人ferryman")li_ret=3stringls_ch//临时单元

stringls_SecondSecTable//存放所有国标二级汉字读音

integerli_num=0//返回值

integeri,jFori=1toLen(aString)

ls_ch=Mid(aString,i,1)

IfAsc(ls_ch)>=128then//是汉字

li_num++

i=i+1

Endif

NextReturnli_numendfunction---------------------------------------------------------------

(2)、转到WORD

$PBExportHeader$f_outputtoword_new.srf

globaltypef_outputtoword_newfromfunction_OBJECT

endtypeforwardprototypes

globalfunctionintegerf_outputtoword_new(datawindowadw)

endprototypesglobalfunctionintegerf_outputtoword_new(datawindowadw);

//函数名:

f_outputtoword_new

//输入:

adw-datawindow,指定的数据窗口

//返回值:

Integer

constantintegerppLayoutBlank=12

OLEObjectole_OBJECT

ole_OBJECT=CREATEOLEObjectintegerli_retli_ret=ole_OBJECT.ConnectToObject("","word.application")

IFli_ret<>0THEN

//如果Word还没有打开,则新建。

li_ret=ole_OBJECT.ConnectToNewObject("word.application")

ifli_ret<>0then

MessageBox('OLE错误','OLE无法连接!

错误号:

'+string(li_ret))

return0

endif

ole_OBJECT.Visible=True

ENDIFlongll_colnum,ll_rownum

constantlongwdWord9TableBehavior=1

constantlongwdAutoFitFixed=0

constantlongwdCell=12

stringls_value

pointeroldpointeroldpointer=SetPointer(HourGlass!

)stringls_OBJECTs,ls_obj,ls_objs[],ls_objtag[]

longll_pos,ll_len,ll_num=0ls_OBJECTs=trim(adw.Describe('datawindow.Objects'))dowhile(pos(ls_OBJECTs,"~t")>0)

ll_pos=pos(ls_OBJECTs,"~t")

ll_len=ll_pos-1

ls_obj=left(ls_OBJECTs,ll_len)

if(adw.Describe(ls_obj+'.type')='column'or&

adw.Describe(ls_obj+'.type')='compute')and&

(adw.Describe(ls_obj+'.band')='detail')and(ls_obj<>"asd")then

ll_num+=1

ls_objs[ll_num]=ls_obj

ls_objtag[ll_num]=adw.Describe(ls_obj+'.tag')

endif

ls_OBJECTs=right(ls_OBJECTs,len(ls_OBJECTs)-ll_pos)

loop//得到数据窗口数据的列数与行数(行数应该是数据行数+1)

ll_colnum=ll_num

ll_rownum=adw.rowcount()+1ole_OBJECT.Documents.Add()

ole_OBJECT.ActiveDocument.Tables.Add(ole_OBJECT.Selection.Range,ll_rownum,ll_colnum)stringls_colname

integeri,j,kfori=1toll_colnum

//得到标题头的名字

ls_value=ls_objtag

ole_OBJECT.Selection.TypeText(ls_value)

fork=1tof_cncharnum(ls_value)

ole_OBJECT.Selection.TypeB

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2