这几天研究软件的产品档案,准备把公司现用的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); } |