对DataWindow中按钮的编程问题 ,并将需要的值保存?100分

zbg 2003-08-21 06:13:39
我在做一个系统,需要在数据窗口中嵌入一个按钮,点击按钮后弹出选择文件对话框,选择图象文件后,将该图象保存到数据库中,同时显示在该按钮上.
我的代码如下:
在制作数据窗口对象时,嵌入了一个按钮,该按钮是系统的自代控件,在数据窗口对象中他的名称为b_1,数据窗口控件名称为dw_1,数据窗口控件中的数据窗口对象名称为d_emp
在数据窗口的buttonclicked中
string ls_pathname,ls_name
if dwo.name = "b_1" then
GetFileOpenName("请选择待导入图形文件", ls_pathname, ls_name, &
+ "PIC","Bitmaps (*.bmp),*.bmp,GIF Files (*.gif),*.gif,JPG Files (*.jpg)," &
+ "*.jpg,JPEG Files (*.jpeg),*.jpeg,ICO Files (*.ico),*.ico,All Files &
+ (*.*),*.*")
dw_1.object.b_1.picturename=ls_pathname//该语句不能通过,于是使用下句
dw_1.modify("b_1.picturename="+ls_pathname)//该语句通过编译,但没有改变图象的显示
end if

请问各位大侠,该如何使按钮上的图象转变,并将该图象存储到数据库中,该表名为emp_info,关键字为emp_id,图象字段为emp_pic .请各位大侠多多指教!!!!

...全文
27 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbg 2003-08-24
  • 打赏
  • 举报
回复
我最后自己解决了问题,现在将解决的办法和大家共同分享:
我在职员表中设计了一个字段存放职员的照片的路径,在设计数据窗口对象时利用图片控件和两个按钮实现,两个按钮分别为“保存”“打开”,假如图片控件名为p_photo,按钮名称分别为b_open,
b_save,在数据窗口的 buttonclicked事件中编写如下:
string ls_pathname,ls_name//定义为instance变量
if dwo.name = "b_open" or dwo.name='p_photo' then
GetFileOpenName("请选择待导入图形文件", ls_pathname, ls_name, &
+ "PIC","Bitmaps (*.bmp),*.bmp,GIF Files (*.gif),*.gif,JPG Files (*.jpg)," &
+ "*.jpg,JPEG Files (*.jpeg),*.jpeg,ICO Files (*.ico),*.ico,All Files &
+ (*.*),*.*")
dw_1.object.p_photo.filename=ls_pathname
end if
if dwo.name='b_save' then
li_currentrow=dw_1.getrow()
ls_emp_id=getitemstring(li_currentrow,'emp_id')//emp_id为表中的关键字段
dw_1.accepttext()
UPDATE Employee
SET emp_pic= :ls_pathname
WHERE Employee.emp_id= :ls_emp_id
USING sqlca;
//再这里可以进行判断
commit using sqlca;
end if

为了在打开时显示对应人的图片,在数据窗口的retrieveend时间中编写代码
int i
string ls_photo,ls_emp_id
li_currentrow=dw_1.getrow()
for i=1 to rowcount
ls_emp_id=getitemstring(li_currentrow,'emp_id')//emp_id为表中的关键字段
select emp_pic into :ls_photo from employee where emp_id=:ls_emp_id;
dw_1.object.p_photo.filename=ls_photo
next

为了使用户在翻页时照片能够更新,在数据窗口的rowfocuschanged事件中编写如下程序
string ls_photo,ls_emp_id
ls_emp_id=getitemstring(currentrow,'emp_id')//emp_id为表中的关键字段
select emp_pic into :ls_photo from employee where emp_id=:ls_emp_id;
dw_1.object.p_photo.filename=ls_photo


这样程序要求可以实现,只是系统中的照片位置不能移动,如果存放为blob,这样的方法也可以,只是存取的方法不同而已,利用blob希望大家自己进行编写,再这里多谢大家对我提的问题的解答




jdsnhan 2003-08-23
  • 打赏
  • 举报
回复
做了个测试,用describe描述picturename 属性为"!"
证实:
dw_1.modify("b_1.picturename='"+ls_pathname+"'")//
不能用b_1.picturename属性来控制图片的变化
应该用filename属性,即
dw_1.modify("b_1.filename='"+ls_pathname+"'")//
jackzhang168 2003-08-23
  • 打赏
  • 举报
回复
up
我邪故我在 2003-08-22
  • 打赏
  • 举报
回复
可以考虑用ole
JIANXIN_LU 2003-08-22
  • 打赏
  • 举报
回复
建议:
你在窗口中使用图片按钮,效果是一样的。在在控件的初化事件中写入图片对象
flyerlxg 2003-08-22
  • 打赏
  • 举报
回复
study and help you up
zbg 2003-08-22
  • 打赏
  • 举报
回复
在datawindow中有按钮控件,它也有picturename属性,在制作时可以选择显示的图片,大家可知道其他的方法吗?可以将它显示在图形控件中,如何解决?
runsoft 2003-08-22
  • 打赏
  • 举报
回复
dw_1.modify("b_1.picturename='"+ls_pathname+"'")//
freeliu 2003-08-21
  • 打赏
  • 举报
回复
datawindow中没有picturebutton控件,换句话说就是dw中的按钮不能显示图片。
polugen 2003-08-21
  • 打赏
  • 举报
回复
不可以这样用

609

社区成员

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

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