找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 18053|回复: 15
打印 上一主题 下一主题

【求助】UIStyler中的option _menu赋值问题

[复制链接]
跳转到指定楼层
1
发表于 2004-9-25 09:36:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
下面是我写的几句代码:
data.item_id=MY_PROGRAM;
data.item_attr=UF_STYLER_LIST_INSERT;
data.subitem_index=UF_STYLER_NO_SUB_INDEX;
data.indicator=UF_STYLER_STRING_VALUE;
data.value.string=string;
UF_STYLER_set_value(dialog_id,[$data)]
错误提示:UIStyler Callback:cannot set attribute,恳请指点!谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2004-9-25 16:17:27 | 只看该作者
data.value.string=string; 改为data.value.strings=string; 试一试
3
发表于 2004-9-25 21:38:24 | 只看该作者
option menu根本不支持LIST_INSERT.。
item_attr 应该等于 UF_STYLER_SUBITEM_VALUES
赋值应该是  
data.value.strings = &string;
4
发表于 2004-9-25 22:02:49 | 只看该作者
谢谢!
不过好像不行,由于api函数限制的缘故,prog_sub_names是const char **型,data.value.strings=[$prog_sub_names]编译不错,cannot convert const char ** to char **,恳请指点!
5
发表于 2004-9-26 11:00:57 | 只看该作者
直接用
data.value.strings = prog_sub_names;
6
发表于 2004-9-26 16:00:34 | 只看该作者
谢谢指点!
我使用字符数组和指针进行转换,可以赋值了,不过系统还是提示出错:
UIstyler Callback: Invalid value structure,恳请各位高手继续指点!
7
发表于 2004-9-27 10:17:59 | 只看该作者
这是对选项赋值(如果是初始化的话)
char *supplier[]={"DME","富力",
"HASCO","MISUMI","RABOURDIN","STAUBLI"};
  
    UF_STYLER_item_value_type_t data;
  
    data.item_attr=UF_STYLER_SUBITEM_VALUES;
    data.item_id=HOLE_OPTION_SUPPLIER;
    data.value.strings=supplier;
    data.count=6;
    UF_STYLER_set_value(dialog_id,[$data)]
你的问题似乎是动态赋值(指针的指针如何赋值的问题)
可以这样处理(只是处理方法之一)
   char ** pStr;
   char str[10][132]={"aaa", "bbb", "ccc", "ddd"};
   pStr=new char * [10];
   for(int i=0; i<10; i++)
         pStr=str;
然后将pStr赋给data.value.strings,你也可以改变str中的值,strcpy(str[1], "tets");,或者开始对str不初始化,现在用strcpy,or, sprintf etc.. 赋值
data.value.strings=pStr;
  
用完后释放空间,也许系统会释放?,如果运行没有错误,还是释放的好!
   delete [] pStr;
  
这在UG二次开发中用到的比较多,所以希望这对其他人也有所帮助。
8
发表于 2004-9-27 14:07:14 | 只看该作者
非常感谢huashanyjj及各位指点!
9
发表于 2004-9-28 15:34:23 | 只看该作者
还有一个问题要问:用鼠标选择其中一项,如何读该数据,谢谢!
10
发表于 2004-9-29 13:09:46 | 只看该作者
因为option menu没有插入一项的功能,所以要插入一项,所有的选项都要再用上次的方法,插入一遍,即把下面代码再执行一遍。往supplier中用strcpy加入一项,count加一其中supplier中包含你的新的选项。
   UF_STYLER_item_value_type_t data;  
  
   data.item_attr=UF_STYLER_SUBITEM_VALUES;  
   data.item_id=HOLE_OPTION_SUPPLIER;  
   data.value.strings=supplier;  
   data.count=6;  
   UF_STYLER_set_value(dialog_id,[$data)]  
  
有关点击一项,读出数据,可以这样处理:
在对话框中添加option menu 的处理函数
在处理函数里:
   UF_STYLER_item_value_type_t data;
   data.item_attr=UF_STYLER_VALUE;
   data.item_id=HOLE_OPTION_SUPPLIER;
   UF_STYLER_ask_value(dialog_id,[$data)]
   int index_supplier=data.value.integer;//得到选中哪一项。
得到选中的那一项后,如果你知道所有选项(一个指针的指针,或二维数组等)就可以利用 supplier[index_supplier]得到数据。不知道的话。
UF_STYLER_item_value_type_t data;
data.item_attr=UF_STYLER_SUBITEM_VALUES;
data.item_id=HOLE_OPTION_SUPPLIER;
UF_STYLER_ask_value(dialog_id,[$data)]
  
其中data.value.strings就是所有选项;选中的项就是
data.value.strings[index_supplier]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-31 01:48 , Processed in 0.027490 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

快速回复 返回顶部 返回列表