如何将一个字符串转化为一个对象?

molight 2001-08-02 09:37:59
在PB中能否达到如下的要求:假设一个菜单的名字叫m_meuHelp,我在数据表中将其保存为字符串,现在我从数据表中读出这个菜单的名称,我取到的值是字符串型的(String),现在我想利用这个字符串达到对应的菜单对象的动作,如:m_meuHelp.TriggerEvent("Click").但是m_meuHelp是一个字符串,如何完成?
...全文
287 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
shouzi 2001-11-15
  • 打赏
  • 举报
回复
学习学习
caolei1974 2001-08-02
  • 打赏
  • 举报
回复
up
pbdesigner 2001-08-02
  • 打赏
  • 举报
回复
liulee(流方)提供的方法可行,但用tag我认为不太好,动态创建菜单的方法我已比较详细地说过(在以前的帖),最好用一个实例变量来存所触发的事件。比如要多语种的时候,我认为用tag好些,否则若被事件变量占去,tag的作用就不大了.各人风格不同,仅做参考。
xuam 2001-08-02
  • 打赏
  • 举报
回复
up
liulee 2001-08-02
  • 打赏
  • 举报
回复

我提供另外一个方法,不知道是否符合你的要求。
我想,你是要做一个菜单权限管理的东西,即保存菜单名到数据库中,然后根据名称来打开某模块?

如果是,那就看下去,如果不是,按 pbdesigner 的方法。
一、菜单动态生成;
二、创建菜单函数: ue_menu_item_clicked(string as_tag_string)
此函数直接触发frame窗口中的自定义事件:parentwindow.triggerevent('ue_open_module',0,as_tag_string)
三、每个动态生成的菜单clicked事件中调用函数 ue_menu_item_clicked(this.tag)
四、总而言之,利用menu_item的tag的可以随意赋值属性,通过它完成具体的操作。

pbdesigner 2001-08-02
  • 打赏
  • 举报
回复
killerdanny(danny),我发了一个领分的帖,见你不来,自己删了,望莫怪。谢
pbworm 2001-08-02
  • 打赏
  • 举报
回复
hehe
Methodor 2001-08-02
  • 打赏
  • 举报
回复
意思到了即可~~
呵呵~~
pbdesigner 2001-08-02
  • 打赏
  • 举报
回复
谢killerdanny(danny),快去领分吧
pbdesigner 2001-08-02
  • 打赏
  • 举报
回复
for i = 1 to li_itemcount
ls_classname = am_parentmenu.item[i].classname()
if lower(ls_classname) = lower(as_menuname) then
im_find = am_parentmenu.item[i]
exit
else
lm_parent = am_parentmenu.item[i]
if upperbound(am_parentmenu.item[i].item[]) > 0 then
of_getmenu(lm_parent,as_menuname)
end if
end if
next
3。使用菜单
string ls_menuname = 'm_menuhelp'
long ll_menuhandle
menu lm_parent,lm_find
of_getmenu(m_frame,ls_menuname)
if isvalid(im_find) then im_find.triggerevent(clicked!)
killerdanny 2001-08-02
  • 打赏
  • 举报
回复
XIXI
pbdesigner 2001-08-02
  • 打赏
  • 举报
回复
方法二。不遍历所有菜单,一旦找到立即停止
1。声明实例变量im_find
2。创建查找函数of_findmenu(menu am_parentmenu,string as_menuname)
int i,li_itemcount
string ls_classname
menu lm_parent
li_itemcount = upperbound(am_parentmenu.item[])
//那位老兄帮忙呵呵几声,我已有三屏没法回复了,谢谢
pbdesigner 2001-08-02
  • 打赏
  • 举报
回复
步骤2。使用菜单
menu lm_item[],lm_findmenu
string ls_menuname = 'm_menuhelp'
long i
f_getmenu(m_frame,lm_item)
for i = 1 to upperbound(lm_item)
if lm_item[i].classname() = ls_menuname then
lm_findmenu = lm_item[i]
exit
end if
next
if isvalid(lm_findmenu) then lm_findmenu.triggerevent(clicked!)
pbdesigner 2001-08-02
  • 打赏
  • 举报
回复
怎么放在VC++中呢?
方法一:遍历所有菜单再判断。
步骤1。遍历所有菜单
f_getmenu(menu am_parent,ref menu am_menu[])//遍历菜单放到一个菜单数组中
int i,li_itemcount
menu lm_parent
for i = 1 to upperbound(am_parent.item[])
li_itemcount = upperbound(am_menu[])
am_menu[li_itemcount + 1] = am_parent.item[i]
lm_parent = am_parent.item[i]
f_getmenu(lm_parent,am_menu)
next

1,079

社区成员

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

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