请问,CLOSEWITHRETURN能够传递一个数据窗口吗,为什么我总是传递不过来啊,很急,请大家帮忙!!

sodeberge 2003-11-24 12:16:27
如题,请高手赐教!
...全文
410 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sodeberge 2003-11-25
  • 打赏
  • 举报
回复
谢谢大家,我使用ROWSCOPY解决了问题!
fulongbiao 2003-11-25
  • 打赏
  • 举报
回复
定义datawindow变量
marinedalian 2003-11-24
  • 打赏
  • 举报
回复
同意楼上
lmby 2003-11-24
  • 打赏
  • 举报
回复
虽然在两个窗口中各定义了一个相同的DataWindow实例变量,但这变量名其实是一个被PB遮掩得很隐蔽的指针(指针的数据类型就是datawindow),等同于C/C++中的指针,只是指向一个对象,本身并不包括对象数据元。这就有了一个作用域的问题,我们平时直接把它当作对象本身拿来用,在一个作用域内用(比如一个窗口中)一般是没有问题的,但是想跨域(从一个窗口到另一个窗口)传递对象时,PB的麻烦就来了。CloseWithReturn时,PB的Message Object接收的其实也是一个指针,并指向窗口中DataWindow对象的一个复本,但PB在生成DataWindow复本时,并没有把源对象所包含的数据元本身复制过来,原因可能是因为数据是存在于dw控件的缓冲区中,缓冲区(Primary,Delete,Filter)都是一个二维数组,不能直接复制。这和控件的属性值是不太一样的,我们都知道若CloseWithReturn一个Statistic Text控件对象,则接收方可以很方便的获取该控件的各种属性值,比如Text等等。这是PB在CloseWithReturn一个类似于DataStore、DataWindow等对象时需要注意的地方。
一家之言,参考。
另外可变相的解决此问题,方法是设一个全局的DataWindow Buffer来过渡一下,速度非常快。
Thinkinger 2003-11-24
  • 打赏
  • 举报
回复
1:你的closewithreturn的窗口必须是response类型窗口;
2:你接受parms的窗口的方式是:powerobject lpo_object = message.powerobjectparm,且这个语句应该在打开response窗口的open[withparm]()的紧挨之后,否则可能不能顺利接收!
liliang800207 2003-11-24
  • 打赏
  • 举报
回复
学习
zhangdatou 2003-11-24
  • 打赏
  • 举报
回复
大家都很厉害
dotnba 2003-11-24
  • 打赏
  • 举报
回复
lmby(鹿门布衣) 说的不错。
.Net就比较好了,窗口关闭(Close),并不等于(Dispose/DeConstructor)。对于里面的还可以引用。
SnakeFF 2003-11-24
  • 打赏
  • 举报
回复
关注中.........
期待更好的方法!!!!!
GoldProgramer 2003-11-24
  • 打赏
  • 举报
回复
楼上的不是什么好方法。

试试下面的做法:
W_Parent是你的窗口要打开一个W_Popup的窗口。
在W_Parent中打开窗口的代码如下:
DataStore ResultDS;
Open(W_Popup);
ResultDS = Message.PowerObjectParm;
//然后就可以使用了
...

在W_Popup的Close事件中这样写
DataStore OutDS;
OutDS = create DataStore;
//在这里设置你要返回的数据窗口
//例如:仅是一个例子。
// OutDS.DataObject = 'd_User';
// OutDS.SetTransObject(SQLCA);
// OutDS.InsertRow(0);
// OutDS.SetItem(1, 'User_Name', 'User');
//...

CloseWithReturn(this, OutDS);
mittee 2003-11-24
  • 打赏
  • 举报
回复
设置一个全局 DataWindow 变量

1,056

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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