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 |
相关推荐
### PowerBuilder 7.0 数据窗口技术详解 #### 一、PowerBuilder 7.0概述 PowerBuilder是一款广泛应用于客户端/服务器架构中的开发工具。它以其高效性、易用性和强大的功能著称,被众多数据库应用程序开发者所青睐...
在“powerbuilder9.0数据窗口技术”这个主题中,我们可以期待学习到关于PowerBuilder 9.0版本中数据窗口的新特性和优化。可能包括更高效的查询机制、增强的用户体验、更丰富的图表类型,以及对新数据库系统的支持等...
在PowerBuilder 9.0版本中,数据窗口技术是核心特性之一,它允许开发者创建复杂的数据库应用界面,提供灵活的数据展示、查询、更新和事务处理能力。 数据窗口是PowerBuilder中的一个独特对象,它能够直接与数据库...
PB动态检索和模糊查询是PowerBuilder(PB)开发过程中常用的功能,主要应用于数据窗口(Data Window)组件,以便用户能够高效地在大量数据中查找所需信息。数据窗口是PB的核心组件,它允许开发者以多种方式展示和...
数据窗口是一个灵活的数据展示和操作组件,它允许开发者以多种方式显示、编辑和处理数据库中的数据。在PB9.0中,数据窗口的特性和功能得到了显著增强,为开发者提供了更多元化的数据展现和交互方式。 1. **数据窗口...
#### 五、动态创建数据窗口控件 在某些情况下,还需要能够动态地创建数据窗口控件。虽然无法直接在运行时创建数据窗口控件,但可以通过以下步骤实现这一目标: 1. **创建用户对象**: 在PowerBuilder的用户对象画板...
"分析及动态数据窗口设计技术"是一个专题,主要关注如何利用特定工具,如PowerBuilder,来实现高效的数据处理和展示。PowerBuilder是一款强大的面向对象的开发工具,尤其在数据库应用程序开发方面有广泛的应用。 ...
3. **比较并映射列名**:遍历Excel的列名和数据窗口的字段名,创建一个映射关系。如果列名完全匹配,直接映射;如果不匹配,可能需要进行一些转换规则,如大小写转换、空格去除等。 4. **数据转换**:根据映射关系...
这个特定的文件可能包含了一个或多个预定义的数据窗口,每个数据窗口可能对应一个特定的数据库查询或者报表设计。打开这个PBL文件,我们可以查看和编辑其中的数据窗口对象,包括其结构、样式、查询语句以及用户界面...
《PowerBuilder 9.0数据窗口技术》学习资料包含了深入探讨和理解这一强大数据库开发工具的关键知识点。数据窗口是PowerBuilder的核心组件之一,它允许开发者创建直观、灵活且功能丰富的用户界面来显示、编辑和操作...
### PowerBuilder 数据窗口 Grid 类列宽度自动适应技术详解 #### 一、背景介绍 在 PowerBuilder 开发过程中,数据窗口(DataWindow)是用于显示和处理数据的核心组件之一。随着应用的发展,用户对于数据展示的需求...
总结来说,PowerBuilder 9的数据窗口技术是其强大之处,它为开发者提供了一个高效、灵活且功能丰富的数据库访问工具,大大简化了数据库应用程序的开发过程。通过深入理解和熟练运用数据窗口技术,开发者可以构建出...
数据窗口是PowerBuilder的核心组件之一,它允许开发者创建、显示和编辑数据库中的数据,提供了丰富的功能和高度的灵活性。 在数据窗口开发技术中,首先我们要理解数据窗口的基本概念。数据窗口是一个对象,它能与...
本文将深入探讨如何在PB9中实现这一功能,包括对grid样式的数据窗口以及边框的绘制,同时还会介绍一个用于提取机器码的辅助函数。 首先,我们来关注如何自定义数据窗口线条颜色。在PB9中,数据窗口是数据展示的核心...
数据窗口技术提供了一种高效、灵活的方式来显示和处理数据,它允许用户进行各种自定义设置,以实现更丰富的用户体验。在这个场景中,我们关注的是"选中行变色"的功能,即当用户在数据窗口中选择一行或多行时,这些行...
根据给定文件的信息,本文将深入探讨PowerBuilder中数据窗口多表更新的通用性方法,这一方法能够提高代码的可重用性和可维护性,并使应用程序的报表更新技术更为完善和灵活。 ### PowerBuilder简介 PowerBuilder是...
垂直分割数据窗口则是指将数据窗口按照垂直方向分成两个或多个部分的技术实现。这种技术的主要应用场景在于同时展示相关的数据集或者不同的数据视图,使得用户可以同时查看和对比不同维度的数据信息,提高数据处理的...
1. 动态数据窗口:通过编程方式动态创建或修改数据窗口,可以根据不同需求加载不同的数据源和布局,提高代码的复用性和灵活性。 2. 参数化查询:利用参数输入框,用户可以输入条件进行动态查询,增强数据检索的交互...
在这个“PowerBuilder9_0数据窗口技术”压缩包中,我们可以期待找到一系列关于如何利用这一特性的详细资料。 数据窗口技术在PowerBuilder中扮演着至关重要的角色,因为它简化了与数据库的交互。以下是一些关于Power...