数据窗口中为什么不能直接显示数据库中的图形字段?
我在datawindow里用ole能够读取数据库中的*.jpg文件,但不能直接显示,只显示jpg图标。若想显示,只能通过双击该图标,打开画笔程序或Acdsee显示该图形。请问各位高手,怎样直接显示数据库中的图形? 问题点数:50、回复次数:8Top
1 楼tuliplangel(开心最重要)回复于 2003-06-02 19:59:22 得分 5
Activate (InPlace! )可以显示Top
2 楼joss(季节...夏至)回复于 2003-06-02 20:01:35 得分 5
这人问题可以查看PB自带例子,估计你的设计有不对地方,可以显示图片文件的!
应当选择database ole objectTop
3 楼happyscaiyu(酸菜鱼)回复于 2003-06-02 20:09:39 得分 0
我用的是数据窗口中的ole database blob控件。可以通过双击blob小图框激活ole服务器,也就是通过打开windows画笔打开图形。我现在想直接在数据窗口中显示图形,而不通过双击图标打开其它应用程序来显示。
谢谢大家的热心,请继续帮助我解决这个问题!Top
4 楼happyscaiyu(酸菜鱼)回复于 2003-06-02 20:27:30 得分 0
tuliplangel(酷儿) ,请你说得详细些好吗?Top
5 楼nolight(nolight)回复于 2003-06-03 10:08:27 得分 5
tuliplangel(酷儿) 讲的方法我没试过。
我曾经不得已这样做的,
读出image字段内容,存为本机temp.jpg,dw里一个image控键,指向temp.jpgTop
6 楼happyscaiyu(酸菜鱼)回复于 2003-06-03 10:48:14 得分 0
nolight(nolight)
这样做能在数据窗口中直接显示图形吗?
就像在dw中加一个picture控件一样?Top
7 楼nolight(nolight)回复于 2003-06-03 14:46:54 得分 35
是的。
DW中picture控键]名为photo, 一个人事系统,显示每个人员的照片
employee:id,name,photo,
retrieve人员资料后,调用窗口函数,
窗口函数wf_showpic代码如下:
=======================================
Blob Emp_id_pic,b_tmp
STRING str1
INTEGER li_FileNum
LONG ll_loop,ll_loopnum,ll_len
str1 = dw_employee.object.id[1]
SELECTBLOB photo
INTO :Emp_id_pic
FROM employee
WHERE employee.id = :str1
USING sqlca ;
COMMIT;
ll_len = LEN(Emp_id_pic)
IF ll_len > 32765 THEN
IF Mod(ll_len, 32765) = 0 THEN
ll_loopnum = ll_len/32765
ELSE
ll_loopnum = (ll_len/32765) + 1
END IF
ELSE
ll_loopnum = 1
END IF
li_FileNum = FileOpen("C:\myprogram\temp.bmp",LineMode!, Write!, LockWrite!,Replace!)
FOR ll_loop = 1 to ll_loopnum
IF ll_loop = ll_loopnum THEN
b_tmp = BLOBMID(Emp_id_pic,(ll_loop - 1) * 32765,ll_len - (ll_loop - 1) * 32765)
ELSE
b_tmp = BLOBMID(Emp_id_pic,(ll_loop - 1) * 32765,32765)
END IF
FileWrite(li_FileNum,b_tmp)
NEXT
FileClose(li_FileNum)
dw_employee.Modify("Photo.FileName=C:\myprogram\temp.bmp'")
=======================================================
这里面有个问题是,
文件路径C:\myprogram\,如果人家程序装到其它路径就不对了。
直接调用当前路径,如果用户才用过office 文件,当前路径可能又在c:\my document\下。
由于我的用户程序是我装的,他们不会乱换路径。Top
8 楼happyscaiyu(酸菜鱼)回复于 2003-06-03 21:03:01 得分 0
多谢.我试试看Top




