FlexCell是一款灵活、易用的表格和报表控件。
与其他表格组件相比,亮点如下:
1、提供了虚表功能,可以快速的读写表格数据。如上图,显示99999条记录,速度非常快。
2、提供了单元格自绘功能,可以让表格内容变得无限丰富。如上图,可以自己设计按钮和进度条。
3、提供了底部冻结行功能,该行始终显示在表格底部,可以做合计使用。
4、打印和打印预览等功能丰富,打印表头功能强大。
5、提供图表功能。
6、提供表格设计器。
7、打开/保存文件、不需要Excel运行库的支持直接导出Excel、导出CSV、导出HTML、导出PDF、导出/导入XML等功能。
不足:
1、对树型的支持不完善,需要额外的dll,并且不稳定。所以本库中没有封装树型功能。
chengxu.online → aardio资源下载 → flexcell.rar
方法1:
四个参数,分别为:列标题数组、列类型、列宽、列对齐方式。
//单行标题:
// 方式一:列类型、列宽、列对齐方式 采用单独数值,表示所有列都采用该值
g.setColumn({"标题1","标题2","标题3","标题4"},0,100,6)
// 方式二:列类型、列宽、列对齐方式 采用表,对应着每一列的值
g.setColumn({"标题1","标题2","标题3","标题4"},{0,2,2,6},{100,50,50,220},{10,10,10,13})
// 数值或表,可以任意使用。也可以省略,表示使用默认值。
//多行标题:
g.setColumn({{"标题1","标题2","标题3","标题4"}{"标题1","标题2","标题3","标题4"}},0,100,6)
方法2:
第一个参数设置列信息(每个成员为一列,用数组成员依次表示:第一行每列标题、列类型、列宽、列对齐方式)
如果有多行标题,则从第2个参数往后,每个参数为一行标题文本数组。
//单行标题
g.setColumn({
{"标题1",0,150,0xA/*_flex.Alignment.CenterCenter*/},
{"标题2",0,200,0xE/*_flex.Alignment.RightCenter*/},
{"标题3",0,250,0xA/*_flex.Alignment.CenterCenter*/},
{"标题4",0,300,0xE/*_flex.Alignment.RightCenter*/}
}
);
//多行标题
g.setColumn({
{"标题1",0,150,0xA/*_flex.Alignment.CenterCenter*/},
{"标题2",0,200,0xE/*_flex.Alignment.RightCenter*/},
{"标题3",0,250,0xA/*_flex.Alignment.CenterCenter*/},
{"标题4",0,300,0xE/*_flex.Alignment.RightCenter*/}
},
{"第二行第1列标题","第二行第2列标题","第二行第3列标题","第二行第4列标题"},
{"第三行第1列标题","第三行第2列标题","第三行第3列标题","第三行第4列标题"}
);
方法2:
第一个参数设置列信息(每个成员为一列,用键值对表示:第一行每列标题、列类型、列宽、列对齐方式。键可以省略,表示使用默认值。)
如果有多行标题,则从第2个参数往后,每个参数为一行标题文本数组。
//单行标题
g.setColumn({
{text="标题1",celltype=2/*_flex.CellType.CheckBox*/,width=150,align=6/*_flex.Alignment.LeftCenter*/},
{text="标题2",width=200},
{text="标题3",width=0},
{text="标题4",width=null}
}
);
//多行标题
g.setColumn({
{text="标题1",celltype=2/*_flex.CellType.CheckBox*/,width=150,align=6/*_flex.Alignment.LeftCenter*/},
{text="标题2",width=200},
{text="标题3",width=0},
{text="标题4",width=null}
},
{"第二行第1列标题","第二行第2列标题","第二行第3列标题","第二行第4列标题"},
{"第三行第1列标题","第三行第2列标题","第三行第3列标题","第三行第4列标题"}
);
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=509;bottom=469;border="thin")
winform.add(
button={cls="button";text="Button";left=182;top=364;right=337;bottom=432;ah=1;aw=1;z=2};
custom={cls="custom";text="自定义控件";left=11;top=9;right=484;bottom=344;ah=1;aw=1;z=1}
)
/*}}*/
..math.randomize(..time.tick())
winform.show();
import godking.flexCell
var f = godking.flexCell(winform.custom,,,);
import console
f.startRow=1
f.startCol=1
f.ownerDraw.button.round=1
f.DefaultFont.setName("黑体")
f.ownerDraw.start(true/*自动刷新鼠标移入移出的单元格*/,1/*启用内置自绘函数*/)
var t={}
for(i=1;99999;1){
..table.push(t,{col1="ok"++i,col2="呵呵呵",col3=i,col4=i,col5="删除"})
}
winform.button.oncommand = function(id,event){
t[#t].col1="合计"
t.fields={"col1","col2","col3","col4","col5"}
f.AutoRedraw=false
f.setColumn({{"序号","暗室逢灯","沙发","-","任天野","-"},{"|","|","|","|","任天野","就开了"}})
f.setTable(t)
f.merge(2,2,4,4)
f.ownerDraw.imageProgress.max=20
f.Column(3).CellType=11
f.Column(4).CellType=12
f.Column(5).CellType=10
f.FrozenBottomRows=1
f.avg(3,1,-2,-1)
f.sum(4,1,-2,-1)
f.Refresh()
f.AutoRedraw=true
}
win.loopMessage();