`
cab0605
  • 浏览: 106115 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

57个数据窗口灵活技术

    博客分类:
  • PB
阅读更多

57个数据窗口灵活技术[分享]

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、要新建一个表A但风格和现有表格B风格一样,怎么将A表快速设置成表B风格?
复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可
7、如何实现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'))
8、如何过滤dddw编辑风格的显示值为指定值的记录?
答:dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your+"'")
      dw_1.filter()
9、如何设置datawindow的某一列为空?
答:string ls_temp[]
        setnull(ls_temp)
        dw_1. O B J E C T.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、如何获取指定名称的datawindow O 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_1.Object.DataWindow.QueryMode='yes'将datawindow改变为查询模式后,接收用户的输入,再使用一下代码获取结果:
    dw_1.accepttext()
    dw_1.retrieve()
13、如何缩放datawindow的打印大小?
答:dw_1. O B J E C T.datawindow.zoom=150 or dw_1. O B J E C T.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、如何让带用title bar的datawindow控件的标题栏诚活动窗口的颜色?
答:外部函数定义:
funcation logn SetActiveWindow(long hwnd )  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?
答:定义外部函数引用声明
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键
19、如何打印datawindow的内容到文件中?
答: dw_1. O B J E C T.datawindow.print.fileName ="c:\temp.prn"
        dw_1.print()
20、如何设置dddw的初始值?
答:dw_1. O B J E C T.columnname.Initial="your_initial_value"
21、如何只显示不同的数据?
答:dw_1.filter("isnull(columnname[-1]) and columnname <>columnname[-1]")
      dw_1.filter()
22、如何让带有title bar的datawindow不可以移动?
答:在datawindow的自定义事件ue_nchittest(pbm_nchittest)中写入如下代码:
  return 1
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. O B J E C T.columnname.font.Escapement ="900"
26、如何获取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()      
27、如何获取datawindow对象占有的虚拟存储的容量?
答:使用datawindow.storage属性
    举例:在datawindow控件的retrieverow事件中,写如如下代码:
            long lstorage
            lstorage=long(dw_1. O B J E C T.datawindow.storage)
            if lstorage>50000 then dbcancel()
28、如何控制打印横向:
dw_control. O B J E C T.datawindow.print.orientation= 1

29、如何进行预览:
dw_control. O B J E C T.datawindow.print.preview = "yes"
30、如何连续在同一张纸打印两个数据窗口?
答:dw_1. O B J E C T.datawindow.print.filename="temp.prn"
      dw_2. O B J E C T.datawindow.print.filename="temp.prn"
      dw_1.print()
      dw_2.print()
31、如何将pb9.0 的datawindow转化为pb 8.0版本的datawindow?
答:edit source 将release 9;改为release 8;
      并删除以下内容:
      print.printername=""
      print.canusedefaultprinter=yes
      print.cliptext=no print.overrideprintjob=no
        hidegrayline=no
        encodeselflinkargs="1"
        export.xml(headgroups="1" includewhitespace="0" metadatatype=0 savemetadata=0 )
        import.xml()
        export.pdf(method=0 distill.custompostscript="0" xslfop.print="0" )
32、如何设置datawindow分组后每个分组中的记录号?
答:建立一个计算列,expression为 getrow() - first(getrow() for group 1)+1
33、如何实现在datawindow中只有新增的行,才可以编辑?
答:在所有的column的protect属性表达式中写入以下表达式:
if(isrownew(),'0','1')

34、保存datawindow数据到excel中
//  ...  Init  docname  
//  ...  GetFileOpenName  or  any  other  method  
if  dw_1.SaveAs(docname,  HTMLTable!,  True)  =  -1  then  
      MessageBox("Warning",  "Unable  to  export  data.  Error  writing   to  file!",  Exclamation!)
      return  
end  if  
//  Convert  HTML  file  to  Excel  native  format  
OLEObject  excel  
excel  =  CREATE  OLEObject  
if  excel.ConnectToObject(docname)  =  0  then  
      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()  
end  if  
DESTROY  excel  
//  done   
35、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的行数?
一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?  
其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。  
方法一:  
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.Selected)
36、问:怎么让PB只打印当前记录,是用Free格式制作的数据窗口!
答:  
DataStore  ldt_temp  
long  ll_Row  ,  ll_Rows  
ll_Rows  =  dw_XX.Rowcount()  
If  ll_Rows  =  0  Then  GoTo  the_end  
If  ll_Rows  =  1  Then  
          dw_XX.Print()  
          GoTo  the_end  
End  if  
dw_XX.SetRedraw(False)  
ldt_temp  =  Create  DataStore  
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!)  
Destroy  ldt_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$得到字符串中汉字或者双字节的个数  
global  type  f_cncharnum  from  function_ O B J E C T  
end  type  
forward  prototypes  
global  function  integer  f_cncharnum  (string  aString)  
end  prototypes  
global  function  integer  f_cncharnum  (string  aString);  
//函数名:  f_cncharnum  
//用途:  返回一个字符串中汉字的个数  
//输入:  aString  -  string,  给定的字符串  
//返回值:  li_num  -  Integer,  给定的字符串中汉字的个数  
//注意:  1.  此方法基于汉字的国标汉字库区位编码的有效性,不符合此编码的系统此函数无效!  
//  2.  若汉字串含有非汉字字符,如图形符号或ASCII码,则这些非汉字字符将保持不变.  
//例如:  li_ret  =  f_cncharnum("摆渡人ferryman")  li_ret  =  3  

string  ls_ch  //临时单元  
string  ls_SecondSecTable  //存放所有国标二级汉字读音  
integer  li_num  =  0  //返回值  
integer  i,j  
For  i  =  1  to  Len(aString)  
ls_ch  =  Mid(aString,i,1)  
If  Asc(ls_ch)  >=  128  then  //是汉字  
li_num++  
i  =  i+1  
End  if  
Next  
Return  li_num  
end  function  
---------------------------------------------------------------  
(2)、转到WORD  
$PBExportHeader$f_outputtoword_new.srf  
global  type  f_outputtoword_new  from  function_ O B J E C T  
end  type  
forward  prototypes  
global  function  integer  f_outputtoword_new  (datawindow  adw)  
end  prototypes  
global  function  integer  f_outputtoword_new  (datawindow  adw);  
//函数名:f_outputtoword_new  
//输入:  adw  -  datawindow,指定的数据窗口  
//返回值:  Integer  
constant  integer  ppLayoutBlank  =  12  
OLEObject  ole_ O B J E C T  
ole_ O B J E C T  =  CREATE  OLEObject  
integer  li_ret  

li_ret  =  ole_ O B J E C T.ConnectToObject("","word.application")  
IF  li_ret  <>  0  THEN  
//如果Word还没有打开,则新建。  
li_ret  =  ole_ O B J E C T.ConnectToNewObject("word.application")  
if  li_ret  <>  0  then  
MessageBox('OLE错误','OLE无法连接!错误号:'  +  string(li_ret))  
return  0  
end  if  
ole_ O B J E C T.Visible
分享到:
评论

相关推荐

    揭秘数据解密的关键技术 CHM

    第1章 走进数据解密  1.1 数据解密是什么  1.1.1 代码逆向工程和数据逆向工程  1.2 数据解密的方法  1.2.1 黑盒分析法  1.2.2 白盒分析法  1.2.3 黑盒分析法与白盒分析法的比较  1.3 万能的汇编语言 ...

    滑动窗口的概要介绍与分析

    滑动窗口技术的基本思想是通过维护一个固定大小的窗口,在数据流或数据集合上进行滑动操作,从而高效地完成特定的任务。 在滑动窗口算法中,窗口的大小可以根据具体需求进行设定,窗口内的数据可以是连续的序列,也...

    揭秘数据解密的关键技术

    《揭秘数据解密的关键技术》内容包含反汇编的阅读和理解,数据在计算机中的存储原理,常用媒体格式的解析,加密和解密的识别和分析,数据压缩的特征识别,打包文件格式的识别和游戏窗口化的方法。《揭秘数据解密的...

    PowerBuilder数据窗口多表更新的通用性方法 (2005年)

    PowerBuilder中单数据窗口只能更新一个表,目前常用的解决方法是编写函数实现基于单数据窗口的两表更新,当表的数目增加时又需要重新编程或重复调用函数。为克服该局限性,对其进行了改进。通过建立全局函数实现单数...

    逻辑分析仪高速数据采集及数据窗口定位* (2002年)

    用分相采样技术在普通逻辑分析仪基础上设计高速数据采集部分,并利用低速触发识别来定位高速数据窗口,以较小的代价实现高速数据采集和数据观察窗口的定位,增加设计的灵活性,提高逻辑分析仪的性价比。

    matlab教程,灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件

    用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件,包含matlab语言代码的文件称为m文件,其扩展名为m。编辑m文件可使用各种文本编辑器。一、matlab的工作模式 :指令驱动模式...

    VC++做异形窗口 透明效果

    //数据设置,窗口左上角坐标:m_Left=0,m_Top=0 //背景位图宽高:m_Width=535,m_Height=105SetSize(0, 0, 535, 105);//蒙板处理区域与窗口边框的距离m_MaskLeftOff=m_MaskTopOff=m_MaskRightOff=m_MaskBottomOff=0...

    第7章 数据绑定控件

    7.1 数据绑定技术 301 实例188 格式化订货金额和订单日期并 进行绑定 301 实例189 使用绑定表达式高亮显示搜索关键字 302 实例190 Eval()绑定图书图片并实现单击图片 进行链接 304 实例191 Eval()方法绑定日志并用...

    毕设之ssm基于微信小程序的食堂窗口自助点餐系统(源码+部署说明+SSM+微信小程序+vue).zip

    本资源是一个基于SSM框架的微信小程序食堂窗口自助点餐系统,包括了源码、部署说明、SSM框架、微信小程序和Vue技术。该系统旨在为用户提供一个便捷、高效的食堂点餐服务,减少排队时间,提高就餐体验。 使用的技术...

    ETL复习资料

    "数据集市(Data Mart) ,也叫数据市场,是一个从操作的数据和其他的为某个特殊的专业人员团体服务的数据源中收集数据的仓库。从范围上来说,数据是从企业范围的数据库、数据仓库,或者是更加专业的数据仓库中抽取...

    MATLAB的数据采集与分析系统源代码

    图像处理日益成为一门引人注目、前景远大的学科,而MATLAB语言以强大的科学运算、灵活程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言便捷的接口功能,成为当今国际上科学界最具影响力、最有活力的...

    卡拉OK点歌系统 c#

    1 系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。 2 歌星点歌,根据演唱歌星的名字来查询选择歌曲。 3 数字点歌,按照歌曲名称编号进行查询选择歌曲。 4 拼音点歌,根据歌曲名称的...

    winhex 16进制文件转换器 要的赶紧下

    - 支持 FAT, NTFS, Ext2/3, ReiserFS, Reiser4, UFS, CDFS, UDF 文件系统 - 支持对磁盘阵列 RAID 系统和动态磁盘的重组、分析和数据恢复 - 多种数据恢复技术 - 可分析 RAW 格式原始数据镜像文件中的完整目录结构,...

    数据可视化智能软件主要性能指标.doc

    B 内置动态优化功能,可保证用户在访问一个窗口、鼠标动作等所产生的数据交互的快速 响应。 C 数据库支持远程访问重连及数据断点续传功能,使数据库之间的数据同步及完整性具有 了高可靠性的保障。 D 软件应内置的...

    GAP - 广义自适应多项式窗口函数:JF Justo 和 W. Beccaro,“广义自适应多项式窗口函数”,IEEE Access,第一卷。 8,第 187584-187589 页,2020 年。-matlab开发

    介绍 ... 这种获取窗口的方法非常通用,允许使用多种优化方法,例如全局优化(遗传算法和模拟退火)或局部优化(牛顿和基于梯度的方法)技术,甚至机器学习。 与初始窗口函数猜测相比,通过优化程序

    鹰图GeoMedia地理信息系列产品

    GeoMedia®产品能同时访问各种格式的地理空间数据,把数据融入同一个地图窗口,以实现有效的处理、分析、显示和共享。GeoMedia直观、动态的分析功能可串联分析过程,使一项操作的结果直接输入下一过程,根据数据变化...

    初中信息技术Excel教案.doc

    制定义Excel窗口界面 教学难点:灵活使用各种工具制定义Excel窗口界面 教学方法:教授、演示 教学过程: 1. 组织教学 2. 复习导入 如果我们要想对考试成绩进行数据处理和数据分析,那我们要使用的就是Excel软件 了。...

    初中信息技术Excel教案汇总.doc

    制定义Excel窗口界面 教学难点:灵活使用各种工具制定义Excel窗口界面 教学方法:教授、演示 教学过程: 1. 组织教学 2. 复习导入 如果我们要想对考试成绩进行数据处理和数据分析,那我们要使用的就是Excel软件 了。...

    嵌入式系统/ARM技术中的FTPA: 一种具有可配置核的灵活多核处理器结构(二)

    对于采用EDGE 指令集的结构( 如TFlex),虽然超块内指令间的数据依赖关系在编译时已经获得,但是由于长延迟指令的存在和访存延迟的不确定性,即使依靠编译器静态地面向多个物理核 调度指令,也不能有效地隐藏实际...

    信息技术Excel教案.doc

    " "重难点 "教学难点:灵活使用各种工具制定义Excel窗口界面。 " "课前 "自学 " "预习 " " "新课 "复习导入 "修改建议 " "导入 "如果我们要想对考试成绩进行数据处理和数据分析,那我们要使 " " " "用的就是Excel...

Global site tag (gtag.js) - Google Analytics