ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:23.87KB ,
资源ID:6406544      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6406544.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据窗口常用技巧.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据窗口常用技巧.docx

1、数据窗口常用技巧数据窗口常用技巧1、如何让存储文件目录的列,显示图片?答:选择对应的column的display as picture属性为true2、如何复制grid类型的所选择的行的数据到系统剪切板?答:string ls_selectedls_selected=dw_1.Object.DataWindow.Selected.Dataclipbord(ls_selected)4、如何设置的DW底色?在DW的editsource中改变color的值5、如何将Grid风格改成自由格式?在DW的editsource中将processing=1的1改为06、要新建一个表A但风格和现有表格B风格一样

2、,怎么将A表快速设置成表B风格?复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可7、如何实现gird风格的datawindow的多栏表头?答:添加 text到header带区,并设置band属性为foreground保存,edit source 修改text的x和width属性表达式如下:x=100t integer(describe(firstcol.x) width=100tinteger(describe(lastcol.x) - integer(describe(firstcol.x) +integer(describe(lastcol.width)8、

3、如何过滤dddw编辑风格的显示值为指定值的记录?答:dw_1.setfilter(lookupdisplay(column_name)=+ls_display_value_your+)dw_1.filter()9、如何设置datawindow的某一列为空?答:string ls_tempsetnull(ls_temp)dw_1.o b j e c t.columnname.primary.current=ls_temp10、如何设置datawindow的单双行不同颜色间隔?答:在detail带区的color属性表达式中写上if(mod (getrow(),2)=1 ,rgb(255,0,0),

4、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、如何获取指定名称的datawindowo b j e c t?答:DWObject ldwo_use,ldwo_abc ldwo_use = dw_1.Object ldwo_abc = ldwo_use._get_attribute(t_1,FALSE)/t_1为datawindow中text对象的名称12、如何缩放datawindow的打印大小?答:dw

5、_1.o b j e c t.datawindow.zoom=150 or dw_1.o b j e c t.datawindow.zoom=7513、如何在已过滤后的数据基础上对datawindow进行过滤?答:dw_1.setfilter(dw_1.describe(datawindow.table.filter)+your_join+your_new_filter)dw_1.filter()14、如何在datawindow中显示动态时间?答:建立一个计算域,表达式为string(datetime(today(),now(),yyyy年mm月dd日 hh点mm分ss秒),同时设置dataw

6、indow的属性dw_1.Object.DataWindow.Timer_Interval=50015、如何让带用title bar的datawindow控件的标题栏诚活动窗口的颜色?答:外部函数定义:funcation logn SetActiveWindow(long hwnd ) Library user32.dlldatawindow控件的clicked事件代码:setactivewindow(handle(this)16、如何设置datawindow的当前行指示图标?答:在datawindow中建立一个计算列,expression为,并将该计算列移动为datawindow的第一个列,

7、在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 = 115dw_1.SetFocus()dw_1.SetColumn( dept_he

8、ad_id ) /设置当前dddwkeybd_event( VK_F4,0,0,0 ) / 按下F4键keybd_event( VK_F4,0,2,0 ) / 释放F4键18、如何打印datawindow的内容到文件中?答: dw_1.o b j e c t.datawindow.print.fileName =c:temp.prndw_1.print()19、如何设置dddw的初始值?答:dw_1.o b j e c t.columnname.Initial=your_initial_value20、如何只显示不同的数据?答:dw_1.filter(isnull(columnname-1)

9、and columnnamecolumnname-1)dw_1.filter()21、如何让带有title bar的datawindow不可以移动?答:在datawindow的自定义事件ue_nchittest(pbm_nchittest)中写入如下代码:return 122、如何在N-UP显示风格中建立基于第N栏中的列的计算列?答:如column有两列,number和price ,并显示为两栏,则第一栏的cost计算列的expression为number*price,第二栏的cost_1计算列的expression为number1*price123、如何清空ddlb或edit.codetab

10、le中项目?答:dw_1.Object.columnname.Values=24、如何实现指定的column的字体旋转90度?答:dw_1.o b j e c t.columnname.font.Escapement =90025、如何获取datawindow的sql代码?答: 可以通过以下四种方法获取sql代码:string szselectszselect=dw_1.describe(datawindow.table.select)szselect=dw_1.describe(datawindow.table.sqlselect)szselect=dw_1.describe(datawin

11、dow.table.select.attribute)szselect=dw_1.getsqlselect()27、如何获取datawindow对象占有的虚拟存储的容量?答:使用datawindow.storage属性举例:在datawindow控件的retrieverow事件中,写如如下代码:long lstoragelstorage=long(dw_1.o b j e c t.datawindow.storage)if lstorage50000 then dbcancel()28、如何连续在同一张纸打印两个数据窗口?答:dw_1.o b j e c t.datawindow.print.

12、filename=temp.prndw_2.o b j e c t.datawindow.print.filename=temp.prndw_1.print()dw_2.print()29、如何设置datawindow分组后每个分组中的记录号?答:建立一个计算列,expression为 getrow() - first(getrow() for group 1)+130、如何实现在datawindow中只有新增的行,才可以编辑?答:在所有的column的protect属性表达式中写入以下表达式:if(isrownew(),0,1)31、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的

13、行数?一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。方法一: long ll_Selected ll_Selected = long(dw_1.describe(evaluate(sum( if(IsSelected(), 1, 0) for all),1)方法二: long ll_Selected ll_Selected = long(dw_1.describe(evaluate(count(IsSelected() for all),1)方法三:upperbound(dw_1.Object.Data.

14、Selected)32、问:怎么让PB只打印当前记录,是用Free格式制作的数据窗口!-答:DataStore ldt_templong ll_Row , ll_Rowsll_Rows = dw_XX.Rowcount()If ll_Rows = 0 Then GoTo the_endIf ll_Rows = 1 Thendw_XX.Print()GoTo the_endEnd ifdw_XX.SetRedraw(False)ldt_temp = Create DataStoreldt_temp.DataObject = dw_XX.DataObjectll_Row = dw_XX.GetRo

15、w()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!)Destroy ldt_tempdw_XX.Set

16、Redraw(True)the_end:/ 只用将上述脚本拷入到打印部分即可,dw_XX为被打印的free型数据窗口,该方法可保证dw_XX中的数据在打印前后包括sort等属性均不发生任何改变,但效率较低,不宜用在数据量太大的数据窗口中,当然,考虑到打印本身速度就比较慢,所以3000行数据是可以采用这种方法并让用户接受的。若在同一窗口上存在与dw_XX共享的grid数据窗口并且与dw_XX同时显示,则需要与dw_one一起SetRedraw()38、字段如何自动换行的同时且自动高度?答:将数据窗口中相应列的auto horz scroll 为不选中,选中autosize height 将det

17、ail的autosize height选中。在数据窗口retrieve 后调用下面函数即可 uf_set_text(datawindow adw_content,string as_columns,boolean,ab_ignoreblank) /* describe: 在数据窗口adw_content中,在as_columns中包含的列中插入空格 args: as_columns 要操作的多个列,列间用逗号隔开 */ if (not isvalid(adw_content) or isnull(as_columns) or len(as_columns)1 or isnull(ab_igno

18、reblank) then return -1 n_cst_string lnv_string string ls_column , ls_width ,as_source,as_replaced ,ls_temp int li_upperbound , li_width , li_column , li_fontWidth, li_counter long ll_rowcount , ll_row , ll_totalstep int li_yield lnv_string.of_parsetoarray(as_columns,ls_column) li_upperbound = upper

19、bound(ls_column) ll_rowcount = adw_content.rowcount() if li_upperbound1 or ll_rowcount1 then return -1 openwithparm(w_waiting,this) ib_cancel = false iw_frame.enabled = false ll_totalstep = ll_rowcount * li_upperbound w_waiting.uf_register(ll_totalstep) for li_column = 1 to li_upperbound ls_width =

20、adw_content.describe(ls_columnli_column+.width) li_width = integer(ls_width) if ls_width=! or ls_width=? or li_width=0 then continue end if /ls_temp = adw_content.describe(ls_columnli_column+.Font.property = width ) /messagebox(ls_columnli_column+.Font.property = width ,ls_temp) /return 1 li_fontwid

21、th = 27 li_counter = li_width / li_fontWidth for ll_row=1 to ll_rowcount if ib_cancel then iw_frame.enabled = true return 0 /pressed cancel button end if as_source = adw_content.getitemstring(ll_row,ls_columnli_column) as_replaced = uf_insertstring(as_source,li_counter, ,false) if as_replacedas_sour

22、ce then adw_content.setitem(ll_row,ls_columnli_column,as_replaced) end if w_waiting.uf_stepit() next next close(w_waiting) iw_frame.enabled = true return 139、如何使dw的列不可移动,不可调整列宽?答:在datawindow的cilcked事件写 if row=0 then return 1 end if40.光标跳转到数据窗口的某一行某一列dw_1.scrolltorow(ll_row) dw_1.setcolumn(ll_column)

23、41 如何使光标指向每页第一行?long ll_firstrowonpage=long(dw_1.describe(datawindow.firstrowonpage)dw_1.scrolltorow(ll_firstrowonpage)dw_1.setrow(ll_firstrowonpage)42. Grid的窗口如何使第一列固定不动?选上data OBJECT的HSplitScroll属性 在constructor事件中: dw_1.Object.DataWindow.HorizontalScrollSplit=integer(dw_1.describe(#1.width) /第一列的宽

24、度 在scrollhorizontal事件中: int iif pane = 1 theni = integer(this.OBJECT.datawindow.horizontalscrollposition2)if i 0 thenthis.OBJECT.datawindow.horizontalScrollPosition = 0end ifelsei = integer(this.Object.DataWindow.HorizontalScrollSplit)if i scrollpos thenthis.OBJECT.datawindow.horizontalScrollPositio

25、n2 = iend ifend if43:数据窗口中如何实现用左右箭头实现焦点切换(tab ,shift+tab)在26楼44:如何禁止修改grid数据窗口列宽度答:在Grid数据窗口的Clicked事件中加入: If row = 0 Then return 145:grid数据窗口改变列宽度事件:event:pbm_lbuttondown,pbm_mousemvoe,pbm_lbuttonup如果:pbm_lbuttondown: 在数据窗口标题栏(getrow() = 0 and GetObjectAtPointer =你的标题)按下鼠标左键,记一个标志;pbm_mousemvoe: 鼠标

26、移动了,在记一个标志;pbm_lbuttonup: 这时鼠标左键up,再判断最后一列的位置是否发生变化,如果有,写你的脚本。46:如何判断数据窗口内容是否修改if dw_wh.deletedcount() + dw_wh.modifiedcount() 0 theninteger li_retli_ret = messagebox(注意,数据已经被修改,是否存盘?,Question!,YesNoCancel!)4346技巧来自天新网 47:如何得到数据窗口鼠标光标下的控件和行 建立一个自定义事件,事件号pbm_dwnmousemove, 事件有参数row、dwo48:如何改变GRID数据窗口列

27、位置(新手常见)先preview,然后在预览窗口拖动位置即可。070411更新49:数据窗口循环删除行,必须要从最后一行开始删除,如for ll_row =dw_1.rowcount() to 1 step -1/if 删除条件 then dw_1.deleterow(ll_row)next当然,也可以用do while 加上 find函数实现 本文来自CSDN博客,转载请标明出处:1.RGB函数计算公式: 颜色值 (65536 * Blue) + (256 * Green) + (Red) 2.控件可拖动: send(handle(this),274,61458,0) 3.如何用程序控制下拉

28、子数据窗口的下拉和收起 用modify或者直接用dw_1.object.col1.dddw.showlist = true 4.检索参数有些不需要传入则传%. 5.如何屏蔽鼠标滚轮触发 在控件的other事件写 if message.number = 522 then return 1 6.得到数据窗口的语法: string ls_dwsyntax ls_dwsyntax=dw_1.describe(datawindow.syntax) 7.得到数据窗口中各列及标题: long ll_count,i string ls_value,ls_colname ll_colnum = Long(dw_

29、1.object.datawindow.column.count) for i = 1 to ll_colnum /得到标题头的名字 ls_colname = dw_1.describe(# + string(i) + .name) + _t ls_value = dw_1.describe(ls_colname + .text) next 8.在程序中动态设置初始值: ex:dw_contro.object.columnName.initial = xxxx 9.如何在DataWindow的SQL语法中不使用SELECT DISTINCT实现删除重复的行 - 起先对你要显示唯一值的列进行排序

30、:city A,然后增加如下过滤字符串: city city -1 or GetRow () = 1 10.如何改变列的字体颜色,提醒用户此列已做修改 - 在列的Color属性中,输入如下表达式IF (column_name column_name.Original, RGB(255, 0, 0), RGB(0, 0, 0)。在这个条件中,如果此列已改变,则显示红色字体,否则显示黑色字体。这个表达式主要用column_name column_name.Original比较当前列的值和原始列的值是否相同来达到判断的目的。 11.在数据窗口的clicked或doubleclicked事件中写上注释/可解决一些意外的bug! 12.如何屏蔽上下鍵触发 新建一个事件:id为pbm_dwnkey

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1