iCAx开思工具箱

标题: 回调 [打印本页]

作者: 刘亮    时间: 2004-8-24 11:51
标题: 回调
我做了个动态控制的对话框(见附件),能实现动态,即双击标准件会出现螺栓、螺母、定位销,我想问高手的是:我现在想,比如双击螺栓,怎样出现另一个对话框,回调函数怎么写?我写的程序怎么不行???谢谢高手的帮助
代码如下:
  
int CHANGE_doubl_list0 ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{
     /* Make sure User Function is available. */   
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
   {    char *data1[30]={"螺栓","螺母","定位销"};
   char *data2[30]={"模板","多孔板"};
   UF_STYLER_item_value_type_t list_data0,list_data1;//定义数组变量
   list_data0.item_id=CHANGE_LIST_0;//第一个单选列表框
   list_data0.item_attr=UF_STYLER_VALUE;
     list_data0.indicator=UF_STYLER_STRING_VALUE;
   UF_STYLER_ask_value(dialog_id,[$list_data0)]
   if(strcmp(list_data0.value.string,"标准件")==0)
   {    list_data1.item_id=CHANGE_LIST_1;
   list_data1.item_attr=UF_STYLER_LIST_DELETE;
   list_data1.subitem_index=UF_STYLER_NO_SUB_INDEX;
   UF_STYLER_set_value(dialog_id,[$list_data1)]
   list_data1.item_id=CHANGE_LIST_1;//第二个单选列表框
   list_data1.item_attr=UF_STYLER_LIST_INSERT;
   list_data1.subitem_index=UF_STYLER_NO_SUB_INDEX;
   list_data1.value.strings=data1;
   list_data1.indicator=UF_STYLER_STRING_PTR_VALUE;
   list_data1.count=3;
   UF_STYLER_set_value(dialog_id,[$list_data1)]
   }
   if(strcmp(list_data0.value.string,"常用件")==0)
   {    list_data1.item_id=CHANGE_LIST_1;
   list_data1.item_attr=UF_STYLER_LIST_DELETE;
   list_data1.subitem_index=UF_STYLER_NO_SUB_INDEX;
   UF_STYLER_set_value(dialog_id,[$list_data1)]
  
   list_data1.item_id=CHANGE_LIST_1;
   list_data1.item_attr=UF_STYLER_LIST_INSERT;
   list_data1.subitem_index=UF_STYLER_NO_SUB_INDEX;
   list_data1.value.strings=data2;
   list_data1.indicator=UF_STYLER_STRING_PTR_VALUE;
   list_data1.count=2;
   UF_STYLER_set_value(dialog_id,[$list_data1)]
  
  
   }
}
  
     UF_terminate ();
上面的代码是正确的,下面的错误的,怎么编阿.
  
   UF_STYLER_item_value_type_t list_data3;;//定义数组变量
   list_data3.item_id=CHANGE_LIST_1;//第二个单选列表框
   list_data3.item_attr=UF_STYLER_VALUE;
     list_data3.indicator=UF_STYLER_STRING_VALUE;
   UF_STYLER_ask_value(dialog_id,[$list_data3)]
   if(strcmp(list_data3.value.string,"螺母")==0)
{
creat_nut(int [$response)]//调用另一个对话框
}
   if(strcmp(list_data3.value.string,"螺栓")==0)
{
creat_nut(int [$response)]//调用另一个对话框
}
......
作者: 刘亮    时间: 2004-8-24 11:57
忘了附件,附件附上
作者: 刘亮    时间: 2004-8-24 17:19
求求各位大侠阿,给个指导阿,或能不能那样调用阿
作者: huashanyjj    时间: 2004-8-26 15:02
出现什么问题你写详细一点.
是不能激活对话框,还是怎么回事.
作者: 刘亮    时间: 2004-8-28 09:53
to:huashanyjj  
您好!!!
是这样的:在第二个列表框控件中有螺栓,螺母,定位销,模板,多孔板等5项,但这五项在做对话框时是没有写进去的(见附件),是第一个列表框动态调用时才出现的,但它只有一个回调函数:CHANGE_doubl_list1(),我要在这个回调函数中调分别其它5个对话框(螺栓对话框,螺母对话框。。。),我怎么得到:当是螺栓时调用螺栓对话框、当是螺母时调用螺母对话框...即我怎么在二个列表框控件中得到螺栓、螺母等属性,而二个列表框控件中本身没有写进那几项字。谢谢!!!
作者: 深夜摔键盘    时间: 2004-8-28 21:24
当你点第一个LIST时不就是为了让第二个LIST出现螺栓,螺母什么的么?
既然第二个List已经有了各条信息,那么通过获取鼠标点击的选项的字符串信息,完全可以自己做一个swithc....case结构来判断该调用哪个对话框啊?
作者: huashanyjj    时间: 2004-8-29 14:24
1、当是螺栓时调用螺栓对话框
在CHANGE_doubl_list1(),加入判断语句(如深夜摔键盘 所说),
因为螺栓,螺母,定位销,模板,多孔板的排列是确定的,所以可以得到双击的那一项的index(也可以得到显示的字符串进行比较,看选中哪一项,麻烦一些)。
2、当是螺母时调用螺母对话框...即我怎么在二个列表框控件中得到螺栓、螺母等属性,而二个列表框控件中本身没有写进那几项字。
双击第二列表框时,激活对话框(把该控件的create dialog 打开)。螺栓等的属性,你指的是否是其标准系列,要在弹出的对话框显示。如果是的话,我想这些数据应该放在数据库里以供调用(数据少时,直接放在程序里处理。不过不能再修改)。此时,你知道是螺栓,则调用螺栓的数据即可,其他也一样。
  
不知以上是否解答你的问题?!
  
to:huashanyjj  
您好!!!  
是这样的:在第二个列表框控件中有螺栓,螺母,定位销,模板,多孔板等5项,但这五项在做对话框时是没有写进去的(见附件),是第一个列表框动态调用时才出现的,但它只有一个回调函数:CHANGE_doubl_list1(),我要在这个回调函数中调分别其它5个对话框(螺栓对话框,螺母对话框。。。),我怎么得到:当是螺栓时调用螺栓对话框、当是螺母时调用螺母对话框...即我怎么在二个列表框控件中得到螺栓、螺母等属性,而二个列表框控件中本身没有写进那几项字。谢谢!!!




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3