接收的参数是字符串,用open或openwithparm能打开吗??

chongworm 2003-09-25 06:06:37
某一窗口名为w_type,假设现在通过字符串变量ls_wname接收到从其他地方传递过来的参数“w_type”,但我不想用OpenSheetWithParm或OpenSheet来打开该窗口,而要用open或openwithparm来打开,请问可以通过什么方法达到目的吗?
...全文
116 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
chongworm 2003-09-29
  • 打赏
  • 举报
回复
自己顶,但求各位帮我测试一下2003-9-28 18:19:48 留的这个问题(从这往上数的第二个回复),求求了!多谢!!
chongworm 2003-09-29
  • 打赏
  • 举报
回复
由于分数有限,人数太多,我这次不能每位都给“光临分”了,因为近30个人(除掉自己回复的了),就算一个人给一两分的关注分,那么也是很紧张,所以让部分光临的兄弟空手而归了,不好意思!最后,非常感谢coolroy2000(coolroy),你多次光临本贴并给予帮助,我最后根据你的意思解决了问题,多谢!
coolroy2000 2003-09-29
  • 打赏
  • 举报
回复
open(lstr_wno[i,j].w_wobject,lstr_wno[i,j].s_wname)
或者
open(lstr_wno[i,j].w_wobject,ls_winname)
就可!这种指定需要确定窗体类型既windowtype。pb默认这个时候Opens a window object when you don't know its data type。
banalman 2003-09-28
  • 打赏
  • 举报
回复
openwithparm(w_type,ls_string)
在w_type 中得到ls-string
ls_wname = message.stringparm
birdslin 2003-09-28
  • 打赏
  • 举报
回复
我觉得你应该这样问:
如何将string的变量转换为window类型的变量。
即:
string ls_window='w_type'
如何进行处理使得
window os_window
open(os_window)//os_window为ls_window想对应的窗口!

我也想知道!!!!!!!!!
wdschana 2003-09-28
  • 打赏
  • 举报
回复
不要把问题复杂化了
mittee 2003-09-28
  • 打赏
  • 举报
回复
应该能从下面的程序中找到解决的办法,
graphicobject stp_obj //graphicobject 是所有控件的祖先对象。
object type_obj

stp_obj = message.powerobjectparm
type_obj = stp_obj.typeOf()
choose case type_obj
case datawindwo!
..............
case window!
.............
end choose

TGWall 2003-09-28
  • 打赏
  • 举报
回复
照你的方法做了一下,发现打开的窗口确实不对劲,只有小小的一点,我暂时也不知是什么原因,帮你up
chongworm 2003-09-28
  • 打赏
  • 举报
回复
我按照 coolroy2000(coolroy)兄的方法,定义了一个结构。通过edit source得到的该结构的源码有下面的四行:

//********************************************
global type str_wname_wobject from structure
string s_wname
window w_wobject
end type
//********************************************

然后,我在程序中通过如下的代码来打开想要打开的窗口:
str_wname_wobject lstr_wno[3,3]
string ls_winname

lstr_wno[1,1].s_wname='w_type' //初始化结构
lstr_wno[1,1].w_wobject=w_type
lstr_wno[1,2].s_wname='w_type_1'
lstr_wno[1,2].w_wobject=w_type_1
//... ... ... ...
ls_winname=dw_1.object.winname[dw_1.getrow()] //从数据窗口中得到该行对应的窗口名

int i,j
for j=1 to 3 //执行循环语句,当找到对应的窗口名时,打开对应的窗口
for i=1 to 3
if lstr_wno[i,j].s_wname=ls_winname then
open(lstr_wno[i,j].w_wobject)
exit
end if
next
next

这样是可以打开窗口,但是打开的窗口只有一个标题栏,窗体都不见完了,不知是什么原因,求各 位帮我看一下,先谢了!
(友情提醒:各位只要先定义好结构str_wname_wobject ,然后将一个窗口名赋值给ls_winname,例如:ls_winname='w_xxxx',再给结构随便赋个值,例如:lstr_wno[1,2].s_wname='w_xxxx',之后就可怜执行循环语句测试了,麻烦各位帮我测试一下!)

coolroy2000 2003-09-28
  • 打赏
  • 举报
回复
1。定义一个结构数组,str_win[],包含window(所有窗体),string(传递的字符),一一对应
2。根据传递字符打开对应窗体即可

可能有点复杂,不知道有没有更好的办法!
帮你up。
sinkiangscorpio 2003-09-28
  • 打赏
  • 举报
回复
OpenWithParm ( windowvar, parameter, windowtype {, parent } )
sinkiangscorpio 2003-09-28
  • 打赏
  • 举报
回复
openwithparm(ww_other,wst_stru,ws_name+'_add',parent)
chongworm 2003-09-28
  • 打赏
  • 举报
回复
我要表达意思birdslin(柑桔)已帮我做了另一种诠释,即:
//=============================================
如何将string的变量转换为window类型的变量。
即:
string ls_window='w_type'
如何进行处理使得
window os_window
open(os_window)//os_window为ls_window想对应的窗口!
//=============================================
adeva 2003-09-28
  • 打赏
  • 举报
回复
我明白了,我所说的lw_name其实就是你所说的W_type!而我这里的W_type 即为你当前窗口(读取W_type)!
adeva 2003-09-28
  • 打赏
  • 举报
回复
我不知你是不是想要在打开W_type后,想在W_type 中得到所传来的“窗口”,如果是的话可以如下所示:
1、打开w_type时用如下代码:
openwithparm(w_type,w_name)
2、在w_type 中接收所传来的窗口用如下代码:
window lw_wname
lw_wname= message.powerobjectparm

lw_wname 就是你所想要的窗口
顺便说一句,其它控件也可这样得到,只不过是接收时控件类型要匹配
地狱余烬 2003-09-28
  • 打赏
  • 举报
回复
很简单嘛:
先定义一个windows变量和string 变量
window lw_Window
string ls_windows,ls_parm
OpenSheetWithParm(lw_Window, ls_parm,ls_windows, w_main_mdi, 3, Original!)

----w_main_mdi 多文档窗体 ,ls_windows 为你数据库中的得窗体名称(字符)
chongworm 2003-09-27
  • 打赏
  • 举报
回复
"w_type"是窗口名,我现在的数据库里有一个表的一个字段是用来存放窗口名的,是字符型的,当运行程序时,点击调用该表的数据窗口,点击不同的行,就要打开对应的窗口,在点击数据窗口的某一行时,我得到的只能是"w_type"、“w_type1”等等,但我却要打开w_type、w_type1,而我只想用openwithparm来打开,请问我该怎么办??我现在有个想法,就是定义一个数组存放所有将要可能打开到的窗口,当点击数据窗口,获得“w_type”或“w_type1”等等后就用循环语句来查找数组里对应的窗口,然后打开之。但具体怎么定义这个数组我现在还不大清楚,请问各位高手我的这个方法能行得通吗?或者你们还有什么更好的方法?请帮帮我!多谢了!!
coolroy2000 2003-09-26
  • 打赏
  • 举报
回复
例如,使用Closewithreturn传递并在open中引用:
Closewithreturn (parent,w_type1, w_type2,w_type3 ...等等变量)
然后
w_type w_type1, w_type2,w_type3 ...等等
w_type1, w_type2,w_type3 ...等等=Message.PowerObjectParm
open(w_type1, w_type2,w_type3 ...等等)

就可以达到你的要求!
coolroy2000 2003-09-26
  • 打赏
  • 举报
回复
1,定义w_type w_type1, w_type2,w_type3 ...等等
2,将w_type1, w_type2,w_type3 ...等等变量传递给接收窗口
3,在接收窗口接收事件中引用并打开。例如,open中:


chongworm 2003-09-25
  • 打赏
  • 举报
回复
求救!!!!!... ...
加载更多回复(15)

1,108

社区成员

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

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