16.其它


16.1 关于字体

  字体资源统一在<Fonts>下列出,其顺序相当于就是其ID号,顺序从0开始计数。<Properties>或<Col>要使用规定的字体,只要通过FontIndex指定该ID即可.
  字体的定义和使用规则如下:
1.如果<Fonts>中某行字体在本机不存在,Treelist将自动使用下一行的字体,直到找到为止,否则将采用操作系统默认字体;
2.如果字体中FaceName="Default"或FaceName="System", 或没有FaceName,则表示操作系统的默认字体;
  例如:
<Fonts>
 <Font faceName="微软雅黑" size="-13"/>
 <Font faceName="宋体" size="14"/>
</Fonts>
  表示默认采用微软雅黑字体,如果是WindowsXP(未安装微软雅黑字体),将自动使用下一行的宋体.

宋体在 Windows XP 操作系统中的最佳尺寸是: size=14.




16.2 关于列宽

  <col>中的 “Width” 属性是用于指定列宽的,它的用法比较灵活,其含义可是是绝对宽度、窗口宽度的百分比、剩余宽度的分配比例、以及自动适配列标题. 例如如下的XML描述文件:
<cols>
 <col id="n1" width="50%">标题1</col>     //百分比
 <col id="n2" width="100">标题2</col>     //绝对数
 <col id="n3" width="0.3">标题3</col>     //比例因子
 <col id="n4" width="0.4">标题4</col>     //比例因子
</cols>
  展现的效果如下:
  请注意“比例因子”的含义和“百分比”是有区别的,“百分比”是指占窗口区域宽度的百分比,“比例因子”则用于分配剩余宽度,通常是在多个比例因子之间求得宽度比例。

  如果只有一个列采用了比例因子,其含义不言自明,例如:
<cols>
 <col id="n1" width="50%">标题1</col>
 <col id="n2" width="100">标题2</col>
 <col id="n3" width="0.3">标题3</col>
</cols>
  展现的效果如下:
  为了避免按百分比或按比例分配到的绝对宽度太小,您还可以进一步指定“最小宽度”: "minWidth"属性.


  此外,将width写成 width="fitHeader" (或"header"), 能让列宽自动伸展到刚好能显示下表头文字。例如:
<cols>
 <col id="n1" width="fitHeader">标题1</col>
 <col id="n2" width="fitHeader">标题2文字</col>
 <col id="n3">标题3</col>
</cols>
  展现的效果如下:

当您用鼠标拖动过列宽后,该列的百分比和比例因子随即失效.


  最后,在<Properties>中还有一个和列宽有关的属性:isAutoFitWidth,isAutoFitWidth的有效等级最高,当isAutoFitWidth="true"时,百分比和比例因子统统无效。


16.3 关于Undo

  撤销(undo)和重做(Redo) 功能,统称 “Undo”,您只要执行 EnableUndo( ) 函数,Undo功能随即就开启了.
  Treelist 对象中有一个 Undo 专用缓存,当 Undo 功能一旦开启,每次交互操作,系统都会自动将整体数据以快照形式记录到缓存.
  Treelist 的 Undo 功能做得比较简单,所以其应用也是有局限的,如下交互操作会导致 Undo 缓存自动清零:
    1.执行 Build 时;
    2.执行 Load 时;
    3.通过 API 动态往 Treelist 添加或删除列时;
    4.树/列表之间切换时;

  树列表内容一旦被用户修改,树列表将立即触发 UndoState 事件,相当于给你一个通知,比如你就可以修改工具条上 Undo/Redo 按钮的 Enable / Disable 状态了.

  API函数比如 SetCellData、DeleteRows 等,是不会触发 Undo 的内部处理程序的,也不会导致 Undo 状态变化.

  不建议滥用 Undo 功能, 通常可以在简单的输入、表格数据量不大的情形下使用。由于 Undo 缓存的是完整的数据,所以数据量大时肯定会影响到交互性能.

该 Undo 缓存最多能倒退 50 步