不能usb调试打开了连不上522yw里面内容了什么原因,连不上wwW522ywcom的首叶啦

未找到信息!
未找到信息!
收录 / 索引信息
未找到信息!
一般不超过80字符
网站关键词
一般不超过100字符
一般不超过200字符
同主机安全
虚假或欺诈网站
挂马或恶意网站
未存在违规内容
alexa排名趋势
服务器信息
服务器类型
源文件大小
压缩后大小
最后修改时间
关闭关闭关闭Powerbuilder&常用小技巧
2.控件可拖动:
send(handle(this),274,61458,0)
3.如何用程序控制下拉子数据窗口的下拉和收起
用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_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 +
8.在程序中动态设置初始值:
ex:dw_contro.object.columnName.initial = 'xxxx'
9.如何在DataWindow的SQL语法中不使用SELECT DISTINCT实现删除重复
---- 起先对你要显示唯一值的列进行排序:"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
IF KeyDown(KeyDownArrow!) OR KeyDown(KeyUpArrow!) Then
& Return 1
13.你注意到没有,数据窗口画板里面,在写表达式的时候,试着用一些
用户自定义的全局变量和全局函数,你会发现在某些特殊的场合,这个
小窍门还是很有用的。
14.有些程序员在窗口的右键pop菜单里面写了很多代码,在菜单里面有
很多w_windowname.controlname等等引用,如果这个窗口被继承,很容
易就会出毛病,别忘了在菜单里面可以引用parentwindow哦,有了它我
的pop菜单里面的代码和具体窗口无关,随便继承。当然强烈建议最好还
是把所有和窗口相关的逻辑都转移到窗口的函数和事件中去,在pop菜单
中触发调用。
15.whichdw.describe("evaluate('lookupdisplay("+colname
+")',"+string(row)+")")
这个表达式可以得到指定列的显示值。(这个知识点有滥竽充数之嫌,
但是一时间我真是想不起来太多的东西)
16.在数据窗口画板里面我们如果想要比较当前行和上一行或者下一行的
值,怎么比较呢,哈哈,看这个就知道了
if ( yw_bc_circuit_dlcode = yw_bc_circuit_dlcode [-1] and
yw_bc_circuit_dlname = yw_bc_circuit_dlname [-1] and
yw_bc_circuit_xtno = yw_bc_circuit_xtno [-1] ,0,1)
这个表达式就是比较当前行和上一行是否相同的。其他的依此类推就行
17.两个结构相同的数据窗口之间快速复制数据
dw_1.object.data = dw_2.object.data
18.根据条件改变记录颜色
if ( Mod(getrow(),2)=0,rgb(0,255,255),rgb(255,255,255)) //奇偶
if (currentRow()=getrow(),rgb(0,255,255),rgb(255,255,255)) //当
前行不同色
19.使窗口总位于所有打开窗口的最上面
w_main.SetPosition(Topmost!)
20.取数据窗口中列的总数
string ls_count
ls_count = dw_1.describe("datawindow.column.count")
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP 回复次数:134&
&#1楼 得分:0回复于: 15:45:47C# code
21.取数据窗口中可列新的表名。
string ls_table
ls_table = dw_1.describe("datawindow.updatetable.table")
22.取数据窗口对象中列的名称及类型
string ls_cols[],ls_types[]
int&& li_count,i
li_count = integer(ls_count)
for i = 1 to li_count
& ls_cols[i] =
dw_1.describe("#"+string(i)+".name")
& ls_types[i] =
dw_1.describe("#"+string(i)+".coltype")
23.Case(& dealintype&
WHEN& 0 THEN RGB(254,251,235)&
THEN rgb(254,251,235)& ELSE RGB(0,0,255))
写道字段的protect中不仅仅是颜色改变的问题看看
24.dw.Object.col[n] : 直接获得数据窗口的col列第n 行的数据。
25.在做数据窗口时,我们有时候希望能够多一些字段来作一些特殊的用
处,但是在数据窗口中又不能乱加字段,因为已有的字段必须是数据库
中有的或者是他们的组合,呵呵,大家不妨看看这个sql用产生什么样的
select colname1,colname2,1,''
&from tablename
是不是多出了两个字段阿,一个是字符串字段,一个是数字字段
别忘了要convert syntax 哦
26.清空数组
string a[],b[]
a[1] = '1';a[1] = '2';a[1] = '3'
a = b//即可以清空a
27.只允许修改第n行的name列:
dw_1.modify("name.protect = '1 ~t if((getrow()=n),0,1)'")
28.让run程序和主程序一起关闭:
function ulong findwindowA(...).."user32.dll"
function long setparent(..."user32.dll"
handle = findwindowA(nul,win_title)
setparent(handle,handle(w_main))
29.取得某一天以前或以后n天的函数RelativeDate(date, n)
&& 取得当天前10天的日期
&& RelativeDate(Today(),10)
&& 取得当天后10天的日期
&& RelativeDate(Today(),-10)
30.不想做排序窗口?调用PB自身的好了。
string ls_null
SetNull(ls_null)
dw_1.SetSort(ls_null)
dw_1.Sort()
31.调用PB自身的过滤窗口:
dw_1.SetFilter(ls_null)
dw_1.Filter()
32.增量输入定位代码或名称记录位置:
定义一个窗口,放一个SLE_1,在它的MODIFY程序中写:
long ll_find
string value0
value0=sle_1.text
if not (isnull(sle_1.text) or sle_1.text='') then
left(sle_1.text,1)='0' or
integer(sle_1.text)&&0 then //
输入的为代码
ll_find=jwl_dmxz.dw_1.find('dm like
"'+value0+'%"',1,jwl_dmxz.dw_1.rowcount())//jwl_dmxz为主窗口,
dm为查询的字段名,这里是代码。
//输入的为名称
ll_find=jwl_dmxz.dw_1.find('mc like
"'+value0+'%"',1,jwl_dmxz.dw_1.rowcount())//
&&& end if
ll_find&0 then
jwl_dmxz.dw_1.scrolltorow(ll_find)
//为了避免首次目标记录为第一条,无法选中。
if ll_find=ll_find0 then
&&&&&&&&&&&
jwl_dmxz.dw_1.selectrow(ll_find,true)
elseif ll_find&&ll_find0 then
&&&&&&&&&&&
jwl_dmxz.dw_1.selectrow(ll_find,true)
&&&&&&&&&&&
jwl_dmxz.dw_1.selectrow(ll_find0,false)
&&&&&&&&&&&
ll_find0=ll_find
&&& end if
33.然后在查询窗口中的TIMER事件中写:
timer(0.05)
sle_1.triggerevent(modified!)
34.判断计算器是否存在:
string is_fileExists
boolean is_Exists
is_fileExists='c:\windows\calc.exe'
is_Exists=fileExists(is_fileExists)
if is_Exists then
run("c:\windows\calc.exe")
messagebox("提示信息","本机的WINDOWS没有计算
器!",stopsign!)
35.得到硬盘序例号
String ls_Rootpath, ls_volumnename ,ls_return,softpath
GetCurrentDirectoryA(256,softpath)
softpath=left(softpath,2)
if softpath='C:' then
&&& ls_Rootpath
= 'D:' // 指定要得到序列号的硬盘,
一般情况都是C盘,除非你能保证用户存在其它逻辑盘或物理盘
&&& ls_Rootpath
ls_volumnename = Space(256) // 分配足够的空间,下同
Ulong lul_VolumeNameSize
lul_VolumeNameSize = 256
Ulong lul_VolumeSerialNumber, lul_MaximumComponentLength,
lul_FileSystemFlags
lul_MaximumComponentLength = 256
String ls_FileSystemNameBuffer
ls_FileSystemNameBuffer = space(256)
Ulong lul_FileSystemNameSize
lul_FileSystemNameSize = 256
long ls_num,ls_gnum,ls_dnum
i=GetVolumeInformation(ls_Rootpath, ls_volumnename,
lul_VolumeNameSize, lul_VolumeSerialNumber,
lul_MaximumComponentLength, lul_FileSystemFlags,
ls_FileSystemNameBuffer, lul_FileSystemNameSize)
ls_return=string(lul_VolumeSerialNumber)
return ls_return
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:[共享] 关
于在DataWindow中的Trailer Group区显示分组序号的方法
&#2楼 得分:0回复于: 15:46:20沙发,欢迎大家来灌水,
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:做pb还有出
sniper2003
&#3楼 得分:0回复于: 16:11:29顶楼主
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:数据窗口有
哪些常见问题?使用技巧?
&#4楼 得分:1回复于: 16:17:091.如何让存储文件目录的
列,显示图片?&
答:选择对应的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表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()
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:回复:死守
pb,死路一条 PB将会带来新的Web开发的狂潮,4GL语言的王者风范唯有
&#5楼 得分:0回复于: 16:19:37引用 2 楼 lzp_lrp
沙发,欢迎大家来灌水,呵呵
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:动态数据窗
的update问题
&#6楼 得分:0回复于: 16:20:4931、如何将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
if dw_1.SaveAs(docname, HTMLTable!, True) = -1
& MessageBox("Warning", "Unable to export data.
Error writing
to file!",
Exclamation!)&&
& return&&
// Convert HTML file to Excel native
OLEObject excel&&
excel = CREATE OLEObject&&
if excel.ConnectToObject(docname) = 0
& excel.application.DisplayAlerts =
excel.application.workbooks(1).Parent.Windows
(excel.application.workbooks(1).Name).Visible =
& excel.application.workbooks(1).saveas(docname,
excel.application.workbooks(1).close()&&
DESTROY excel&&
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)
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
&#7楼 得分:0回复于: 16:21:3536、问:怎么让PB只打印
当前记录,是用Free格式制作的数据窗口!&&
DataStore ldt_temp&&
long ll_Row , ll_Rows&&
dw_XX.Rowcount()&&
If ll_Rows = 0 Then GoTo
If ll_Rows = 1 Then&&
dw_XX.Print()&&
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()
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
&#8楼 得分:0回复于:
16:21:5937、怎样将数据窗口(free
格式)中的内容转成word文档
答:给你两个函数:&&
(1)、辅助函数&&
$PBExportHeader$f_cncharnum.srf&&
$PBExportComments$得到字符串中汉字或者双字节的个数&&
global type f_cncharnum from function_ O B J E C
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 =
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++&&
Return li_num&&
end function&&
---------------------------------------------------------------
(2)、转到WORD&&
$PBExportHeader$f_outputtoword_new.srf&&
global type f_outputtoword_new from function_ O B J E C
end type&&
forward prototypes&&
global function integer f_outputtoword_new (datawindow
end prototypes&&
global function integer f_outputtoword_new (datawindow
//函数名:f_outputtoword_new&&
//输入: adw -
datawindow,指定的数据窗口&&
//返回值: Integer&&
constant integer ppLayoutBlank =
OLEObject ole_ O B J E C
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
//如果Word还没有打开,则新建。&&
li_ret = ole_ O B J E C T.ConnectToNewObject
("word.application")&&
if li_ret && 0
MessageBox('OLE错误','OLE无法连接!错误号:' +
string(li_ret))&&
return 0&&
ole_ O B J E C T.Visible =
ll_colnum,ll_rownum&&
constant long wdWord9TableBehavior =
constant long wdAutoFitFixed =
constant long wdCell = 12&&
string ls_value&&
pointer oldpointer&&
oldpointer =
SetPointer(HourGlass!)&&
string ls_ O B J E C
Ts,ls_obj,ls_objs[],ls_objtag[]&&
long ll_pos,ll_len,ll_num =
ls_ O B J E C Ts =
trim(adw.Describe('datawindow.Objects'))&&
do while (pos(ls_ O B J E C Ts,"~t") &
ll_pos = pos(ls_ O B J E C
Ts,"~t")&&
ll_len = ll_pos - 1&&
ls_obj = left(ls_ O B J E C
Ts,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 +
ls_ O B J E C Ts = right(ls_ O B J E C Ts,len(ls_ O B J E C Ts)
- ll_pos)&&
//得到数据窗口数据的列数与行数(行数应该是数据行数 +
ll_colnum = ll_num&&
ll_rownum = adw.rowcount() +
ole_ O B J E C
T.Documents.Add()&&
ole_ O B J E C T.ActiveDocument.Tables.Add(ole_ O B J E C
T.Selection.Range, ll_rownum,
ll_colnum)&&
string ls_colname&&
integer i,j,k&&
for i = 1 to ll_colnum&&
//得到标题头的名字&&
ls_value = ls_objtag[i]&&
ole_ O B J E C
T.Selection.TypeText(ls_value)&&
for k = 1 to
f_cncharnum(ls_value)&&
ole_ O B J E C
T.Selection.TypeBackspace()&&
ole_ O B J E C
T.Selection.MoveRight(wdCell)&&
adw.setredraw(false)&&
ole_ O B J E C
T.Selection.MoveLeft(wdCell)&&
string column_name&&
for i = 2 to ll_rownum&&
for j = 1 to ll_colnum&&
column_name = ls_objs[j]&&
if adw.Describe(column_name + '.type') = 'column'
ls_value = adw.Describe("Evaluate('LookupDisplay("+column_name
+")',"+string(i -
if adw.Describe(column_name + '.type') = 'compute'
ls_value = adw.Describe("Evaluate('" + adw.Describe(column_name
+ '.expression') + "',"+string(i -
ole_ O B J E C
T.Selection.MoveRight(wdCell)&&
ole_ O B J E C
T.Selection.TypeText(ls_value)&&
//for k = 1 to
f_cncharnum(ls_value)&&
//ole_ O B J E C
T.Selection.TypeBackspace()&&
adw.setredraw(true)&&
constant long wdFormatDocument =
SetPointer(oldpointer)&&
//保存新建的文档&&
if messagebox("保存","文档已经成功完成,是否保
存?",Question!,YesNo!) = 1
string docname, named&&
integer value&&
value = GetFileSaveName("选择文件",docname, named, "DOC","Doc
Files (*.DOC), *.DOC")&&
IF value = 1 THEN&&
ole_ O B J E C T.ActiveDocument.SaveAs(docname,
0,False,"",True,"",False,False,False,
False,False)&&
//断开OLE连接&&
Ole_Object.DisConnectObject()&&
Destroy Ole_Object&&
return 1&&
end function&&
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
&#9楼 得分:0回复于: 16:22:5638、字段如何自动换行的
同时且自动高度?
答:将数据窗口中相应列的auto horz scroll 为不选中,选中autosize
将detail的autosize height选中。在数据窗口retrieve 后调用下面函
uf_set_text(datawindow
adw_content,string&&
as_columns,boolean,ab_ignoreblank)&&
if (not isvalid(adw_content)) or isnull(as_columns) or len
(as_columns)&1 or isnull(ab_ignoreblank) 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 =
upperbound(ls_column)&&
ll_rowcount =
adw_content.rowcount()&&
if li_upperbound&1 or ll_rowcount&1
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 = adw_content.describe(ls_column
[li_column]+".width")&&
& li_width =
integer(ls_width)&&
& if ls_width='!' or ls_width='?' or li_width=0
continue&&
& end if&&
& //ls_temp = adw_content.describe(ls_column
[li_column]+".Font.property { = 'width'
//messagebox(ls_column[li_column]+".Font.property { = 'width'
}",ls_temp)&&
& //return
& li_fontwidth =
& li_counter = li_width /
li_fontWidth&&
& for ll_row=1 to
ll_rowcount&&
& if ib_cancel
& iw_frame.enabled =
& return 0 //pressed cancel
& end if&&
& as_source =
adw_content.getitemstring(ll_row,ls_column
[li_column])&&
& as_replaced =
uf_insertstring(as_source,li_counter,' ',false)
as_replaced&&as_source
adw_content.setitem(ll_row,ls_column[li_column],as_replaced)&
& end if&&
w_waiting.uf_stepit()&&
close(w_waiting)&&
iw_frame.enabled = true&&
return 1&&
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
&#10楼 得分:0回复于: 16:23:2639、如何动态外部创建数
答:首先制作一个自己想动态得到的数据窗口,然后将该数据窗口导出,
看看语法,这样你就了解了这种数据窗口的生成语法了!&&
---------------------------------------------------------------
dw_1.create()&&
可以参考帮助 以及 srd文件(数据窗口导出文件)&&
---------------------------------------------------------------
动态数据窗创建原理及实现&&
在实际应用中,经常需要根据用户需求来动态创建数据窗,一般方法是
这样的。&&
在一个window中加入一个数据窗控件,如dw_new,但是该数据窗没有data
O B J E C T,(空白的)&&
就可以用以下语法来创建:&&
dw_new.create(ls_syntax,ls_error) //
创建语法,错误信息&&
ls_syntax可以用以下三种方法来形成:&&
一、动态由sql语法创建:&&
// 连接到pb的example数据库&&
ls_sql,ls_syntax,ls_error&&
ls_syntax = 'select * from
department'&&
ls_syntax = sqlca.SyntaxFromSQL(ls_sql,'style
(type=grid)',ls_error)&&
if len(ls_error) &0
& messagebox('Error','SyntaxFromSQL
Error:~r'+ls_error)&&
dw_new.create(ls_syntax,ls_error)&&
& if len(ls_error) &0
& MessageBox("Error", "Create have these errors:
ls_error)&&
& dw_new.settrans O B J E C
T(sqlca)&&
dw_new.retrieve()&&
& end if&&
二、由另一个数据窗的syntax来创建&&
ls_syntax,ls_error&&
ls_syntax =
dw_test.describe('datawindow.syntax')&&
dw_new.create(ls_syntax,ls_error)&&
if ls_error && ''
& messagebox('Create
Error',ls_error)&&
& dw_new.settrans O B J E C
T(sqlca)&&
dw_new.retrieve()&&
三、读取psr文件来创建&&
ls_syntax,ls_error,ls_ret&&
ls_ret = char(13)+char(10)
//回车键&&
int li_fileNum&&
long li_length&&
li_FileNum = FileOpen("efef.psr",Streammode!, read!, shared!,
Replace!)&&
// 以下是pb5的代码&&
if li_filenum &0
& FileSeek(li_FileNum, 158,
FromBeginning!)&&
& li_length =
fileRead(li_filenum,ls_syntax)&&
fileclose(li_filenum)&&
if li_length = 0 then
ls_syntax = "release
5;"+ls_ret+ls_syntax&&
//截掉ls_syntax中的数据部分,5.0以"sparse(names="dept_name?) "
作为参考位置&&
//6.0以html(作为参考位置&&
long pos1,pos2&&
pos(ls_syntax,'sparse(names="',1)&&
pos2 = pos(ls_syntax,'"',pos1
ls_syntax = left(ls_syntax,pos1) + mid(ls_syntax,pos1 +1,pos2 -
pos1 +1)&&
dw_New.create(ls_syntax,ls_error)&&
if ls_error && ''
& messagebox('Create
Error',ls_error)&&
& dw_new.settrans O B J E C
T(sqlca)&&
dw_new.retrieve()&&
//pb6,pb7的代码可以参照pb5自己写,只是文件头和数据窗结束标记不同
---------------------------------------------------------------
global type f_createextenddw from function_ O B J E C
end type&&
forward prototypes&&
global function string f_createextenddw (ref datawindow dw,
string cols[])&&
end prototypes&&
global function string f_createextenddw (ref datawindow dw,
string cols[]);string sql_dw_general, sql_dw_columns_type,
sql_dw_headers_conf, sql_dw_columns_conf,
ls_errors&&
long ll_colcount&&
string ls_colnametype&&
ls_colname,ls_coltype&&
long ll_pos&&
ll_colcount =
upperbound(cols)&&
//generals&&
sql_dw_general = "release 8;"
+ "datawindow(units=0 timer_interval=0 color=
processing=0 print.documentname=" + char(34) + "" + char(34)
" print.orientation = 0 print.margin.left = 110
print.margin.right = 110 print.margin.top = 96
print.margin.bottom = 96 print.paper.source = 0
print.paper.size = 0 print.prompt=no print.buttons=no
print.preview.buttons=no )"
+ "header(height=72 color=" + char(34) + "" + char(34)
+ "summary(height=0 color=" + char(34) + "" + char(34)
+ "footer(height=0 color=" + char(34) + "" + char(34)
+ "detail(height=84 color=" + char(34) + "" + char(34)
//列及类型&&
sql_dw_columns_type =
"table("&&
FOR I=1 to ll_colcount&&
& ls_colnametype =
trim(cols[i])&&
& ls_colname =
right(ls_colnametype,len(ls_colnametype) -
& ls_coltype =
left(ls_colnametype,1)&&
& choose case
upper(ls_coltype)&&
& ls_coltype =
'char(100)'&&
& ls_coltype =
& ls_coltype =
'decimal(6)'&&
& ls_coltype =
'char(100)'&&
//ls_coltype =
'char(100)'&&
& //列及类型&&
& sql_dw_columns_type= sql_dw_columns_type +
"column=(type="
+ls_coltype+" updatewhereclause=no name=" + ls_colname + "
dbname=" + char(34) + ls_colname + char(34) + " )
& //列标题&&
& sql_dw_headers_conf = sql_dw_headers_conf +
"text(band=header
alignment=" + char(34) + "2" + char(34) + " text=" + char(34)
ls_colname + char(34) + " border=" + char(34) + "6" +
+ " color=" + char(34) + "" + char(34) + " x=" +
(34) + string( ((i - 1) * 588) + 5) + char(34) + " y=" +
(34) + "4" + char(34) + " height=" + char(34) + "64" +
+ " width=" + char(34) + "574" + char(34) + " name=" +
ls_colname + "_t font.face=" + char(34) + "Arial" + char(34)
" font.height=" + char(34) + "-10" + char(34) + "
font.weight="
+ char(34) + "400" + char(34) + " font.family=" + char(34) +
"2" + char(34) + " font.pitch=" + char(34) + "2" + char(34) +
font.charset=" + char(34) + "0" + char(34) + "
background.mode=" + char(34) + "2" + char(34) + "
background.color=" + char(34) + "" + char(34) + "
& //列属性&&
& sql_dw_columns_conf = sql_dw_columns_conf +
(band=detail id=" + string(i) + " alignment=" + char(34) +
+ char(34) + " tabsequence=" + string(i) + "0 border=" +
(34) + "2" + char(34) + " color=" + char(34) + "0" + char(34)
" x=" + char(34) + string( ((i - 1) * 588) + 5) + char(34) +
y=" + char(34) + "4" + char(34) + " height=" + char(34) +
+ char(34) + " width=" + char(34) + "579" + char(34) + "
format=" + char(34) + "[general]" + char(34) + " name=" +
ls_colname + " edit.limit=0 edit.case=any
edit.autoselect=yes
edit.autohscroll=yes font.face=" + char(34) + "Arial" + char
(34) + " font.height=" + char(34) + "-10" + char(34) + "
font.weight=" + char(34) + "400" + char(34) + " font.family="
char(34) + "2" + char(34) + " font.pitch=" + char(34) + "2"
char(34) + " font.charset=" + char(34) + "0" + char(34) + "
background.mode=" + char(34) + "1" + char(34) + "
background.color=" + char(34) + "" + char(34) + "
sql_dw_columns_type= sql_dw_columns_type + "
sql_dw_columns_conf = sql_dw_columns_conf +
"htmltable(border="
+ char(34) + "1" + char(34) + " cellpadding=" + char(34) +
+ char(34) + " cellspacing=" + char(34) + "0" + char(34) + "
generatecss=" + char(34) + "no" + char(34) + " nowrap=" +
(34) + "yes" + char(34) +
//MESSAGEBOX('',sql_dw_general + sql_dw_columns_type +
sql_dw_headers_conf +
sql_dw_columns_conf)&&
dw.Create(sql_dw_general + sql_dw_columns_type +
sql_dw_headers_conf + sql_dw_columns_conf ,
ls_errors)&&
return(ls_errors)&&
end function&&
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
&#11楼 得分:0回复于:
16:24:0840、如何让datawindow的
heade带区r的内容只打印一次?
答:a、制作两个数据窗口,第一个有表头,第二个没有。&&
b、用第一个有表头的数据读取数据库中的数据&&
c、打印有表头的数据窗口中的第一页,记住结束行号&&
d、将从结束行号开始的所有数据复制到第二个数据窗口中&&
e、打印第二个数据窗口
41、交叉报表在retrieve后,其datawindow的宽度怎么获得啊?
答://=========================================================
===========&&
// [PUBLIC] Function wf_settitle_length 在 w_search_report
inherited from window&&
//-------------------------------------------------------------
// 说明:设置表头长度&&
//-------------------------------------------------------------
// 参数1:[reference] datawindow
// 说明:报表DW&&
//-------------------------------------------------------------
// 返回: (INTEGER)
成功返回1,不成功返回0&&
//-------------------------------------------------------------
// 作者: cwl 日期: &&
//=============================================================
Long Row&&
String List&&
string token[]&&
String tag_1&&
Integer StartPos = 1, EndPos, Top, i = 1 , index =
//取出DW中所有的对象存入token[]中&&
list = adw_1.Describe("datawindow. O B J E C
EndPos = pos(list, '~t',
StartPos)&&
Do while ( EndPos & 0
& token[i] = Mid(list, StartPos, EndPos -
StartPos)&&
& StartPos = EndPos +
& EndPos = pos(list, '~t',
StartPos)&&
token[i] = Mid(list,
StartPos)&&
Top = UpperBound(token[])&&
//找出最后一列&&
string ls_lastcol&&
li_lastpos=0,li_thispos&&
For i = 1 to Top&&
& CHOOSE CASE UPPER(adw_1.Describe(token[i] +
'.type'))&&
& CASE 'COLUMN',
'COMPUTE'&&
& li_thispos = integer(adw_1.Describe(token[i] +
& if li_thispos&=li_lastpos then
//这是目前最后一列&&
li_lastpos=li_thispos&&
ls_lastcol=token[i]&&
& end if&&
//设置表头长度&&
string ls_change&&
ls_change="800~tlong(describe('"+ls_lastcol+".x')) + long
(describe('"+ls_lastcol +".width')) +
//messagebox('',ls_change)&&
adw_1.modify('title.width="'+ls_change+'"')&&
42、如何在数据窗中得到自动高的列的高度?
答:desceibe("evaluate('RowHeight()',3)") //获得第三行的row的高
42、如何使dw的列不可移动,不可调整列宽?
答:在datawindow的cilcked事件写&&
if row=0 then&&
43.光标跳转到数据窗口的某一行某一列
dw_1.scrolltorow(ll_row)
dw_1.setcolumn(ll_column)&
44 如何使光标指向每页第一行?&
long ll_firstrowonpage=long(dw_1.describe
("datawindow.firstrowonpage"))&
dw_1.scrolltorow(ll_firstrowonpage)&
dw_1.setrow(ll_firstrowonpage)&
45. Grid的窗口如何使第一列固定不动?&
①选上data OBJECT的HSplitScroll属性
②在constructor事件中:
dw_1.Object.DataWindow.HorizontalScrollSplit=integer
(dw_1.describe("#1.width")) //第一列的宽度
③在scrollhorizontal事件中:
if pane = 1 then&
integer(this.OBJECT.datawindow.horizontalscrollposition2)&
if i & 1 or isnull(i) then
if scrollpos & 0 then&
this.OBJECT.datawindow.horizontalScrollPosition =
integer(this.Object.DataWindow.HorizontalScrollSplit)&
if i & 1 or isnull(i) then
if i & scrollpos then&
this.OBJECT.datawindow.horizontalScrollPosition2 =
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
&#12楼 得分:0回复于: 16:24:3846. 怎样取子数据窗口的
ll_column_count=integer(dwc.describe
("datawindow.column.count")) //dwc为子窗口
47.在数据窗口过滤以后,计算列值如何才能一起改变?&
dw_1.setfilter(filter_condition)&
dw_1.filter()&
dw_1.groupcalc()&
48.怎么改变某一列的背景颜色?
dw_1.Modify("sno.background.mode=2" )
dw_1.Modify ( "sno.background.Color='255'"
49.在数据窗口中如何delete选中的多行?&
& Long ll_rows , ll_row
& ll_rows=DW_1.RowCount()
& for ll_row = ll_rows to 1 step -1
& if dw_1.isSelected(ll_row) then
& dw_1.DeleteRow(ll_row)
50.如何改变列的字体颜色,提醒用户此列已做修改
  在列的Color属性中,输入如下表达式
& IF (column_name &
&column_name.Original, RGB(255, 0, 0), RGB
(0, 0, 0))
51.数据窗口中限定某列不可编辑&
用DataWindow的clicked事件中的方法也可以实现列的保护。若
某列不可更改,则可置r otect=0。即:
dw_1.modify("columnname.protect=0")
或dw_1.modify("#"+string(number)+".protect=0")
若要将该列改为可更改,则置protect=1,即:
dw_1.modify(:columnname.protect=1")
或dw_1.modify("#"+string(number)+".protect=1")
此方法不影响Tab键的移动,用户可以随意拉动列,还可在应用过
程中自己决定哪一列可编辑,哪一列不可编辑。
52.怎样去掉上图中数据窗口中的黑影?&
this.Modify ("DataWindow.selected.mouse=no")
this.Modify ("DataWindow.Grid.ColumnMove =
53 实现逐行增加求和
使用计算列:CumulativeSum(field for all),即可达到逐渐递增求
54 快速删除多行
方法是把要删除的行从主缓冲区中移到删除缓冲区中。例如,删除缓冲
区中所有的行:&
dw_1.RowsMove(dw_1, 1, dw_1.RowCount, Primary!, dw_1, 1,
58、在分组的header上加序号
答:建立计算域,expression: cumulativeSum( If (jlxm = jlxm[-
1],0,1) for all)
59、为什么varchar字段类型的列只能保存255个字符?
答:设置事务处理对象的dbparm属性即可
SQLCA.dbParm = "DBTextLimit = '9999'"
60、点击grid类型数据窗口的header,自动排序。(图片自己做)
string i_str_oldcol
string str_ O B J E C Tname, str_curcol, str_addpic
integer int_pic_x
str_ O B J E C Tname =string (dwo.name) //对象名称
if row = 0 and this.describe(str_ O B J E C Tname+".band") =
"header" and this.describe(str_ O B J E C Tname+".text")
then //是否点击列对象
& str_curcol = left(str_ O B J E C Tname,len(str_
Tname) - 2) //当前列对象名称
& if str_curcol &&
i_str_oldcol then //点击的是不同列对象
& this.modify("destroy p_sort")
//不管有没有位图对象都删除
& i_str_oldcol = str_curcol //保存上次点击的列对象
& int_pic_x = integer(this.describe(str_ O B J E C
Tname+".x"))
+ (integer(this.describe(str_ O B J E C Tname+".width")) -
& str_addpic = 'create bitmap(band = foreground
filename= "..
\pic\up.bmp" x= "'+string(int_pic_x)+'" y= "24" height= "48"
width= "48" border= "0" name= p_sort visible= "1")'
& this.modify(str_addpic) //动态画个图
& this.setsort(str_curcol + " A")
//头一次点击当然是升序了
& this.sort()
& else //当前列已经点过了
& if this.describe("p_sort.filename") =
"..\pic\up.bmp" then //
上次是升序
& this.modify("p_sort.filename =
'..\pic\down.bmp'")
& this.setsort(str_curcol + " D") //这次是降序
& this.modify("p_sort.filename =
'..\pic\up.bmp'")
& this.setsort(str_curcol + " A")
& this.sort()
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
&#13楼 得分:0回复于: 16:46:45好,我准备把此贴加入精
华,望大家支持
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#14楼 得分:0回复于:
17:03:33UP,学习,收藏!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#15楼 得分:0回复于: 20:12:32经典啊,精华啊!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(爱比恨多)
&#16楼 得分:0回复于: 20:34:50顶!
唉,没时间总结。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(wangxzlll)
&#17楼 得分:0回复于: 22:49:04谢谢分享!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
happyflystone
(无枪狙击手)
更多勋章 #18楼 得分:0回复于: 23:54:24。。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
bulebabyer
&#19楼 得分:0回复于:
00:18:02嗯..我也凑个热闹.把我
总结的一些发过来..
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
bulebabyer
&#20楼 得分:0回复于:
00:18:411.pb9应用xp风格
将PB9升级到7119后,编译时有一个 New Visual Style Controls 选项,
选中后,编译出来的文件在XP下就可以应用XP风格了
2.Yield()函数的作用
Yield()是一个不常用到的PowerBuilder函数。可是,在一个大的循环过
程中,如果用户想在执行到一半时通过单击按钮或菜单来退出的话,就
一定要用到Yield()函数了,否则程序只会在执行完成整个循环后才会响
应按钮或菜单的Click事件。将Yield()函数放在循环体的中间。那么在
循环执行的过程中发现有新的事件消息在消息队列中就回立即去响应。
功能将控制权转移给其它图形对象,包括非PowerBuilder对象。该函数
检测消息队列,如果有消息,就把消息取出。利用该函数可以在执行耗
时较长的操作时把控制权转让给其它应用。
语法Yield()
返回值Boolean。如果在消息队列中提取到了消息,那么函数返回TRUE,
否则返回FALSE。用法正常情况下,PowerBuilder应用程序在执行一段代
码(比如函数或事件处理程序)的过程中不响应用户的操作。对耗时短
暂的代码段来说,这种处理方式没有什么不妥的地方,但是,如果某个
代码段的执行耗时较长,应用程序又希望为用户提供更多的控制权,那
么需要在这段代码中插入Yield()函数,让用户能够进行其它操作,特别
在循环执行的代码中更应该如此。应用程序执行Yield()函数后,如果发
现消息队列中存在消息,它将允许对象处理这些消息,处理之后,继续
Yield()函数后面代码的执行。因此,代码中插入Yield()函数将降低应
用程序的运行效率。
3.sqlca.SQLCode 与update()
在利用Embedded SQL 的时候,每运行一次SQL指令就应该检查一次交易对
象中的属性SQLCode,而不是等到
所有的SQL指令运行完毕后再去运行检查交易对象中的SQLCode属性.当我
们使用数据窗口所提供的函数时,
要记住不要检查SQLCode来判断是否运行成功.而是要依照每一个函数运
行后所返回的值来判断是否运行
update tab_test set col1 = 'test'
if sqlca.sqlCode = -1 then
if sqlca.sqlCode = -1 then
messageBox('错误','连接失败!')
messageBox('错误','连接失败!')
//确保数据保存的成功
if dw_1.update() = -1 then
RollBack Using SQLCA;
MessageBox("警告!","数据保存失败!")
Commit Using SQLCA;
4.读取网页内容:&
sle_1.text=ole_1.object.Document.body.outertext
ole_1.object.Document.body.scroll="no"
mle_1.text=ole_1.object.document.body.outerhtml
5. tab_1.createondemand 在需要时创建:&
tab_1.createondemand:在需要时创建。提高在open事件时的效率,
tab_1的某一tabpage里的内容在open时不创建,仅当选择该页时或
selecttab才创建,不过,在未创建时,不能对其中的控件及属性引用。
6.如何在程序中对BLOB数据库进行写入
和后台数据库有关:以SQLANYWAY为例:
一般用 UPDATEBLOB 和 SELECTBLOB 两个SQL语句来实现。
建一个表TABLE1,一个字段是ID,另一个是BLOB,&
SELECTBLOB BLOB FROM TABLE1 WHERE ID='xx';
UPDATEBLOB SET BLOB = :BLB_X FROM TABLE1 WHERE ID='yy';
删除时删除ID为'mm'的记录即可,新增是先插入一条ID为'mm'的记录,
然后 用UPDATEBLOB将数据写入
表内。 其他的数据库可参照手册进行,其命令与上述差别不大!
7.API、系统消息及其它dll调用&
1.控件可拖动:
send(handle(this),274,61458,0)
2.如何屏蔽鼠标滚轮触发&
在控件的other事件写
if message.number = 522 then return 1&
3.隐藏任务栏的方法,
在OnCreate事件里利用Window API函数SetWindowLong:SetWindowLong
(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);&
PB使用时首先声明函数FUNCTION long SetWindowLong(ulong hWnd,
integer nIndex, ulong dwNewLong) library "user32.dll" ALIAS
"SetWindowLongA",
然后调用:SetWindowLong(Handle(this),-20,128);
4.在PB中调用屏幕保护的方法:
send(handle(This),274,61760,0)
5.得到一个应用程序如Outlook的路径
RegistryGet
("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp
PathsMSIMN.EXE", &
"Path",ls_outlook_path)
//Outlook的路径将保存在string型变量ls_outlook_path中。
6.得到程序运行时的路径
//在global external functions声明:
Function uLong GetModuleFileNameA(long hinstModule, Ref String
lpszPath, uLong cchPath) Library &Pkernel32.dll&P
//程序路径保存在变量ls_AppPath中
string ls_AppPath
int li_ret
ls_AppPath = Space(128)
li_ret = GetModuleFileNameA(Handle(GetApplication
()),ls_apppath,128)
//要编译成可执行文件.exe才可用,否则得到的是Powerbuilder的
pb60.exe或PB050.exe的路径。
7.屏蔽窗口的ALT+F4键&
//方法一:
1.在窗口的systemkey事件中增加以下代码:
IF KeyDown(KeyF4!) THEN&
Message.Processed = TRUE&
2.在窗口的closequery事件中增加如下代码:
Long ll_ret&
IF KeyDown(keyF4!) THEN&
ll_ret = 1&
return ll_ret&
//方法二:
建一实例变量,在你的关闭程序上赋一个True然后在closequery中判断该
值, 如为False则Return 1
8.当程序中用到了动态加入的对象,如BMP资源文件、数据窗口对象,PB
编译时是扫描不到的,解决方法:
1.将此对象写入到资源文件中:
用记事本创建资源文件dw_object.pbr,写入:c:myprogram.pbl(dw_sj)
编译时将此文件选入Resource File Name处。
2.将应用编译成PBD、DLL文件。
9.如何在PB中实现延时:
subroutine Sleep(long dwMilliseconds) library "kernel32.dll"
延时1秒则调用: Sleep(1000) //单位是毫秒。
10.调用API函数步骤:
1、在适当的位置声明函数,如窗口内,Application内,UserObject内
定义在Local External Function或Global External Function中,如播
放声音的:
Function boolean sndPlaySoundA(string SoundName, uint Flags)
Library "WINMM.DLL"
Function uint waveOutGetNumDevs() Library "WINMM.DLL"
也可以创建一个UserObject,集中声明常用的API及函数本地化,如定义
用户对象 u_external_function:
Declare Local External Function(定义外部函数):
Function boolean sndPlaySoundA(string SoundName, uint Flags)
Library "WINMM.DLL"
Function uint waveOutGetNumDevs() Library "WINMM.DLL"
Declare User Object Function(定义用户对象函数):
uf_play_sound(string as_wave_name, integer
ai_option)&
函数内容如下:
//参数:as_wave_name :wav文件名 ai_option :同步或异步(1/0)
uint lui_numdevs
lui_numdevs = WaveOutGetNumDevs()&
If lui_numdevs & 0 Then&
sndPlaySoundA(as_wave_name,ai_option)
2、调用时在程序中定义一个实体并调用其函数:
u_external_function iu_external_function
iu_external_function = create u_external_function
iu_external_function.uf_play_sound('c:windowsmediading.wav',1)
试试看,如果有声卡,就会听到"叮”的一声。其它API函数也是如此处
11.显示一个与Windows操作系统风格一致的About对话框。
&首先声明如下外部函数:&
function int ShellAboutA(ulong al_hWnd, string as_szApp, string
as_szOtherStuff, ulong hIcon) library
"shell32"&
ShellAboutA(handle(parent),"关于... ","欢迎",0)
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
bulebabyer
&#21楼 得分:0回复于:
00:18:5812.send用法:Send
(handle,message#,lowword,long)
数据窗口中按enter键实现tab功能(在数据窗口的Enter事件中)
自定义事件ID:pbm_dwnprocessenter里写如下代码:
Send(Handle(This),256,9,Long(0,0))
说明:This代表DW;Handle代表DW的句柄;256代表TAB键;9代表不加入
shift键,7代表加入;Long(0,0)代表预留空位.
send(handle(this),256,9,long(0,0))
//This statement scrolls the window w_emp up one page:
Send(Handle(w_emp), 277, 2, 0)
//Both of the following statements click the CommandButton
Send(Handle(Parent), 273, 0, Handle(cb_OK))
cb_OK.TriggerEvent(Clicked!)
//minimizes the DataWindow:
Send(Handle(dw_1), 274, 61472, 0)
//maximizes the DataWindow:
Send(Handle(dw_1), 274, 61488, 0)
//returns the DataWindow to its normal, defined size:
Send(Handle(dw_1), 274, 61728, 0)
13.如何使PB窗口总在最上层(Always On Top)&
通过SetWindowPos函数把窗口的显示层次修改为HWND—TOPMOST,就可使
指定窗口永远不会被其它窗口覆
盖,该函数声明为:&
Function Long SetWindowPos(Long hwnd,Long ord,Long x,Long
y,Long dx,Long dy,Long uflag) Library
&Puser32&P&
参数1为要顶层显示的窗口句柄,参数2指定显示的层次,参数7为附加选
项,其余参数指定窗口位置和
大小,均可忽略。在窗口的Open或Activate事件中加入如下函数调用:&
SetWindowPos(Handle(This),-1,0,0,0,0,3)&
参数2取-1表示在最顶层显示窗口,取1表示在最底层显示;最后一个参
数若取1,表示窗口大小保持不
变,取2表示保持位置不变,因此,取3(=1+2)表示大小和位置均保持不
变,取0表示将窗口的大小和
位置改变为指定值。
14.在PB中如何获得光盘盘符&
通过GetDriveType函数可以获取驱动器(如:软驱、硬盘、光驱、网络映
射驱动器等)的信息,该函数
Function Uint GetDriveTypeA(String drive) Library
&Pkernel32.dll&P&
参数为一个盘符(如"C:"),返回值:1表示未知,2表示软驱,3表示本地
硬盘,4表示网络驱动器,
5表示光驱。因此如下代码可以获得光盘的盘符:&
For i=Asc(&D&) to Asc(&Z&)&
//列举所有可能的CDROM驱动器&
  If GetDriveTypeA(Char(i)+&P:&P)=5 Then&
//若找到CDROM&
MessageBox(&PCDROM&P,Char(i)+&P:&P)&
//显示光盘盘符&
Exit //退出列举&
  End If
15.在PB中如何获取目录信息&
⑴获取当前目录。通过GetCurrentDirectory函数可以获取当前目录,该
函数声明为:&
Function Ulong GetCurrentDirectoryA(Ulong buflen, ref String
dir) Library &Pkernel32.dll&P&
参数2为接收当前目录的字符缓冲区,前面必须加ref表示地址引用;参
数1用来指定字符缓冲区的长度。
调用过程为:
String curdir&
curdir=Space(256)&
//为字符缓冲区开辟内存空间&
GetCurrentDirectoryA(256,curdir)&
MessageBox(&PCurrent Directory&P,curdir)&
⑵获取Windows及系统目录。要用到GetWindowsDirectory和
GetSystemDirectory两个函数,须作如下声明:&
Function Uint GetWindowsDirectoryA(ref String dir,Uint buflen)
Library &Pkernel32.dll&P&
Function Uint GetSystemDirectoryA(ref String dir,Uint buflen)
Library &Pkernel32.dll&P
16.在PB中如何注销当前用户、关闭计算机、重启计算机&
通过ExitWindowsEx函数可实现这三个功能,首先作如下声明:&
Function Long ExitWindowsEx(Long uflag,Long nouse) Library
&Puser32.dll&P&
参数2保留不用,可取0;参数1取0可以注销当前用户,取1可以关闭计算
机,取2可以重启计算机,其值
再加4表示强制结束"未响应"的进程。
17.控制由Run运行的程序(简称Run程序)&
在PB程序设计中,可以用Run()来运行一些程序。比如用户按了F1,就运
行一个chm文件。但Run程序无法
与PB主程序协调工作,若用户按了多次F1,就会启动Run程序的多个实例
,主程序退出时,Run程序依然
运行。可以用如下函数来使它们协调工作:&
Function Ulong FindWindowA(Ulong classname, String windowname)
Library &Puser32.dll&P&
Function Long SetParent(Long childwin,Long parentwin) Library
&Puser32.dll&P&
⑴使Run程序只运行一个实例&
handle=FindWindowA(nul,wtitle)&
//查找Run程序是否已经运行,wtitle为Run程序的标题&
IF handle〉0 Then Return&
//若已经在运行就返回&
Run(&PC:Program FilesJointJoint.chm&P)&
//否则运行Run程序&
⑵PB主程序退出时,Run程序也关闭&
handle=FindWindowA(nul,wtitle)&
SetParent(handle,Handle(w—main))&
//使Run程序窗口成为PB主程序的子窗口
18.映射网络驱动器&
若要在程序中把远程主机的资源映射到本地驱动器,可以用如下函数:&
Function long WNetAddConnectionA(String path,string pwd,String
drv) Library &Pmpr.dll&P&
19.在PB中如何打开一个文件(如.txt,.doc),就像在资源管理器中双击
打开文件一样?
答:可以通过API函数来实现。
在应用程序的Global External Functions中定义:
Function long ShellExecuteA(ulong hwnd, string lpOperation,
string lpFile, & string
lpParameters, string lpDirectory, long nShowCmd) library
"shell32.dll”
调用如下:
String ls_null
SetNull(ls_null)
ShellExecuteA(Handle(Parent), ls_null, "c:dochello.txt”,
ls_null, ls_null, 1)
20.PB中实现淡入淡出效果
声明API:&&
function Boolean AnimateWindow( ulong hwnd, long dwTime, long
dwFlags) library
'user32.dll'&&
窗口 open事件:&
////-----------------------------------------------------------
ll_handle&&
& ll_handle = Handle ( this
& AnimateWindow ( ll_handle , 1000,
//////-------------------------------- ------------------------
& 窗口close事件&
& AnimateWindow ( Handle ( This ) , 300, 524288+
65536 + 16)//
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
bulebabyer
&#22楼 得分:0回复于: 00:20:5121.SendMessage
在PowerBuilder中应用&
在Powerbulider巧妙地调用API函数SendMessage,可以完成Pb中的一些
用常规的方法而很难实&
现的功能,特将对该api函数在Powerbuilder中的使用,例举几个方面的
运用,以期起到抛砖引玉的效果(以下代码完全可以使用PowerBuilder中
的Send函数替代SendMessage 这个Api函数,因起稿比较匆忙,代码未经
二、函数说明&
SendMessage函数说明:&
调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完
毕,否则该函数不会返回。SendMessageBynum, SendMessageByString
是该函数的"类型安全"声明形式&
Long,由具体的消息决定&
参数 类型及说明&
hwnd Long,要接收消息的那个窗口的句柄&
wMsg Long,消息的标识符&
wParam Long,具体取决于消息&
lParam Any,具体取决于消息&
Powerbuilder中已使用函数Send函数对其进行了封装&
函数原形:Send ( handle, message#, lowword, long
Send函数说明:&
调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完
毕,否则该函数不会返回。&
Long,由具体的消息决定&
参数 类型及说明&
handle Long,要接收消息的那个窗口的句柄&
message# Long,消息的标识符&
lowword Long,具体取决于消息&
long long,具体取决于消息&
3、 应用举例&
定义外部函数引用声明:&
funcation long SendMessage (long hwnd As Long,long wMsg , long
wParam,long lParam) Library "user32.dll" Alias for
"SendMessageA"&
funcation long ReleaseCapture() Library
"user32.dll"&
定义实例变量:&
Constant long LB_ITEMFROMPOINT = 425&
Constant long HTCAPTION = 2&
Constant long WM_NCLBUTTONDOWN = 161&
Constant long EM_GETLINE = 404&
Constant long EM_GETLINECOUNT = 399&
Constant long EM_GETLINECOUNT = 186&
Constant long EM_GETLINE = 196&
Constant long TVM_SETITEMHEIGHT = 4379&
Constant long EM_LINESCROLL = 182&
Constant long EM_LIMITTEXT=197&
1、列表框中鼠标移动时检测位置项&
Powerscript:&
在列表框的自定义事件ue_mousemove(pbm_mousemove)中写入如下代码:
pos = unitstopixels(parent.pointerx(),XUnitsToPixels!)+
unitstopixels(parent.pointery(),yUnitsToPixels!) *
idx = SendMessage(handle(this), LB_ITEMFROMPOINT, 0, pos) If
idx & 65536 Then sle_1.Text =
lb_1.text(idx)&
2、在列表框中查找匹配的项目&
Powerscript:&
窗口的open事件:&
lb_1.AddItem ("软件")&
lb_1.AddItem("电脑游戏")&
lb_1.AddItem("电视机")&
lb_1.AddItem("电视台")&
lb_1.AddItem("电脑")&
lb_1.AddItem("电脑游戏软件")&
singlelineedit控件的modified事件:&
long li_index&
li_index= SendMessage(handle(this), EM_GETLINECOUNT, -1,
sle_1.text)&
lb_1.selectitem(li_index)&
3、为ListBox添加水平滚动条&
Powerscript:&
窗口的open事件:&
lb_1.AddItem("软件")&
lb_1.AddItem("电脑游戏")&
lb_1.AddItem("电视机")&
lb_1.AddItem("电视台")&
lb_1.AddItem("电脑")&
lb_1.AddItem("电脑游戏软件")&
SendMessage (handle(this), EM_GETLINE, 250,
4、实现拖动无标题栏窗体&
Powerscript:&
在窗口的自定义事件ue_lbuttondown(pbm_lbuttondown)&
long ReturnVal&
x = ReleaseCapture()&
ReturnVal = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION,
5、获取多行文本框行数&
Powerscript:&
Commandbutton的clicked事件&
Messagebox("", SendMessage(handle(mle_1), EM_GETLINECOUNT, 0,
6、设置树型列表控件标题行高度&
Powerscript:&
tv_1的constructor事件:&
SendMessage(handle(tv_1), TVM_SETITEMHEIGHT, 60,
7、突破Powerbuilder中的多行文本框32k的限制&
Powerscript:&
SendMessage(handle(mle_1), EM_LIMITTEXT, 65534,
8、用程序代码控制文本框的滚行与滚列&
Powerscript:&
SendMessage(handle(sle_1), EM_LINESCROLL, 0,
1)//下卷一行&
SendMessage(handle(sle_1), EM_LINESCROLL, 0,
-1)//上卷一行&
SendMessage(handle(sle_1), EM_LINESCROLL, 1,
0)//右卷一列&
SendMessage(handle(sle_1), EM_LINESCROLL, -1,
0)//左卷一列&
三、结束语&
在编写Powerbuilder应用时,应该充分调用相关的api函数来扩充pb的一
对我有用[1] 丢个板砖[0] 引用 举报 管理 TOP&
bulebabyer
&#23楼 得分:0回复于: 00:22:06不贴了.太多..
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
daixf_csdn
(圣殿骑士)
&#24楼 得分:0回复于: 05:21:31顶一下
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#25楼 得分:0回复于: 08:21:42能否用send()或
SendMessage()函数实现在pb中关闭一个非fileopen()函数打开的文件的
功能啊?请教,如果能关闭文件,该怎么实现。我试了好久都没能实现
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#26楼 得分:0回复于:
08:28:53原来有相应的API可以实
现窗口的淡入淡出啊!!!!
记得以前我用MFC的时候,为了实现窗口的淡入淡出,还特意写了一大段
代码呢。现在看了力气是白费了!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
sunbinggong
(sunbinggong)
&#27楼 得分:0回复于: 08:33:53wo ding ni ge
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#28楼 得分:0回复于:
08:59:26看来楼主对这个的研究很
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#29楼 得分:0回复于: 09:37:28hehe
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
whitneywhite
(whitneywhite)
&#30楼 得分:0回复于: 10:44:53学习一下!!
小女子一直相信PB还没有过时。即使其他语言更强大,PB仍然能满足很
多软件开发的需要。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
nijian8481
(nijian8481)
&#31楼 得分:0回复于:
10:50:39我一直很崇拜你,顶你
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(压宝党天下)
&#32楼 得分:0回复于: 11:17:50顶顶 顶
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#33楼 得分:0回复于: 13:21:39顶!!谢谢了
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(you and me )
&#34楼 得分:0回复于: 13:34:00太谢谢了 !!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(农夫水泉)
&#35楼 得分:0回复于: 14:35:47学习...
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(啊拉。啊拉拉)
&#36楼 得分:0回复于: 14:43:20mark
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
qiutiandemeng
(qiutiandemeng)
&#37楼 得分:0回复于: 21:17:47好长呀.学习了
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(一路向北)
&#38楼 得分:0回复于: 11:16:38顶!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#39楼 得分:0回复于: 17:19:47頂一下
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
tanhaijun2007
(tanhaijun2007)
&#40楼 得分:0回复于: 17:36:35bucuo
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(ckoma1125)
&#41楼 得分:0回复于: 22:53:30拿走了...
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
zhangrong2008
(zhangrong2008)
&#42楼 得分:0回复于:
10:00:56收集了,很好的东东,谢
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
zhangrong2008
(zhangrong2008)
&#43楼 得分:0回复于: 10:02:44学习中
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#44楼 得分:0回复于:
10:43:34嗯,不错,收藏了,谢谢
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
newbailang
(newbailang)
&#45楼 得分:0回复于: 11:48:22UP
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(簸箕大的天真好)
&#46楼 得分:0回复于: 12:02:44谢谢分享。。。。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#47楼 得分:0回复于:
13:31:01感动的俺眼泪汪汪的
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
white41612
(white41612)
&#48楼 得分:0回复于: 13:31:18PB技巧
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#49楼 得分:0回复于:
15:15:26虽然看不明白你说的啥,
但还是看下吧。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(liran_ch)
&#50楼 得分:0回复于: 15:19:35学习学习.
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
shimenghui
(shimenghui)
&#51楼 得分:0回复于: 23:27:56学习学习
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#52楼 得分:0回复于: 08:56:35很好的东东,谢谢
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
qin_phoenix
(qin_phoenix)
&#53楼 得分:0回复于: 09:58:35mark
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#54楼 得分:0回复于:
10:45:37谢谢,精品资源啊,学习了
,谢谢楼主、newease、bluebabyer
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#55楼 得分:0回复于: 13:03:24好
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
fivecapable
(fivecapable)
&#56楼 得分:0回复于: 13:18:41up
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(kylegang)
&#57楼 得分:0回复于:
14:51:03ding&
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
xiangxuejiuxue123
(xiangxuejiuxue123)
&#58楼 得分:0回复于:
16:56:48大家多交流啊!好!更有
利于知识推广!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(plbanana)
&#59楼 得分:0回复于: 17:28:30我真的没点方向了
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
liulin0922
(liulin0922)
&#60楼 得分:0回复于: 17:52:29不懂也。。。。。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(紫气东来)
&#61楼 得分:0回复于:
19:19:22缅怀下曾经的开发工具~~
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#62楼 得分:0回复于: 19:29:28此贴太帅了
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(Delphi迷)
&#63楼 得分:0回复于: 19:32:43谢谢,收藏了。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
gothicly16
(gothicly16)
&#64楼 得分:0回复于: 19:46:54学习
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#65楼 得分:0回复于:
20:49:40太感谢楼主的分享了!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#66楼 得分:0回复于: 21:35:48Java code
Colour&&&&&&&
Blue&&& 值
Black&&&&&&&
White&&&&&&&
Gray&&&&&&&
深灰色&&& Dark
Red&&&&&&&
深红色&&& Dark
Green&&&&&&&
0&&& 65280
深绿色&&& Dark
0&&& 32768
Blue&&&&&&&
深蓝色&&& Dark
Magenta&&&&&&&
深紫红&&& Dark
Magenta&&&
Cyan&&&&&&&
深紫&&& Dark
Yellow&&&&&&&
0&&& 65535
Brown&&&&&&&
0&&& 32896
&&& Button
Face&&&&&&&&&&&&&&&
Text&&&&&&&&&&&&&&&&&&&
Background&&&&&&&&&&&&&&&
transparent&&&&&&&&&&&&&&&
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#67楼 得分:0回复于: 21:36:31C# code
Colour&&&&&&&
Blue&&& 值
Black&&&&&&&
White&&&&&&&
Gray&&&&&&&
深灰色&&& Dark
Red&&&&&&&
深红色&&& Dark
Green&&&&&&&
0&&& 65280
深绿色&&& Dark
0&&& 32768
Blue&&&&&&&
深蓝色&&& Dark
Magenta&&&&&&&
深紫红&&& Dark
Magenta&&&
Cyan&&&&&&&
深紫&&& Dark
Yellow&&&&&&&
0&&& 65535
Brown&&&&&&&
0&&& 32896
&&& Button
Face&&&&&&&&&&&&&&&
Text&&&&&&&&&&&&&&&&&&&
Background&&&&&&&&&&&&&&&
transparent&&&&&&&&&&&&&&&
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#68楼 得分:0回复于: 21:37:21效果都不好,还是直接吧
Colour Red Green Blue 值
黑色 Black 0 0 0 0
白色 White 255 255 255
灰色 Gray 192 192 192
深灰色 Dark Grey 128 128 128 8421504
红色 Red 255 0 0 255
深红色 Dark Red 128 0 0 128
绿色 Green 0 255 0 65280
深绿色 Dark Green 0 128 0 32768
蓝色 Blue 0 0 255
深蓝色 Dark Blue 0 0 128 8388608
紫红色 Magenta 255 0 255
深紫红 Dark Magenta 128 0 128 8388736
紫色 Cyan 0 255 255
深紫 Dark Cyan 0 128 128 8421376
黄色 Yellow 255 255 0 65535
棕色 Brown 128 128 0 32896
Button Face
Background
transparent
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#69楼 得分:0回复于: 21:45:13试了N种,效果都不太好
,以上为PB中常用的颜色值
如何将一建好的Grid数据窗口,不重新生成的情况下改变成FreeForm格
式的数据窗口?
如果是在PowerBuilder8.0以上版本中,选中该数据窗口,点击鼠标右键
,在弹出菜单中选择Edit Source,打开数据窗口的源代码,修改第2行
中的processing属性,由1改为0就可以了。
如果在其它版本的PB中,只能首先导出数据窗口的语法,修改完之后再
导入就可以了。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
fuxiaoyang13
&#70楼 得分:0回复于:
21:46:12dngding!!!!!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#71楼 得分:0回复于:
21:47:27如何把excel文件存为txt
string ls_pathname, ls_filename
integer li_value
GetFileOpenName("Select& File",&
ls_pathname,& ls_filename,&
"XLS",& "Microsoft&
Excel& Files&
(*.xls),*.xls")&
OLEOBJECT& myoleobject
myoleobject=CREATE&
OLEOBJECT&
myoleobject.ConnectToObject(ls_pathname)&
myoleobject.application.workbooks(1).saveas('c:\aa.txt',
destroy myoleobject
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#72楼 得分:0回复于: 21:50:52欢迎大家跟贴,把一些常
用的技巧整理上来
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(小猪麦兜)
&#73楼 得分:0回复于: 22:39:37非常实用啊
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#74楼 得分:0回复于: 08:11:16mark
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#75楼 得分:0回复于: 09:40:10mark
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(happy fish)
&#76楼 得分:0回复于: 12:37:25引用 73 楼
非常实用啊
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#77楼 得分:0回复于:
13:47:00谢谢各位分享!!!!!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
li_willian114
(two years later)
&#78楼 得分:0回复于: 14:15:56收藏了 学习
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(langutou)
&#79楼 得分:0回复于:
14:41:01最好的教程就是自己总结
楼主精神可嘉
-& 懒人代码库&-
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#80楼 得分:0回复于:
16:16:23[code=C/C++][/code]
#include &iostream&
& getchar();
& return 0;
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(qgylovelj)
&#81楼 得分:0回复于: 16:39:54jf
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(老婆当娶林晓伊)
&#82楼 得分:0回复于: 18:32:09
学习!!谢谢!!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#83楼 得分:0回复于: 21:43:04先记下
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#84楼 得分:0回复于: 22:16:03引用 81 楼
晕,一共就一分,你真能接
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#85楼 得分:0回复于: 13:57:54不错!
& 谢谢分享!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#86楼 得分:0回复于:
16:05:28.........
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#87楼 得分:0回复于: 17:55:49Mark!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
SimonYeung
(編程三日,唯有硬盤在歌唱)
&#88楼 得分:0回复于:
16:14:52感谢分享&
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(翔 DoItNow)
&#89楼 得分:0回复于: 19:59:08up
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#90楼 得分:0回复于: 11:56:12GOOD!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#91楼 得分:0回复于:
20:55:01PB这种东西,早该进垃圾
桶了,还在这歪歪。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
weisili760423
&#92楼 得分:0回复于:
00:04:48太精彩了,顶楼主!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
wanhahahahaha
(wanhahahahaha)
&#93楼 得分:0回复于: 18:15:52good
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(且听风吟)
&#94楼 得分:0回复于: 18:28:52不错 收藏
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#95楼 得分:0回复于: 07:29:47做个脚印
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
(秋雨霏霏)
&#96楼 得分:0回复于: 10:15:16顶
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#97楼 得分:0回复于:
16:40:32使Datawindow每页打印固
---- 第一步:增加一个计算列,此计算列必须放在Detail段,Expression
中输入: ceiling(getrow()/20) &--这里20还可以用全局函数取代,这
样可以允许用户任意设置每页打印多少行。&
---- 第二步:定义分组,选择菜单Rows-&Create
---- 按计算列字段分组,并一定将check box--&New Page On
Break选中。&
---- 第三步:将此计算列设为不可视。&
---- 另外,如果需要最后一页不足补空行。也很简单,如下:&
long ll_pagerow = 6 //每页打印行数&
long ll_count, ll_row&
ll_count = dw_report.retrieve(...)
//取得现有报表的总行数&
ll_count = ll_pagerow - mod(ll_count,
ll_pagerow)&
If ll_count & ll_pagerow
for ll_row = 1 to ll_count&
dw_print.insertrow(0) //补足空行&
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
Camper_beijing
&#98楼 得分:0回复于: 11:57:00不错!
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
&#99楼 得分:0回复于:
07:52:13现存很少有公司用PB了。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 蜂窝数据打开连不上网 的文章

 

随机推荐