小言_互联网的博客

aardio - 升级bindConfig函数,支持多属性和多子组件

368人阅读  评论(0)

一、需求分析

aardio的 winform.bindConfig() 函数,绑定后,一个组件,只能保存一个属性。

有时候需要同时保存多个属性,比如一个comobox组件,需要保存项目列表,同时保存当前选中的项目索引。当前这个bindConfig() 函数是无法实现的。

所以,有这个需求,就进行了相应的函数升级。

函数升级后,可以支持一个组件绑定多个属性,同时绑定多个子组件,子组件也支持多个属性,但不再支持子子组件。

该函数封装为 godking 库中的 bindConfig() 函数。使用方法为:

import godking ;

godking.bindConfig ( ) ;

请到 http://chengxu.online → aardio资源下载 → 下载godking库(_.rar)

二、效果如下:

 三、函数使用说明

代码用法:

import godking;

godking.bindConfig(winform,"C:\Users\Administrator\Desktop\config\",{
    combobox = {"items","selIndex"};
    plus = {"left","top",edit={"left","width","text"},"checked"};
    trackbar = "pos";
} );


参数1:要保存的窗口对象。该窗口名,也将设为保存的配置文件名。

参数2:保存到的目标目录。

参数3:要保存的属性配置列表。

要保存的属性配置列表,表中成员格式为:

  • 组件名或组件类型 = 属性名; // 保存或读入单个属性名(同下)
  • 组件名或组件类型 = { 属性名 }; // 保存或读入单个属性名(同上)
  • 组件名或组件类型 = { 属性名1,属性名2,属性名3,… ,子组件名或类型={ 属性名1,属性名2,属性名3} }; // 按顺序保存或读入多个属性

注意:

1、最终保存到文件中的key,是组件名称,而不是组件类型。

2、子组件也是可以定义多个的。

3、组件属性读写顺序的重要性:比如combobox组件,先读写items,再读写selIndex,因为只有读入项目items后,才能保证正确的选择项目索引selIndex。

四、测试代码


  
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text= "aardio form";right= 479;bottom= 279)
  4. winform.add(
  5. button={cls= "button";text= "添加项目";left= 330;top= 100;right= 410;bottom= 130;z= 3};
  6. checkbox1={cls= "checkbox";text= "Checkbox1";left= 120;top= 60;right= 200;bottom= 80;z= 4};
  7. checkbox2={cls= "checkbox";text= "Checkbox2";left= 210;top= 60;right= 290;bottom= 80;z= 5};
  8. combobox={cls= "combobox";left= 120;top= 100;right= 320;bottom= 126;edge= 1;items={ '"123"'; '"456"'; '"789"'};mode= "dropdown";z= 1};
  9. trackbar={cls= "trackbar";left= 110;top= 140;right= 380;bottom= 170;max= 100;min= 0;z= 2}
  10. )
  11. /*}}*/
  12. import godking
  13. godking.bindConfig( winform, "d:\", {
  14. checkbox = "checked ";
  15. combobox = { "items ", "selIndex " };
  16. trackbar = "pos ",
  17. checkbox = "checked ",
  18. });
  19. winform.button.oncommand = function(id,event){
  20. winform.combobox.add("哈哈哈哈 ")
  21. }
  22. winform.show();
  23. win.loopMessage();


转载:https://blog.csdn.net/sdlgq/article/details/128694551
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场