当前位置: 代码迷 >> PB >> PB结合数据窗modify filename,返回值为0,成功,但无显示图像
  详细解决方案

PB结合数据窗modify filename,返回值为0,成功,但无显示图像

热度:231   发布时间:2016-04-29 08:01:25.0
PB组合数据窗modify filename,返回值为0,成功,但无显示图像
员工管理,其中有一个表IMAGE_INFO,三个字段:
emp_no number(6)
image blob
image_date date


使用Composite数据窗口,将员工信息、学历、岗位与照片输出打印。

复合数据窗口为:dw_print
子数据窗口照片为:dw_image_p

图片为*.JPG

部分语句如下:
************************************************ 以下成功 ******************************************
//提取图片存储信息
SELECTBLOB IMAGE INTO :lb_photo FROM IMAGE_INFO WHERE EMP_ID = :gl_emp_id_p USING sqlca;  
//判断读取是否成功  
IF SQLCA.SQLCODE <> 0 THEN
SetNull(lb_photo)  
END IF

//创建并打开临时存放的图片文件
li_file_no = fileopen("c:\employee\image\temp.jpg",StreamMode!,Write!,LockReadWrite!,Replace!)

//取文件长度
ll_blob_len = len(lb_photo)
IF ll_blob_len > 32765 THEN
IF mod(ll_blob_len,32765) = 0 THEN
li_writes = ll_blob_len/32765
ELSE
li_writes = (ll_blob_len/32765) + 1
END IF
ELSE
li_writes = 1
END IF

//写入
ll_pos = 1
FOR i = 1 TO li_writes
lblb_data = blobmid(lb_photo,ll_pos,32765)
ll_pos += 32765
IF filewrite(li_file_no, lblb_data) = -1 THEN
fileclose(li_file_no)
return 0
END IF
NEXT
******************************************* 以上成功 *******************************************
//显示
string ls_massage
ls_path = "c:\employee\image\temp.jpg"
//ls_massage = dw_print.modify("p_picture.filename = '" + ls_path + "'")
-------------------------------------------------------------------
Q1:(开始在Composite数据窗口插入了PICTURE控件,不报错,但是不显示图片.不知道复合数据窗口能否实现显示图片?)
-------------------------------------------------------------------

//dw_print.object.p_picture.filename = ls_path
rtnCode4 = dw_print.getchild("dw_image_p",state_child4)
// state_child4.object.p_picture.filename = "c:\employee\image\temp.jpg"
-------------------------------------------------------------------
Q2:(这句报错:"Error C0019:Incompatible property object for type datawindowchild",不知道如何解决.)
-------------------------------------------------------------------

state_child4.modify("p_picture.filename = '" + ls_path + "'")
-------------------------------------------------------------------
Q3:(最后使用子数据窗口MODIFY,不报错,但是无显示图片)
-------------------------------------------------------------------

state_child4.SetTransObject(SQLCA)
state_child4.Retrieve(gl_emp_id_p)
state_child4.SetRedraw(true)


//打印数据窗口
//long job
//job = printopen()
//printdatawindow(job,dw_print)
//close(w_print)
//printclose(job)



最终目的:打印时正常打印图片

这块看了两天,也看了、试了不少方法,还是搞不定,拜托高手指点!谢谢!!



------解决方案--------------------
不要使用jpg,采用bmp试试呢。
------解决方案--------------------
Q1:(开始在Composite数据窗口插入了PICTURE控件,不报错,但是不显示图片.不知道复合数据窗口能否实现显示图片?) 

答:这个我刚刚试了,没有问题可以显示。

Q2:(这句报错:"Error C0019:Incompatible property object for type datawindowchild",不知道如何解决.) 

答:这个是子窗口,没有这些属性,只能用modify方法来改。

Q3:(最后使用子数据窗口MODIFY,不报错,但是无显示图片) 
答:这个我刚刚试了,没问题,我开始用的是才c:\windows\winnt256.bmp
然后程序打开通过按钮操作改为c:\windows\FeatherTexture.bmp没有任何问题
代码如下:
DataWindowChild dw_child
integer rtncode
rtncode = dw_1.GetChild('dw_1', dw_child)
IF rtncode = -1 THEN MessageBox( "Error", "Not a DataWindowChild")
string ls_path
ls_path='c:\windows\FeatherTexture.bmp'
dw_child.modify("p_1.filename = '" + ls_path + "'")
  相关解决方案