本帖最后由 610761555 于 2014-8-27 15:27 编辑
刚写的,新鲜出炉,不限制控件名称数量,傻瓜式读写{:soso_e100:}
0827-1512
1.修复编辑框不能保存空字符;
2.修复编辑框,下拉框,列表框有 | 符无法读写;
3.支持子窗口读写配置
如有其它BUG、建议、更好的方法请告知,谢谢;
说明:
1.支持所有能设置属性的控件,表格只支持文本;
发布软件时请将 项目资源下的main.twin复制一份到生成目录下;
如果界面添加或修改过控件名称,得更新生成目录下的 main.twin;
将源码以下两个功能复制到你的脚本就可以了
调用格式:
//空间名.配置文件("保存",你的窗口名称)
//空间名.配置文件("读取",你的窗口名称)
缺点:
表格行列过多,读写表格配置比较慢;
编辑框,下拉框,列表框内容太多也较慢;
还好影响不大,一般都不会存放太多数据;
如有更效率的效法求分享,唉,知道TC两年了,
用TC写的东西比较少之前还一直一个控件写1行配置;{:soso_e113:}
以下为代码片段,完整代码请参考附件。
- function 配置文件(操作,窗口名字)
- var 过滤控件,过滤名称,过滤1,过滤2
- 过滤控件="图片框,定时器,浏览器" //匹配控件 配置将不被保存
- 过滤名称="edit2,edit3" //匹配控件名称 配置将不被保存
- var 界面文件,配置文件,读取内容
- var j,k,len1,len2,len3,len4
- var 控件信息=array[],控件名称=array[],控件=array[]
- var 控件属性,键码,功能键
- var 起始位置,控件组
- 控件组="标签,按钮,单选框,复选框,编辑框,分组框,列表框,下拉框,图片框,进度条,滑块,浏览框,选项卡,定时器,热键,日期框,浏览器,表格"
- 界面文件=程序路径&"\\main.twin"
- 配置文件=程序路径&"\"&窗口名字&".ini"
-
- if(file.exist(界面文件)==false)
- help.messagebox(操作&"失败")
- 返回 false
- endif
-
- //*********分割main.twin,取窗口信息*********
- var 窗口信息=array[],窗口名称=array[],c,clen,tlen
- 读取内容=file.readfileex(界面文件)
- str.split(读取内容,"窗口结束",窗口信息)
- arraysp.size(窗口信息,clen)
- for(c=0;c<clen;c++)
- //============取出窗口信息============//
- 替换=str.replace(窗口信息[c],"| |","|")
- str.split(替换,"|",控件信息)
- arraysp.size(控件信息,len1)
- str.split(控件组,",",控件)
- arraysp.size(控件,len2)
- for(j=0;j<len1;j++)
- 控件信息[j]=str.replace(控件信息[j],"\n","")
- str.split(控件信息[j]," ",控件名称)
- arraysp.size(控件名称,len3)
- if(len3>1)
-
- for(k=0;k<len2;k++)
- 起始位置=str.findstr(控件信息[j],控件[k]&" ")
- if(起始位置>-1)
- len4=str.strleng(控件[k])
- 控件名称[0]=str.strsub(控件信息[j],起始位置,起始位置+len4)
- 控件名称[0]=str.replace(控件名称[0]," ","")
-
- //--过滤器--//
- 过滤1=str.findstr(过滤控件,控件名称[0])
- 过滤2=str.findstr(过滤名称,控件名称[1])
- if(过滤1>-1||过滤2>-1)
- break
- endif
- //--过滤器--//
-
- //============取出窗口名称============//
- str.split(窗口信息[c]," ",窗口名称)
- arraysp.size(窗口名称,tlen)
- if(tlen>1)
- if(窗口名字==窗口名称[1])
- traceprint("窗口名称:"&窗口名称[1]&",控件:"&控件名称[0]&",控件名称:"&控件名称[1])
- 配置文件.读写配置(控件名称[0],控件名称[1],窗口名称[1],操作,配置文件)
- endif
- endif
- //====================================//
-
- endif
- endfor
- endif
- endfor
- //====================================//
- endfor
- traceprint("【配置文件】—— "&操作&"完毕")
- endfunction
复制代码
|