原创_分享个便捷创建控件的组合函数_使用经验
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 9  1/1   1  
作者
内容
dragonzsp  [个人空间]
QQ名  十二个耳环(187199580)


注册  2011-03-25
发贴数  182
精华数  0
原创贴  4
来自  温州
状态  正常

级别  贵宾
#1»发布于2017-11-20 09:15

      这几天研究软件的产品档案,准备把公司现用的erp转移到onlyit上使用。苦恼发现,erp上的产品档案的一些产品属性太多,onlyit上面开满拓展都不够使用。下载了最新版onlyit,翻看了csp.doc文档,对创建控件的相关函数进行了研究,决定自己建表和创建自定义控件。创建自定义控件过程中,为使用方便,我自己组合了一个创建控件函数,简化创建控件的坐标及宽度计算过程,现在分享出来,欢迎大家在此基础上改进分享。代码如下: 
 
 
/* 
Create_Contrl 创建一个文本标签 
paraView:父控件名称 
ViewName:要创建的控件名称 
ViewText:要创建的控件标题 
TopViewName:要创建的控件上面控件名称 
LeftViewName:要创建的控件左边控件名称 
ZiDianID_or_Call_str:当为字典ID时,为下拉列表专用,其他为空就行,当创建的控件为按钮时候ZiDianID_or_Call_str为命令的脚本名称,比如call_prog.xxx 
Type:控件类型,1为文本标签,2位编辑框,3为日期选择框,4为组合框,5为独立打勾框,6为多选1打勾框,7为多行编辑框,8为下拉列表,9为普通按钮,10为标签式按钮 
 
 
*/ 
function int Create_Contrl(string paraView,string ViewName,string ViewText,string TopViewName,string LeftViewName,string ZiDianID_or_Call_str,int Type) 

  string FatherView; 
  int Topx,Topy,TopW,TopH,Leftx,Lefty,LeftW,LeftH; 
  int x,y,w,h,bx,by; 
  bx=10;     
  by=20 
  x=0; 
  y=0; 
  w=strlen(ViewText)*9; 
  h=15; 
  if(paraView=="") 
  { 
    FatherView="this"; 
  } 
  else 
  { 
    FatherView=paraView; 
  } 
  if(TopViewName=="") 
  { 
    Topx=0; 
    Topy=0; 
    TopW=20; 
    TopH=15; 
  } 
  else 
  { 
    Topx=gui_get_x(TopViewName); 
    Topy=gui_get_y(TopViewName); 
    TopW=gui_get_w(TopViewName); 
    TopH=gui_get_h(TopViewName); 
    y=Topy+15+TopH; 
    if(x==0) 
    { 
      x=Topx; 
    } 
  } 
  if(LeftViewName=="") 
  { 
    Leftx=0; 
    Lefty=0; 
    LeftW=20; 
    LeftH=15; 
  } 
  else 
  { 
    Leftx=gui_get_x(LeftViewName); 
    Lefty=gui_get_y(LeftViewName); 
    LeftW=gui_get_w(LeftViewName); 
    LeftH=gui_get_h(LeftViewName); 
    x=Leftx+LeftW+5; 
    if(y==0) 
    { 
      y=Lefty; 
    } 
  } 
  if(x==0) 
  { 
    x=bx; 
  } 
  if(y==0) 
  { 
    y=by; 
  } 
  gui_set_x(ViewName,x); 
  gui_set_y(ViewName,y); 
  gui_set_w(ViewName,w); 
  gui_set_h(ViewName,h); 
  //dbg(ViewName+":"+x+","+y+","+w+","+h) 
  switch(Type) 
  { 
    case 1: 
    gui_create_label(FatherView,ViewName,x,y,ViewText); 
    break; 
    case 2: 
    gui_create_edit(FatherView,ViewName,x,y-2,w,h); 
    gui_set_val(ViewName,"") 
    break; 
    case 3: 
    gui_create_date_pick(FatherView,ViewName,x,y-2,w,h); 
    break; 
    case 4: 
    gui_create_group_box(FatherView,ViewName,x,y,w,h,ViewText); 
    break; 
    case 5: 
    gui_create_check_box(FatherView,ViewName,x,y,w,h,ViewText); 
    break; 
    case 6: 
    gui_create_radio_button(FatherView,ViewName,x,y,w,h,ViewText); 
    break; 
    case 7: 
    gui_create_memo(FatherView,ViewName,x,y,w,h); 
    gui_set_val(ViewName,"") 
    break; 
    case 8: 
    gui_create_combobox(FatherView,ViewName,x,y-2,w,h,ZiDianID_or_Call_str);     
    break; 
    case 9: 
    gui_create_button(FatherView,ViewName,x,y-2,w,h,ViewText,ZiDianID_or_Call_str); 
    break; 
    case 10: 
    gui_create_speedbutton(FatherView,ViewName,x,y-2,w,h,ViewText,ZiDianID_or_Call_str); 
    break; 
  } 
   
 
  return 1; 

 
 
//现在贴出我自己写的产品检索控件创建代码,并在附件添加效果图,示例代码如下: 
int main() 

  //隐藏产品检索相关控件 
  gui_hide("SpeedButton_Fetch_Limit"); 
  gui_hide("Label3"); 
  gui_hide("Label4"); 
  gui_hide("CheckBox_Res_Unit_Type"); 
  gui_hide("ComboBox_Ext_Res_Unit_Type"); 
  gui_hide("CheckBox_Res_Kind"); 
  gui_hide("ComboBox_Ext_Res_Kind"); 
  gui_hide("ComboBox_Ext_Parent_Res_Id"); 
  gui_hide("ComboBox_Ext_Group_Id"); 
  gui_hide("CheckBox_Hide_Son"); 
  gui_hide("CheckBox_Show_Stop"); 
  //创建自己的自定义标签 
  gui_create_button("Panel_Lmt_Switch","bt_SearchRes",5,3,strlen("产品档案检索")*9+2,20,"产品档案检索","call_prog.产品档案检索按钮创建脚本.Button_SearchRes");   
  Create_Contrl("ScrollBox_Lmt","cb_Res_ID","产品编号:","","","",5); 
  Create_Contrl("ScrollBox_Lmt","cbt_Res_ID","产品编号:","","cb_Res_ID","",2); 
  Create_Contrl("ScrollBox_Lmt","cb_Res_Name","产品编号:","cb_Res_ID","","",5); 
  Create_Contrl("ScrollBox_Lmt","cbt_Res_Name","产品编号:","cb_Res_ID","cb_Res_Name","",2);   
  Create_Contrl("ScrollBox_Lmt","cb_Res_GongYi","工艺特征:","cb_Res_Name","","",5); 
  Create_Contrl("ScrollBox_Lmt","cbt_Res_GongYi","工艺特征:","cb_Res_Name","cb_Res_GongYi","ZD_RES_GONGYI",8); 
    Create_Contrl("ScrollBox_Lmt","cb_Res_XingZhuang","形状特征:","cb_Res_GongYi","","",5); 
  Create_Contrl("ScrollBox_Lmt","cbt_Res_XingZhuang","形状特征:","cb_Res_GongYi","cb_Res_XingZhuang","ZD_RES_XINGZHUANG",8); 
    Create_Contrl("ScrollBox_Lmt","cb_Res_CaiZhi","产品材质:","cb_Res_XingZhuang","","",5); 
  Create_Contrl("ScrollBox_Lmt","cbt_Res_CaiZhi","产品材质:","cb_Res_XingZhuang","cb_Res_CaiZhi","ZD_RES_CAIZHI",8); 
    Create_Contrl("ScrollBox_Lmt","cb_Res_KaiMo","开模类型:","cb_Res_CaiZhi","","",5); 
  Create_Contrl("ScrollBox_Lmt","cbt_Res_KaiMo","开模类型:","cb_Res_CaiZhi","cb_Res_KaiMo","ZD_RES_MUJUTYPE",8); 
  Create_Contrl("ScrollBox_Lmt","cb_Res_GuangDu","产品光度:","cb_Res_KaiMo","","",5); 
  Create_Contrl("ScrollBox_Lmt","cbt_Res_GuangDu","产品光度:","cb_Res_KaiMo","cb_Res_GuangDu","res_sub_dict_button_luminosity",8); 
  Create_Contrl("ScrollBox_Lmt","cb_Res_UseType","产品用途:","cb_Res_GuangDu","","",5); 
  Create_Contrl("ScrollBox_Lmt","cbt_Res_UseType","产品用途:","cb_Res_GuangDu","cb_Res_UseType","ZD_RES_TYPE",8); 
   
   
}

产品检索控件创建效果图

        于 2017-11-20 09:15 被 dragonzsp 修改




官方认证第三方服务团队   QQ:187199580
收费教程地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=7&topic_id=102140&topic_page_id=1
手机收费版本地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=3&topic_id=103479&topic_page_id=1

summer  [个人空间]
QQ名  summer


注册  2009-09-08
发贴数  637
精华贴  9
原创贴  7
来自  
状态  正常

级别  会员
#2»发布于2017-11-20 09:49

很不错,祝推行成功!






官方认证第三方服务团队  夏延明 QQ:15932787 13776070373
服务介绍: http://www.onlyit.cn/user_home?user_id=10304

xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  560
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#3»发布于2017-11-20 10:05

学习了。谢谢。






官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html

mevmev  [个人空间]


注册  2017-03-15
发贴数  157
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#4»发布于2017-11-20 14:39

楼主威武。 
不知道 创建的自定义grid,如何 在脚本工具里能够触发事件: 
 
1、在inp_para 里使用了 set_para_csp() 后 实现界面上的 cell_change cell_focus 事件的触发。 
 
2、在单据界面创建的 grid ,如何能够相应的事件里被触发 
     如 before_oper  after_oper  cell_change cell_focus init_row




afoo  [个人空间]
QQ名  常德-ZEN


注册  2010-04-08
发贴数  204
精华贴  6
原创贴  6
来自  常德-ZEN
状态  正常

级别  会员
#5»发布于2017-11-21 10:43

楼主威武!收藏了。谢谢。






官方认证第三方服务团队  蒋逸凡(常德-ZEN) QQ:50636277
服务介绍: http://www.onlyit.cn/user_home?user_id=13498

cctv_cba  [个人空间]
QQ名  81753287


注册  2015-04-23
发贴数  23
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#6»发布于2018-09-14 12:30

这个找了好久,里面有些东西,值得去研究一下






dstrading@aliyun.com

qjklw123  [个人空间]


注册  2018-10-18
发贴数  1
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#7»发布于2018-10-18 14:39

学习了。谢谢。




chymore  [个人空间]


注册  2011-05-22
发贴数  33
精华数  0
原创贴  1
来自  
状态  正常

级别  会员
#8»发布于2019-08-26 19:13

谢谢分享,收藏先




fwj3861  [个人空间]
QQ名  越南-叶子(121305301)


注册  2010-09-09
发贴数  529
精华贴  10
原创贴  20
来自  越南
状态  正常

级别  贵宾
#9»发布于2022-04-12 23:52

终于找到了,谢谢楼主分享!






官方认证第三方服务团队  樊文俊(越南-叶子) QQ:121305301 TEL:+84869350626
承接越南北部-河内周边省份-OIT部署和维护服务(24小时上门或远程服务)
服务介绍:http://www.onlyit.cn/onlyit_service.html


 9  1/1   1  

登录后方可发贴


[ 电话: 0571-85462761 王先生 QQ: 124520435 加入软件QQ群 - 杭州 - 浙ICP备19051128号-1 网安 33010402003225 ]