找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

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

【求助】UG/UIStyler/Single Select List/item设置

[复制链接]
跳转到指定楼层
1
发表于 2002-12-17 11:43:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在UIStyler中的Single Select List中subitem设置函数如下
  
char *temp_1="001";  char *temp_2="002";
UF_STYLER_item_value_type_t input_to_dialog_data_strct;
  
input_to_dialog_data_strct.value.strings[0]=temp_1;
input_to_dialog_data_strct.value.strings[1]=temp_2;
input_to_dialog_data_strct.item_attr=UF_STYLER_SUBITEM_VALUES;
input_to_dialog_data_strct.item_id=CHANGE_ID_LIST;//对应的ID,
input_to_dialog_data_strct.count=2;
  
  UF_STYLER_set_value(dialog_id,[$input_to_dialog_data_strct)]
  
出现错误,对话框从Menu中根本不出现,
请教原因
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2002-12-17 15:26:43 | 只看该作者
回去把c语言的书好好看一下。
3
发表于 2002-12-17 16:06:48 | 只看该作者
呵呵见笑了,
我知道很大可能性是数据类型错误,
用了很多方法:
如下
sprintf(input_to_dialog_data_strct.value.strings[0],“%s”,"001");
strcpy(input_to_dialog_data_strct.value.strings[0],"001");
  
input_to_dialog_data_strct.value.strings[0]=“001”;
  
都不对,
在针对Option选项传递数据的时候spintf和strcpy都不可以,没办法测试=,
不可理解的是竟然可以了。
  
我的理解:input_to_dialog_data_strct.value.strings是char **;类型的,而
temp_1,temp_2是char * 类型的
input_to_dialog_data_strct.value.strings[0]=temp_1;
是指针和指针之间的赋值,到底到那里结束,由char *temp_1中的一个“\0”f符号来标志。
4
发表于 2002-12-17 16:39:35 | 只看该作者
input_to_dialog_data_strct.value.strings[0]=temp_1; 变成
input_to_dialog_data_strct.value.strings[0]=(char**)temp_1;试试,我在multi select list中是通过这样来实现的。
5
发表于 2002-12-17 17:16:29 | 只看该作者
char temp[3][22]={"001","002","003"};
  
input_to_dialog_data_strct.value.strings[0]=(char *)temp[0];
input_to_dialog_data_strct.value.strings[1]=(char *)temp[1];
input_to_dialog_data_strct.value.strings[2]=(char *)temp[2]
处错,对话框出不来
如果:
  
char temp[3][22]={"001","002","003"};
  
input_to_dialog_data_strct.value.strings=(char **)temp;
则对话框可以出现,
但结果如下
temp[0]=001   
temp[1]=001   
temp[2]=001
input_to_dialog_data_strct.value.strings[0]=   
input_to_dialog_data_strct.value.strings[1]=(null)   
input_to_dialog_data_strct.value.strings[2]=(null)
  
请多多指教!
6
发表于 2002-12-18 09:25:27 | 只看该作者
char temp[3][22]={"001","002","003"};  
char *str[100];
int k;
for ( k=0;k<3;k++)
       str[k]=temp[k];
...........
input_to_dialog_data_strct.value.strings=(char **)str;
.........
这样试试看行不行。
7
发表于 2002-12-18 10:11:05 | 只看该作者
呵呵~这样就可以一点了,测试赋值好像是可以了,不过对话框还是没有出现
  
temp[0]=001   
temp[1]=001   
temp[2]=001
  
E:\UGNXPART\MOLDWIZAARD\DLG\MWDlgTest\MWDlgTest.c
  line153
input_to_dialog_data_strct.value.strings=(char**)string
  returned a: 2283644
  
赋值可以
input_to_dialog_data_strct.value.strings[0]=001   
input_to_dialog_data_strct.value.strings[1]=002   
input_to_dialog_data_strct.value.strings[2]=003

  
E:\UGNXPART\MOLDWIZAARD\DLG\MWDlgTest\MWDlgTest.c
  line159
input_to_dialog_data_strct.item_attr=UF_STYLER_SUBITEM_VALUES
  returned a: 6
  
E:\UGNXPART\MOLDWIZAARD\DLG\MWDlgTest\MWDlgTest.c
  line160
input_to_dialog_data_strct.item_id=CHANGE_ID_LIST
  returned a: 214184036
  
E:\UGNXPART\MOLDWIZAARD\DLG\MWDlgTest\MWDlgTest.c
  line161
input_to_dialog_data_strct.count=3
  returned a: 3
  
E:\UGNXPART\MOLDWIZAARD\DLG\MWDlgTest\MWDlgTest.c
  line163开始出现错误
UF_STYLER_set_value(dialog_id,&input_to_dialog_data_strct)
  returned error:1560008
:  560008
:  560008
:  560008
:  560008
:  560

  
估计还是赋值的原因,老兄你的Multi Select的值是如何赋和取的?共享一下好吗?
谢谢。
8
发表于 2002-12-18 11:58:06 | 只看该作者
这样应该是可以的,你再仔细检查一下有没有其它原因。
我不知道你做的东西是不是要与数据库连接,如果这样的话,读取可能有点烦琐。
9
发表于 2002-12-18 13:21:35 | 只看该作者
整个代码如下:
int CHANGE_apply_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
  char buf[133];
  char temp[3][22]={"001","002","003"};
  char *string[100];
  int i;
  UF_STYLER_item_value_type_t input_to_dialog_data_strct;
  
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
   
  UF_UI_open_listing_window();
  sprintf(buf,"temp[0]=%s   \ntemp[1]=%s   \ntemp[2]=%s\n",temp[0],temp[0],temp[0]);
  UF_UI_write_listing_window(buf);
  for(i=0;i<3;i++)
    string=temp;
  UF_CALL(input_to_dialog_data_strct.value.strings=(char**)string);
  
  sprintf(buf,"input_to_dialog_data_strct.value.strings[0]=%s   \ninput_to_dialog_data_strct.value.strings[1]=%s   \ninput_to_dialog_data_strct.value.strings[2]=%s\n",input_to_dialog_data_strct.value.strings[0],input_to_dialog_data_strct.value.strings[1],input_to_dialog_data_strct.value.strings[2]);
  UF_CALL(UF_UI_write_listing_window(buf));
  
  UF_CALL(input_to_dialog_data_strct.item_attr=UF_STYLER_SUBITEM_VALUES);
  UF_CALL(input_to_dialog_data_strct.item_id=CHANGE_ID_LIST);
  UF_CALL(input_to_dialog_data_strct.count=3);
  
    UF_CALL(UF_STYLER_set_value(dialog_id,[$input_to_dialog_data_strct))]
  
     UF_terminate ();
    return (UF_UI_CB_CONTINUE_DIALOG);  
  
}
10
发表于 2002-12-18 13:37:29 | 只看该作者
这两天没见,你又在瞎捣腾什么东西?我没有调试,但是给你两点建议:
  
1.
char* list[]={"001“,"002","003"};
...
input_to_dialog_data_strct.value.strings=list;
  
2.
  
对话框要放在application里面,并且application上一级文件夹路径在UG中注册过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-27 10:25 , Processed in 0.033070 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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