在线等待,如何在dw中显示图片?无论是用picture控件还是ole都可以

livy123 2003-05-19 04:27:03
如题,2种方式任一种都可以,只要给全代码就可以给分了。
...全文
113 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫炎圣骑 2003-07-02
  • 打赏
  • 举报
回复
用picture控件完全可以实现的
把图片的名称写到*.pbr中
编译的时候把*.pbr文件打包到程序中
打包的时候图片文件要放到编译路径下
这样的话,你就可以随便使用*.pbr中的图片了,再也不用关心路径问题,因为图片已经打包到软件中了!!
brightstar 2003-07-02
  • 打赏
  • 举报
回复
UP
紫炎圣骑 2003-07-02
  • 打赏
  • 举报
回复
学习中.....
iwithyou 2003-07-01
  • 打赏
  • 举报
回复
我用通过PICTURE控件存进去的数据可以成功。
http://expert.csdn.net/Expert/topic/1979/1979641.xml?temp=.5850183
flyerlxg 2003-07-01
  • 打赏
  • 举报
回复
study and help you up
runsoft 2003-07-01
  • 打赏
  • 举报
回复
可以使用PICTURE控件,在记录当中保存图片的位置信息,如果要显示,则,在 DW当中,
放置一个PICTUREN 空间,把检索出来的路径复制给他,不过这个方法适合单条记录。
iwithyou 2003-07-01
  • 打赏
  • 举报
回复
Joss:
用了你的第一种方法,但是生成的BMP无图像,打开时提示“无效的位图文件或不支持文件的格式”。

有哪位做成功的没有?
guanhua8 2003-06-04
  • 打赏
  • 举报
回复
用DB OLE好象不行。
sure2002 2003-06-04
  • 打赏
  • 举报
回复
把图片写到*.pbr中再把图片插入到软件中,正常的PICTURE,这种做法不会影响软件的运行速度只是把软件的容量增大了.
livy123 2003-05-19
  • 打赏
  • 举报
回复
补充一点,我是用n-up格式的dw
livy123 2003-05-19
  • 打赏
  • 举报
回复
感谢joss(季节...夏至),第一种方法有点麻烦,我想用第二种方法。但第二种ole的属性我已经设置好了,但编程那里的代码(关于这方面的)我一窍不通,有没有样本代码看看啊,谢谢
nbnasom 2003-05-19
  • 打赏
  • 举报
回复
备注:字段值应为全路径名:如:c:\mydocu~1\mypict~1\1.bmp
图片格式:仅能用BMP
路径名:DOS 8。3格式
nbnasom 2003-05-19
  • 打赏
  • 举报
回复
任意控件,在general页选取display as picture
jeff_107 2003-05-19
  • 打赏
  • 举报
回复
没试过,, gz
joss 2003-05-19
  • 打赏
  • 举报
回复
方法一的代码:
图片临时存放在图片路径下:

先读出来的
blob emp_id_pic

SELECTBLOB picture
INTO :emp_id_pic
FROM scanimg
WHERE picID = :sz_PicID
USING SQLCA ;

在临时写入一个路径下:
如:

ll_filelen=len(emp_id_pic)
setnull(emp_id_pic)
emp_id_pic=as_blob

ls_server_path="d:\ls" //临时存放的图片路径

ls_downfile=ls_server_path

//计算读文件的次数,不能一次大于32K的数据
if ll_filelen>32766 then
if mod(ll_filelen,32766)=0 then
li_loops=ll_filelen/32766
else
li_loops=(ll_filelen/32766) + 1
end if
else
li_loops=1
end if
ls_filename=mid(ls_filename,4,len(ls_filename))

//写文件
li_FileNum = FileOpen(ls_downfile,StreamMode!, Write!, Shared!, Append!)
ll_bytes_read=FileWrite(li_FileNum,emp_id_pic)

for li_counter=2 to li_loops
ll_new_pos=ll_bytes_read*(li_counter - 1) + 1
ll_new_pos=ll_bytes_read*li_counter

data_ls = BlobMid(emp_id_pic,ll_bytes_read*(li_counter - 1) + 1,ll_bytes_read*li_counter)
ll_new_pos=FileWrite(li_FileNum,data_ls)

next
fileclose(li_filenum)

//最后
dw_1.object.p_1.Filename='d:\ls\temp.bmp'
joss 2003-05-19
  • 打赏
  • 举报
回复
备注:
楼主的问题如使用我的建议,则注意图片不要太大,因为保存在数据库中的图片文件读取但对系统性能有影响(如果图片太大),并且使用OLE虽然方便但PB与OLE的兼容性一直受到大家的致疑!
所以所保存的图片不应太大!
joss 2003-05-19
  • 打赏
  • 举报
回复
1、用picture控件显然不行,因为bitmap要求指定路径!
当然,如果每页只显示一个图片用程序脚本可实现!
1)读出数据库内blob数据
2)写入到窗口中的picture控件
3)保存图片到指定的临时文件如aaa.bmp
4)在数据窗口中picture的控件指定picturename = aaa.bmp
总的来说这样还是不太方便


2、用DB OLE控件可实现,主要还要设置表名、列名、KEY CLAUSE、OLE CLASS和CLIENTNAME expression
例如:其中的key clause则可写id = :id
ole class 则选择 PBrush 画笔图片
classname expression则写 "object"
这里的id指要显示的表相关的ID


建议楼主使用第2种方法!
JIANXIN_LU 2003-05-19
  • 打赏
  • 举报
回复
在数据窗口对象中使用ole Database blob控件,可以达到你的要求。
guanhua8 2003-05-19
  • 打赏
  • 举报
回复
数据窗口画板有一个DB OLE 控件,接下来就查帮助吧
livy123 2003-05-19
  • 打赏
  • 举报
回复
忘了,图片数据是以blob类型放在数据库中的

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧