aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 16907|回复: 8

sciter里排序的问题及解决分享

[复制链接]

12

主题

68

回帖

809

积分

培训班

积分
809
QQ
发表于 2018-5-4 19:54:55 | 显示全部楼层 |阅读模式
本帖最后由 金满斗 于 2018-5-8 09:22 编辑

如标题所述。用sciter写个表排序,以前layout能用的代码在sciter里不能用,也不知道是哪里的问题。
直接上代码吧。
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="HTMlayout 无边框窗体";right=656;bottom=587;parent=...)
  4. winform.add(
  5. custom={cls="custom";text="custom";left=21;top=13;right=634;bottom=233;z=1};
  6. custom2={cls="custom";text="custom";left=24;top=267;right=631;bottom=571;z=2}
  7. )
  8. /*}}*/

  9. import console;
  10. import web.layout;
  11. import web.layout.behavior.sortableGrid;


  12. var wblayout = web.layout( winform.custom);//在窗体上创建HTMlayout对象




  13. wblayout.setOption( 10/*_layout_SET_DEBUG_MODE*/);

  14. var html = /**
  15. <html>
  16. <head>
  17. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  18. <style>

  19. html
  20. {
  21. &#160;&#160;background-color: white white cornsilk cornsilk;
  22. }

  23. table
  24. {
  25. &#160;&#160;//background: linen;
  26. &#160;&#160;overflow:auto;
  27. &#160;&#160;width:*;
  28. &#160;&#160;height:*;
  29. &#160;&#160;behavior:sortable-grid column-resizer;
  30. &#160;&#160;border:1px solid rosybrown;
  31. }

  32. table th:checked
  33. {
  34. &#160;&#160;foreground-image: url(stock:arrow-down);
  35. &#160;&#160;foreground-repeat: no-repeat;&#160; &#160;
  36. &#160;&#160;foreground-position-top: 50%;&#160; &#160;
  37. &#160;&#160;foreground-position-right: 5px;&#160; &#160;
  38. }

  39. table th:checked[order=down]  
  40. {
  41.   foreground-image: url(stock:arrow-up);
  42.   foreground-repeat: no-repeat;   
  43.   foreground-position-top: 50%;   
  44.   foreground-position-right: 5px;   
  45. }
  46. table th:checked[order=up]
  47. {
  48.   foreground-image: url(stock:arrow-down);
  49.   foreground-repeat: no-repeat;   
  50.   foreground-position-top: 50%;   
  51.   foreground-position-right: 5px;   
  52. }


  53. table th:nth-child(1)
  54. {
  55. &#160;&#160;width:1*;
  56. }
  57. table th:nth-child(2)
  58. {
  59. &#160;&#160;width:2*;
  60. }

  61. table td
  62. {
  63. &#160;&#160;border:1px solid rosybrown;
  64. &#160;&#160;white-space:nowrap;
  65. &#160;&#160;height:1.3em;
  66. &#160;&#160;overflow:hidden;
  67. &#160;&#160;text-overflow:ellipsis;
  68. }

  69. table tr:current
  70. {
  71. &#160;&#160;background-color: peachpuff;
  72. }

  73. </style>
  74. </head>
  75. <body>

  76. <h2></h2>

  77. <table fixedrows="1" fixedlayout>
  78. <tr><th>num</th><th>str</th></tr>
  79. <tr><td>9</td><td>dd</td></tr>
  80. <tr><td>5</td><td>aa</td></tr>
  81. <tr><td>2</td><td>cc</td></tr>
  82. <tr><td>7</td><td>bb</td></tr>
  83. </table>
  84. </body>
  85. </html>
  86. **/

  87. wblayout.html = html;

  88. wblayout.$1("h2").innerText = "wblayout的表头排序"






  89. import web.sciter;
  90. import web.sciter.behavior.sortableGrid;


  91. var wbSciter = web.sciter( winform.custom2);//在窗体上创建HTMlayout对


  92. wbSciter.html = html;
  93. wbSciter.$1("h2").innerText = "wbSciter的表头排序,有问题"


  94. /*
  95. 根据我自己排查情况
  96. web.sciter.behavior.grid 库第68行的targetRow  方法估计有问题

  97. 第二
  98. sciter库的 sort 方法也可能有问题





  99. */



  100. import win.ui.shadow;
  101. win.ui.shadow(winform); //添加阴影边框

  102. winform.show();
  103. win.loopMessage();
复制代码



注意:在帖子下面已经分享了我后来改的库,实现了排序,单选。全选。键盘上下移动选择表格。

3

主题

35

回帖

614

积分

培训班

积分
614
发表于 2018-5-4 20:23:13 | 显示全部楼层
不用试了,,直接去找范例里表格相关的tis脚本,,大部分都是tis脚本了

12

主题

68

回帖

809

积分

培训班

积分
809
QQ
 楼主| 发表于 2018-5-4 20:26:28 | 显示全部楼层
nlysh007 发表于 2018-5-4 20:23
不用试了,,直接去找范例里表格相关的tis脚本,,大部分都是tis脚本了

我觉得也是的,以前觉得layout用aardio特方便,其实是源自于aardio强大的交互能力。现在sciter自带脚本了,确实就应该去用现成的脚本。谢谢了。
可惜我太菜。我看是退回layout还是用tis。谢谢

3

主题

35

回帖

614

积分

培训班

积分
614
发表于 2018-5-4 20:31:14 | 显示全部楼层
金满斗 发表于 2018-5-4 20:26
我觉得也是的,以前觉得layout用aardio特方便,其实是源自于aardio强大的交互能力。现在sciter自带脚本了 ...

要求不多直接引用就行,,用法一样,无非就是原来behavior是aardio写现在是tis提供了现成的,,多摸索下总是没坏处的

166

主题

2154

回帖

1万

积分

管理员

积分
13056
发表于 2018-5-4 23:19:17 | 显示全部楼层
你倒是发代码呀,发界面呀............,TIS都是现成的,那你现成的界面呢?!
那些界面做的漂亮的个个都没你们能说。

12

主题

40

回帖

424

积分

二级会员

积分
424
发表于 2018-5-5 13:34:23 | 显示全部楼层
sciter还一直没有研究,sciter范例里有表格排序demo么?

12

主题

68

回帖

809

积分

培训班

积分
809
QQ
 楼主| 发表于 2018-5-5 19:38:03 | 显示全部楼层
今天在外面做了一天的事情,再来看帖子才发现代码贴出来html代码里自动加了&#160;&#160  要替换下才能正常跑的。

12

主题

68

回帖

809

积分

培训班

积分
809
QQ
 楼主| 发表于 2018-5-6 12:16:13 | 显示全部楼层
本帖最后由 金满斗 于 2018-5-6 12:28 编辑

今天又看了下,主要是sciter在加载表格时,如果表格里没定义tbody,会默认定义一个。grid库判断的不是那么严谨,就报错了。sciter内核排序是没问题的。
主要是要在grid库里判断下tbody,thead,tfoot  。做好兼容。

12

主题

68

回帖

809

积分

培训班

积分
809
QQ
 楼主| 发表于 2018-5-8 07:52:44 | 显示全部楼层
本帖最后由 金满斗 于 2018-5-8 09:19 编辑

把我自己哪老库整理和修改的发上来吧,方便以后的人。注意这个mygrip这个库没做表的严格判断,表最好按thead,tbody,tfoot格式严格书写。表头上加了sort的class属性的就排序。

  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="HTMlayout 无边框窗体";right=656;bottom=587;parent=...)
  4. winform.add(
  5. custom={cls="custom";text="custom";left=21;top=13;right=634;bottom=545;z=1}
  6. )
  7. /*}}*/

  8. import console;


  9. var html = /**
  10. <html>
  11. <head>
  12. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  13. <style>

  14. html
  15. {
  16. background-color: white white cornsilk cornsilk;
  17. }

  18. table
  19. {
  20. //background: linen;
  21. overflow:auto;
  22. width:*;
  23. height:*;
  24. behavior:mygrid ;
  25. border:1px solid rosybrown;
  26. }
  27. table thead tr th {
  28.   border-right:1px solid silver;
  29.   border-bottom:1px solid silver;
  30.     text-align: left;
  31. }
  32. table th:checked
  33. {
  34. foreground-image: url(stock:arrow-down);
  35. foreground-repeat: no-repeat;
  36. foreground-position-top: 50%;
  37. foreground-position-right: 5px;
  38. }
  39. table thead .sort:hover
  40. {
  41. foreground-image: url(stock:arrow-down);
  42. foreground-repeat: no-repeat;
  43. foreground-position-top: 50%;
  44. foreground-position-right: 5px;
  45. }

  46. table th:checked[order=down]
  47. {
  48. foreground-image: url(stock:arrow-up);
  49. foreground-repeat: no-repeat;
  50. foreground-position-top: 50%;
  51. foreground-position-right: 5px;
  52. }
  53. table th:checked[order=up]
  54. {
  55. foreground-image: url(stock:arrow-down);
  56. foreground-repeat: no-repeat;
  57. foreground-position-top: 50%;
  58. foreground-position-right: 5px;
  59. }

  60. table th:nth-child(1)
  61. {
  62. width:1*;
  63. }
  64. table th:nth-child(2)
  65. {
  66. width:2*;
  67. }
  68. table th:nth-child(3)
  69. {
  70. width:2*;
  71. }
  72. table th:nth-child(4)
  73. {
  74. width:5*;
  75. }

  76. table td
  77. {
  78. border:1px solid rosybrown;
  79. white-space:nowrap;
  80. height:1.3em;
  81. overflow:hidden;
  82. text-overflow:ellipsis;
  83.     margin:0px;
  84. }


  85. table tr:current
  86. {
  87. background-color: peachpuff;
  88. }
  89. table>tbody>tr[selected]{background-color:#998844;}

  90. table input{width:40px;vertical-align:baseline;}

  91. </style>
  92. </head>
  93. <body>

  94. <h2></h2>

  95. <table fixedrows="1" >
  96. <thead>
  97. <tr><th ><input class="checkall"type="checkbox"data-id="1" />id</th><th class="sort">num</th><th class="sort">str</th><th>这行不排序</th></tr>
  98. <thead>
  99. <tbody>
  100. <tr><td ><input class="checkone" type="checkbox"data-id="1" /></td><td>9</td><td>dd</td><td>dd</td></tr>
  101. <tr><td><input class="checkone" type="checkbox"data-id="2" /></td><td>5</td><td>aa</td><td>dd</td></tr>
  102. <tr><td><input class="checkone" type="checkbox"data-id="3" /></td><td>2</td><td>cc</td><td>dd</td></tr>
  103. <tr><td><input class="checkone" type="checkbox"data-id="4" /></td><td>7</td><td>bb</td><td>dd</td></tr>
  104. </tbody>
  105. </table>
  106. </body>
  107. </html>
  108. **/






  109. import web.sciter;


  110. namespace web.sciter.behavior.mygrid{

  111. //取固定表头
  112. var isMultiple = function(ltOwner) {
  113.   return ltOwner.getAttribute ("multiple") ;
  114. }


  115. //取高亮行
  116. var getCurrentRow = function( elTable ){
  117.   for(i,eleChild in elTable.eachChild() ){
  118.       if( eleChild.state.current )
  119.           return eleChild;
  120.   }
  121. }

  122. setCurrentRow = function( elTable, elRow,altState,dblClick,smooth,isRightClick){
  123.     var prev = getCurrentRow( elTable );     
  124.     var newRowChecked = 0x40/*_HL_STATE_CHECKED*/ | 0x20/*_HL_STATE_CURRENT*/;
  125.     var oldRowChecked = 0x40/*_HL_STATE_CHECKED*/;
  126.    
  127.     if( isMultiple(elTable) ) {
  128.         if( ( !dblClick ) && isRightClick ){
  129.             if( elRow.state.checked ){
  130.                 oldRowChecked = 0;
  131.             }
  132.         }
  133.         else{
  134.             if( altState & 2/*_HL_SHIFT_KEY_PRESSED*/ ) {
  135.                 checkAll(elTable, false);
  136.                 checkRange(elTable,elRow.index(),true); // from current to new
  137.                 oldRowChecked = 0;
  138.             }
  139.             else{
  140.                 if (altState & 1/*_HL_CONTROL_KEY_PRESSED*/) {
  141.                      setCheckedRow (elTable,elRow, true); // toggle
  142.                      newRowChecked = 0;
  143.                 }
  144.                 else{
  145.                      checkAll(elTable, false);
  146.                     setAnchor(elTable,elRow.index() );
  147.                 }
  148.                 oldRowChecked = 0;
  149.             }
  150.         }
  151.     }
  152.    
  153.     if( prev ) {
  154.         if( prev != elRow )
  155.             prev.modifyState( ,0x20/*_HL_STATE_CURRENT*/ | oldRowChecked ); // 删除旧状态标志
  156.     }
  157.     elRow.modifyState( newRowChecked ); // 设置状态标志
  158.     elRow.scrollToView( false,smooth );
  159.    
  160.     elTable.postEvent( dblClick? 0x83/*_HL_TABLE_ROW_DBL_CLICK*/ : 0x82/*_HL_TABLE_ROW_CLICK*/, elRow.index(), elRow);
  161.     elTable.postEvent( "onSelectSelectionChanged" );
  162. }


  163. targetRow = function( elTable, ltTarget){
  164.   if( !ltTarget || ltTarget.parent() == elTable)
  165.   return ltTarget;
  166.   
  167.   return targetRow(elTable,ltTarget.parent());
  168. }


  169. targetHeader = function(eleHeaderRow, ltTarget ) {
  170.     if( !ltTarget || ltTarget.parent() == eleHeaderRow)
  171.          return ltTarget;
  172.      return targetHeader(eleHeaderRow,ltTarget.parent());
  173. }



  174. fixedRows = function( elTable ) {
  175.   var a = elTable.fixedrows : 0; //没找到可能就是传的body,就到父窗口找下
  176.     return ( tonumber( a) : 0 ) + 1;
  177. }

  178. setCheckedRow = function( elTable,elRow,toggle) {
  179.     if( toggle ){
  180.         elRow.state.checked = !elRow.state.checked;
  181.         elRow.state.current = elRow.state.checked;
  182.     }
  183.     else
  184.         elRow.state.checked= false;
  185. }

  186. getAnchor = function(elTable) {
  187.   var elRow = elTable.querySelector("tr:anchor");
  188.   if( elRow ) return elRow.index();
  189.   return 0;
  190. }

  191. setAnchor = function(elTable,idx){
  192.     var elRow = elTable.querySelector("tr:anchor");
  193.     if( elRow ) elRow.state.anchor = false;
  194.    
  195.     elRow = elTable.child(idx);
  196.     if( elRow )
  197.         elRow.modifyState(0x4000/*_HL_STATE_ANCHOR*/,0,false);
  198. }

  199. var checkRange = function(elTable,idx,check){
  200.     if ( !isMultiple(elTable) ) return;

  201.     var start= getAnchor(elTable);
  202.     var startIdx = ..math.min(start,idx );
  203.     var endIdx = ..math.max(start,idx );
  204.    
  205.     var fRows= fixedRows(elTable);
  206.     if( startIdx < fRows ) startIdx = fRows;
  207.     for(i=endIdx;startIdx;-1){
  208.         varelRow = elTable.child(i);
  209.         if( !! elRow.isVisible() ){
  210.             elRow.state.checked = check;
  211.         }
  212.     }
  213. }

  214. //表全选
  215. var checkAll = function( elTable,onOff ) {
  216.     if(onOff){
  217.         elTable.enumQuery(
  218.             function(ltEle){
  219.                    ltEle.selected = "";
  220.                    ltEle.$1("input[type=checkbox]").state.checked = true;
  221.             },"tr"
  222.         )
  223.     }
  224.     else {
  225.         elTable.enumQuery(
  226.             function(ltEle){
  227.                    ltEle.selected = null;
  228.                    ltEle.$1("input[type=checkbox]").state.checked = false;
  229.                 },"tr[selected='']"
  230.             )
  231.         
  232.     }
  233.     elTable.postEvent( "onSelectSelectionChanged" ); //改变选项事件
  234. }


  235. //单勾选
  236. var checkone = function(scTarget,onOff){
  237.         if(onOff){
  238.                 scTarget.parent().parent().selected="";
  239.         }else {
  240.                 scTarget.parent().parent().selected = null;
  241.         }
  242.        
  243. }

  244. //排序
  245. var reorder = function(ltOwner, ltTarget){
  246.             var order = ltTarget.order;
  247.             var columnNo = ltTarget.index();
  248.             var elTrCurrent = getCurrentRow( ltOwner );
  249.            
  250.             if( order != "up" ){
  251.                 ltOwner.sort(
  252.                   function(ltOwner,ltEle2){
  253.                       return (ltOwner.child(columnNo).innerText:"0") < (ltEle2.child(columnNo).innerText:"0")
  254.                           ? -1 : 1;
  255.                       return 1;/*-1,0,1*/
  256.                   },fixedRows(ltOwner)
  257.               )
  258.               ltTarget.order = "up"
  259.           }
  260.           else {
  261.                 ltOwner.sort(
  262.                   function(ltOwner,ltEle2){
  263.                       return (ltOwner.child(columnNo).innerText:"0") > (ltEle2.child(columnNo).innerText:"0")
  264.                           ? -1 : 1;
  265.                       return 1;/*-1,0,1*/
  266.                   },fixedRows(ltOwner)
  267.               )
  268.               ltTarget.order = "down";
  269.           }
  270.          
  271.           if( elTrCurrent )elTrCurrent.scrollToView();
  272. }






  273. var onColumnClick = function(ltOwner, ltTarget ){
  274.   ltOwner.postEvent( "onTableHeaderClick", ltTarget.index(), ltTarget);
  275.   var current = ltOwner.parent().querySelector("th:checked"); //因为有的是内容节点,必须获取父节点     
  276.      if( current && ( current != ltTarget ) ){
  277.          current.state.checked = false;
  278.          current.order = "down";
  279.      };
  280.   
  281.   ltTarget.state.checked = true;
  282.   reorder(ltOwner, ltTarget );
  283. }










  284. //按键按下事件
  285. onMouseDblClick = function (ltTarget,elTable, x,y,mouseParams,isMouseDown) {
  286.   thead = elTable.$1("thead");
  287.   tbody = elTable.$1("tbody");
  288.   tfoot = elTable.$1("tfoot");
  289.   if(tbody || thead){
  290.   var elTable = tbody ? tbody :elTable;  //增加兼容性
  291.       var elRow = targetRow(elTable,ltTarget );  //默认是在内容中查找的
  292.         //内容
  293.         if( elRow ) {
  294.             //设置高亮
  295.             setCurrentRow(elTable, elRow, mouseParams.alt_state ,!isMouseDown,,mouseParams.button_state == 2/*_HL_PROP_MOUSE_BUTTON*/);
  296.             elTable = (thead || tbody)?elTable.parent():elTable;
  297.             elTable.updateWindow();
  298.         }else {   
  299.                 elRow = ltTarget;
  300.                 var classNam = ltTarget.class ? ..string.trim(ltTarget.class) ;  //表头有sort class类,有才能触发排序
  301.                     select(classNam) {
  302.                     case "sort" {//排序
  303.                         onColumnClick(tbody,elRow);
  304.                         return mouseParams.button_state == 1/*_HL_MAIN_MOUSE_BUTTON*/;
  305.                
  306.                     }
  307.       
  308.                 }     
  309.         }
  310.         }   
  311. }


  312. onButtonClick = function (scTarget,scOwner,reason,behaviorParams) {
  313.          var classNam = scTarget.class ? ..string.trim(scTarget.class) ;
  314.         select(classNam) {
  315.         case "checkall" {//表全选
  316.             return checkAll(scOwner, scTarget.state.checked);
  317.    
  318.         }
  319.         case "checkone" {//单选
  320.             return checkone(scTarget, scTarget.state.checked);
  321.    
  322.         }

  323.     }     
  324.        
  325. }
  326.    


  327. var mygrid = self;
  328. namespace sinking {
  329.     //鼠标以SINKING(捕获模式)向下传递下,使用sinking名字空间响应事件
  330.     onMouseDown = function (ltTarget,ltOwner,x,y,mouseParams) {
  331.         return mygrid.onMouseDblClick(ltTarget,ltOwner, x,y,mouseParams,true)
  332.     }
  333. }


  334. //注册键盘事件

  335. onKeyDown = function (ltTarget,ltOwner,keyCode, altState, keyParams) {   
  336.     var ltOwner = ltOwner.$1("tbody"):ltOwner; //取主内容,增强兼容性   
  337.     select(keyCode) {
  338.         case 0x28/*_VK_DOWN*/ {
  339.         var c = getCurrentRow( ltOwner );
  340.         var idx = c.index() + 1;
  341.         if(ltOwner.childCount()<idx) idx =1;
  342.         for(i,elRow in ltOwner.eachChild(idx) ){
  343.             if( elRow.isVisible() ) {
  344.                 setCurrentRow(ltOwner, elRow, altState);
  345.                 return true;
  346.             };
  347.         }
  348.         
  349.         return true;
  350.     };
  351.     case 0x26/*_VK_UP*/{
  352.    var c = getCurrentRow( ltOwner );
  353.       
  354.        //让表格到1行了自动到下面
  355.    var idx =c.index()-1;
  356.    if(idx< 1)idx = ltOwner.childCount();
  357.    var fRows = fixedRows(ltOwner); //表头
  358.    if(idx < fRows) return true;
  359.    for(i,elRow in ltOwner.eachChild(idx,fRows) ){
  360.        if( elRow.isVisible()) {
  361.                 setCurrentRow(ltOwner, elRow, altState);
  362.                 return true;
  363.             };
  364.    }
  365.     };
  366.    case 0x21/*_VK_PRIOR*/{
  367.         var trc = ltOwner.getRect(1/*_HL_ROOT_RELATIVE*/ | 0x60/*_HL_SCROLLABLE_AREA*/);
  368.         var y = trc.top - (trc.bottom - trc.top);
  369.         var first = fixedRows(ltOwner);
  370.         var r;
  371.       
  372.         for(i,nr in ltOwner.eachChild( ltOwner.childCount(),first) ){
  373.        if( nr.style.display != "none" ){
  374.       
  375.            varpr = r;
  376.                  r = nr;
  377.                  if( r.getRect(1/*_HL_ROOT_RELATIVE*/ | 0x20/*_HL_BORDER_BOX*/).top < y ) {
  378.                   // row found
  379.                   if(pr) r = pr; // to last fully visible
  380.                   break;
  381.                  }
  382.        }
  383.   }
  384.    
  385.         setCurrentRow(ltOwner, r, altState, false, true);
  386.         return true;
  387.     };
  388.     case 0x22/*_VK_NEXT*/{
  389.         var trc = ltOwner.getRect( 1/*_HL_ROOT_RELATIVE*/ | 0x60/*_HL_SCROLLABLE_AREA*/);
  390.         var y = trc.bottom + (trc.bottom - trc.top);
  391.         var r;
  392.         
  393.         var fRows = fixedRows(ltOwner)
  394.         for( i,nr in ltOwner.eachChild( fRows ) ){
  395.             if( nr.style.display != "none" ) {
  396.                  varpr = r;
  397.                  r = nr;
  398.                  if( r.getRect( 1/*_HL_ROOT_RELATIVE*/ | 0x20/*_HL_BORDER_BOX*/).bottom > y ) {
  399.                   // row found
  400.                   if(pr) r = pr; // to last fully visible
  401.                   break;
  402.                  }
  403.              }
  404.         }
  405.         
  406.         setCurrentRow(ltOwner, r, altState, false, true);   
  407.         return true;
  408.     };
  409.     case 0x24/*_VK_HOME*/{
  410.         var idx = fixedRows(ltOwner);
  411.         if( idx == 1) idx = 2;
  412.       
  413.         for( i,eleRow in ltOwner.eachChild( idx ) ){
  414.             if( eleRow.isVisible() ){
  415.                 setCurrentRow(ltOwner, eleRow, altState, false, true);
  416.                 return true;
  417.             }
  418.         }
  419.         return true;
  420.     };
  421.     case 0x23/*_VK_END*/ {
  422.         for( i,row in ltOwner.eachChild( ltOwner.childCount(),fixedRows(ltOwner) ) ){
  423.             if( row.isVisible() ){
  424.                 setCurrentRow(ltOwner, row, altState, false, true);
  425.                 return true;
  426.             }
  427.         }
  428.         return true;
  429.     };
  430.    
  431.    
  432.     case 'A'#{
  433.         if( isMultiple(ltOwner) && (altState & 1/*_HL_CONTROL_KEY_PRESSED*/) != 0 ) {
  434.     checkAll(ltOwner, true);
  435.     ltOwner.postEvent( "onSelectSelectionChanged" );
  436.     return true;
  437.      }
  438.      };

  439.         }               
  440.     }                    
  441. }



  442. var wbSciter = web.sciter( winform.custom);//在窗体上创建HTMlayout对
  443. wbSciter.html = html;
  444. wbSciter.$1("h2").innerText = "wbSciter的表头排序"

  445. import win.ui.shadow;
  446. win.ui.shadow(winform); //添加阴影边框

  447. winform.show();
  448. win.loopMessage();
复制代码

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-2-14 08:48 , Processed in 0.060978 second(s), 23 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表