FlexCell控件aar调用示例

By admin at 2018-12-31 • 0人收藏 • 1149人看过

Flexcell是个表格控件, 很强大, 一直都不知道这类的表格控件在软件里面干嘛用...

表格一般不是都有现成的excel用吗?.....嵌入到自己的软件里做什么呢....

如果只是单纯的展示数据, 那么listview足够了.


FlexCell是一款美观、方便、易用的电子表格控件,附带FlexCell表格设计器,提供图表、虚表、打印预览、打印、排序等功能


2019/01/04更新:

第一版FlexCell的aardio调用库完成


本库基于v4.4.0版本构建 , 请勿用于商业用途 , 商业使用请购买正版使用 , FlexCell官方网址:http://www.grid2000.com/cn/


FlexCell为商业控件, 请支持并到官方购买正版, 然后使用下面提供的库进行调用:


image.png


针对v4.4.0版本库文件代码如下:

//FlexCell表格库
import com.activeX;
import fsys;
/*
	FlexCell是一款美观、方便、易用的电子表格控件,附带FlexCell表格设计器,提供图表、虚表、打印预览、打印、排序等功能
	本库基于v4.4.0版本构建 , 请勿用于商业用途 , 商业使用请购买正版使用 , FlexCell官方网址:http://www.grid2000.com/cn/
	本库由 popdes 编写 , 发布于:http://www.htmlayout.cn/t/243
*/
class FlexCellLib{
    ctor( winform,row=11,col=5,AutoRedraw=true ){
        winform.onEraseBkgnd  = function(hwnd,message,wParam,lParam){
            return 0;//禁止擦除背景
        };
        this = winform.createEmbed("{2BDD96A9-1455-4DA8-83BC-F43D47A70EB6}");
        this._object.SetRegisterInformation("你的名字", "你的注册码");
        this._object.GridColor = 0x4C7449;
        this._object.ScrollBarStyle = 0/*_Flat*/  ;
        this._object.AllowUserResizing = true;
        this._object.BackColor1 = 0xFFFFFF;
        this._object.BackColor2 = 0xFFEACF;
        this._object.ExtendLastCol = true;//最后一列是否填充空白
        this._object.Cols = col;
        this._object.Rows = row;
        this._object.StartRowNumber = 1;
        this._object.DisplayRowIndex = true;//是否显示行号
        this._object.DisplayFocusRect = true;
        this._object.DisplayClientBorder = false;
        this._object.AutoRedraw = AutoRedraw;
        this._object.BoldFixedCell = true;//显示点中框
        
		..com.Connect(this._object,{ 
			AfterUserSort  = function(col){
				this._object.AfterUserSort(col);
			};
			BeforeUserSort  = function(col){
				this._object.BeforeUserSort(col);
			};
			ButtonClick  = function(){
				this._object.ButtonClick();
			};
			CellChange  = function(row,col){
				this._object.CellChange(row,col);
			};
			Click  = function(){
				this._object.Click();
			};
			ColWidthChange  = function(FirstCol ,LastCol ){
				this._object.ColWidthChange(FirstCol ,LastCol);
			};
			ComboClick  = function(index){
				this._object.ComboClick(index);
			};
			ComboDropDown  = function(row,col){
				this._object.ComboDropDown(row,col);
			};
			DblClick  = function(){
				this._object.DblClick();
			};
			EditRow  = function(index){
				this._object.EditRow(index);
			};
			EnterRow  = function(index){
				this._object.EnterRow(index);
			};
			GetCellText  = function(row,col,text,changed){
				return this._object.GetCellText(row,col,text,changed);
			};
			SetCellText  = function(row,col,text,changed){
				return this._object.SetCellText(row,col,text,changed);
			};
			HyperLinkClick  = function(row,col,url,changed){
				return this._object.HyperLinkClick(row,col,url,changed);
			};
			KeyDown  = function(keycode,shift){
				this._object.KeyDown(keycode,shift);
			};
			KeyUp  = function(keycode,shift){
				this._object.KeyUp(keycode,shift);
			};
			KeyPress  = function(KeyAscii){
				this._object.KeyPress(KeyAscii);
			};
			LeaveCell  = function(row,col,newRow,newCol,cancel){
				return this._object.LeaveCell(row,col,newRow,newCol,cancel);
			};
			LeaveRow  = function(row,cancel){
				return this._object.LeaveRow(row,cancel);
			};
			MaskError  = function(row,col){
				this._object.MaskError(row,col);
			};
			MouseDown  = function(btton,shift,x,y){
				this._object.MouseDown(btton,shift,x,y);
			};
			MouseUp  = function(btton,shift,x,y){
				this._object.MouseUp(btton,shift,x,y);
			};
			MouseMove  = function(btton,shift,x,y){
				this._object.MouseMove(btton,shift,x,y);
			};
			RowColChange  = function(row,col){
				this._object.RowColChange(row,col);
			};
			RowHeightChange  = function(Firstrow,Lastcol){
				this._object.RowHeightChange(Firstrow,Lastcol);
			};
			Scroll  = function(){
				this._object.Scroll();
			};
		});
        return this._object; 
    };
    @_metaProperty;
}
namespace FlexCellLib{
    try{
         ..com.CreateObject("{2BDD96A9-1455-4DA8-83BC-F43D47A70EB6}")
    }catch(e){
        ..com.activeX.regsvr32As("\res\FlexCell.ocx");
    }
}
  
/**intellisense()
FlexCellLib = FlexCell表格控件
FlexCellLib() = 创建FlexCell表格控件\n!FlexCell.
FlexCellLib(.(winform,row,col,autoRedraw) = 参数为静态控件如static和picturebox,后两个参数可选,为行数和列数,是否开启自动重绘
_cellColumns=@0/*_cellColumns*/
_cellInsideHorizontal=@5/*_cellInsideHorizontal*/
_cellPaperLedger=@4/*_cellPaperLedger*/
_cellCenter=@1/*_cellCenter*/
_cell3DPie=@5/*_cell3DPie*/
_cellTextBox=@0/*_cellTextBox*/
_cellRows=@1/*_cellRows*/
_cellLine=@1/*_cellLine*/
_cellPaperEnvC3=@0x1D/*_cellPaperEnvC3*/
_cellNone=@0/*_cellNone*/
_cellGeneralGeneral=@0/*_cellGeneralGeneral*/
_cellPortrait=@1/*_cellPortrait*/
_cellPaperLetterSmall=@2/*_cellPaperLetterSmall*/
_cellPaperEnvMonarch=@0x25/*_cellPaperEnvMonarch*/
_cellOwnerDraw=@1/*_cellOwnerDraw*/
_cellGeneralTop=@1/*_cellGeneralTop*/
_cellPaperEnvC6=@0x1F/*_cellPaperEnvC6*/
_cellPie=@2/*_cellPie*/
_cellPaperEnvC65=@0x20/*_cellPaperEnvC65*/
_cellBinarySearch=@1/*_cellBinarySearch*/
_cellPaperEnvDL=@0x1B/*_cellPaperEnvDL*/
_cellGeneralBottom=@3/*_cellGeneralBottom*/
_cellPaperA5=@0xB/*_cellPaperA5*/
_cellRightGeneral=@0xC/*_cellRightGeneral*/
_cellPaperFanfoldUS=@0x27/*_cellPaperFanfoldUS*/
_cellDefaultMask=@6/*_cellDefaultMask*/
_cellLeftTop=@5/*_cellLeftTop*/
_cellPaperFanfoldStdGerman=@0x28/*_cellPaperFanfoldStdGerman*/
_cellLeftCenter=@6/*_cellLeftCenter*/
_cellPaperEnvB6=@0x23/*_cellPaperEnvB6*/
_cellPaperUser=@0x100/*_cellPaperUser*/
_cellPaperA3=@8/*_cellPaperA3*/
_cellMDY=@1/*_cellMDY*/
_cellLeftBottom=@7/*_cellLeftBottom*/
_cellPaperNote=@0x12/*_cellPaperNote*/
_cellDiagonalUp=@6/*_cellDiagonalUp*/
_cellEdgeLeft=@0/*_cellEdgeLeft*/
_cellPaper10x14=@0x10/*_cellPaper10x14*/
_Dot=@1/*_Dot*/
_cellCenterTop=@9/*_cellCenterTop*/
_cellCenterCenter=@0xA/*_cellCenterCenter*/
_cellColumnClustered=@0/*_cellColumnClustered*/
_cellCenterBottom=@0xB/*_cellCenterBottom*/
_cellRightTop=@0xD/*_cellRightTop*/
_cellPaperEnvC4=@0x1E/*_cellPaperEnvC4*/
_cellAscending=@0/*_cellAscending*/
_cellRightBottom=@0xF/*_cellRightBottom*/
_cellPaperEnv10=@0x14/*_cellPaperEnv10*/
_cellYMD=@0/*_cellYMD*/
_cellPaperA4Small=@0xA/*_cellPaperA4Small*/
_cellThin=@1/*_cellThin*/
_cellPaperTabloid=@3/*_cellPaperTabloid*/
_cellHyperLink=@5/*_cellHyperLink*/
_cellPaperEnv14=@0x17/*_cellPaperEnv14*/
_cellPaperEnv11=@0x15/*_cellPaperEnv11*/
_cellCheckBox=@2/*_cellCheckBox*/
_cellDiagonalDown=@7/*_cellDiagonalDown*/
_cellSelectionFree=@0/*_cellSelectionFree*/
_cellInsideVertical=@4/*_cellInsideVertical*/
_cellComboBox=@1/*_cellComboBox*/
_Flat=@0/*_Flat*/
_cellCalendar=@3/*_cellCalendar*/
_cellButton=@4/*_cellButton*/
_cellDMY=@2/*_cellDMY*/
_cellPaperEnv9=@0x13/*_cellPaperEnv9*/
_cellDefault=@6/*_cellDefault*/
_cellEdgeBottom=@3/*_cellEdgeBottom*/
_cellPaperEnvB4=@0x21/*_cellPaperEnvB4*/
_cellPaperB4=@0xC/*_cellPaperB4*/
_cell3DLine=@4/*_cell3DLine*/
_cellThick=@2/*_cellThick*/
_cellNormal=@0/*_cellNormal*/
_cellLetter=@2/*_cellLetter*/
_cellUpper=@3/*_cellUpper*/
_cellSortIndicatorDisabled=@3/*_cellSortIndicatorDisabled*/
_cellPaperLegal=@5/*_cellPaperLegal*/
_cellPaperQuarto=@0xF/*_cellPaperQuarto*/
_cellScrollBarVertical=@2/*_cellScrollBarVertical*/
_cellValue=@5/*_cellValue*/
_cellLeftGeneral=@4/*_cellLeftGeneral*/
_cellScrollBarNone=@0/*_cellScrollBarNone*/
_cellScrollBarHorizontal=@1/*_cellScrollBarHorizontal*/
_cellLower=@4/*_cellLower*/
_cellScrollBarBoth=@3/*_cellScrollBarBoth*/
_cellLinearSearch=@0/*_cellLinearSearch*/
_cellNumeric=@1/*_cellNumeric*/
_cellPaperDSheet=@0x19/*_cellPaperDSheet*/
_cellSelectionByRow=@1/*_cellSelectionByRow*/
_cellPaper11x17=@0x11/*_cellPaper11x17*/
_cellSelectionByColumn=@2/*_cellSelectionByColumn*/
_cellNextRow=@1/*_cellNextRow*/
_cellNoMask=@0/*_cellNoMask*/
_cellPaperEnvB5=@0x22/*_cellPaperEnvB5*/
_cellPaperESheet=@0x1A/*_cellPaperESheet*/
_cellPaperEnvItaly=@0x24/*_cellPaperEnvItaly*/
_cellCenterGeneral=@8/*_cellCenterGeneral*/
_cellEdgeRight=@1/*_cellEdgeRight*/
_cellEdgeTop=@2/*_cellEdgeTop*/
_cellRightCenter=@0xE/*_cellRightCenter*/
_cellNextCol=@0/*_cellNextCol*/
_cellPaperEnvPersonal=@0x26/*_cellPaperEnvPersonal*/
_cellPaperB5=@0xD/*_cellPaperB5*/
_cellSortIndicatorNone=@0/*_cellSortIndicatorNone*/
_cellLandscape=@2/*_cellLandscape*/
_cellPaperFanfoldLglGerman=@0x29/*_cellPaperFanfoldLglGerman*/
_cellDot=@3/*_cellDot*/
_cell3DColumnClustered=@3/*_cell3DColumnClustered*/
_cellLeft=@0/*_cellLeft*/
_cellPaperEnvC5=@0x1C/*_cellPaperEnvC5*/
_cellPaperFolio=@0xE/*_cellPaperFolio*/
_cellPaperA4=@9/*_cellPaperA4*/
_cellRight=@2/*_cellRight*/
_cellSortIndicatorDescending=@2/*_cellSortIndicatorDescending*/
_cellDescending=@1/*_cellDescending*/
_cellSelectionNone=@3/*_cellSelectionNone*/
_Solid=@0/*_Solid*/
_cellPaperLetter=@1/*_cellPaperLetter*/
_cellPaperCSheet=@0x18/*_cellPaperCSheet*/
_cellGeneralCenter=@2/*_cellGeneralCenter*/
_cellPaperExecutive=@7/*_cellPaperExecutive*/
_cellPaperStatement=@6/*_cellPaperStatement*/
_cellSortIndicatorAscending=@1/*_cellSortIndicatorAscending*/
end intellisense**/
 
/**intellisense(!FlexCell)
AboutBox() = 关于
SetRegisterInformation("owner","serialNum") = 设置注册资料
ActiveCell() = 返回对当前活动单元格的引用\n!Cell.
Cell(.(row,col) = 设置单元格属性,参数(行,列)
Cell() = 设置单元格属性\n!Cell.
AllowUserSort = 返回或者设置一个bool值,该值决定了是否允许用户用鼠标点击固定行来对表格内容排序
AllowUserReorderColumn = 返回或者设置一个值,该值决定了是否可以用鼠标来拖动列标题(固定行中的单元格),整列移动单元格
AllowUserResizing = 返回或者设置一个bool值,该值决定了是否可以用鼠标来重新调整FlexCell表格的行高和列宽
AutoFitRowHeight(row) = 该方法用于自动调整表格中指定行的行高,使此行单元格即可容纳所有单元格文字大小
Appearance = 返回或设置控件的绘图风格,可设置为\n 0=平面,1=3D
AutoRedraw = 返回或者设置一个值,该值决定了是否能够重绘控件,将AutoRedraw属性设置为False可以提高加载数据的速度,待所有操作完成后,切记应将之恢复为True
BackColor1 = 返回或设置表格中 奇数行 的背景色
BackColor2 = 返回或设置表格中 偶数行 的背景色
BackColorBkg = 返回或设置表格中 空白区域 的背景色
BackColorFixed = 返回或设置表格中 固定行/列 的背景色(即第0列和第0行的颜色)
BackColorFixedSel = 返回或设置表格中选定单元格(Selection)在固定行/列上对应单元格的背景色,将BackColorFixed属性和BackColorFixedSel属性设置为不同的值,可以清晰地反映出Selection的位置。
BackColorScrollBar = 返回或设置滚动条的背景色
BackColorSel = 返回或设置表格中选定单元格(Selection)的背景色(即拖拽选中的单元格背景色)
BorderColor = 返回或设置控件边框的颜色
BottomRow = 返回表格中最下边可见的非固定行数。此属性在设计时不可用,在运行时是只读的
BoldFixedCell = 返回或设置是否在固定行/列上以粗体画出Selection所对应的单元格的文字(bool值),即点击单元格之后对应的行和列文字是否要加粗显示
ButtonLocked = 返回或设置是否锁定Button控件,禁止在Button内按键盘输入
CellBorderColor = 返回或设置单元格边框的颜色
Cols = 返回或设置表格的列数
DateFormat = 返回或设置Calendar子控件的日期格式,参数为(年月日):\ncellYMD=0;\ncellMDY=1;\ncellDMY=2;
DefaultFont = 设置或返回表格的缺省字体,固定行、固定列以及没有明确设置字体的单元格都将采用DefaultFont
DefaultRowHeight = 返回或设置Grid的默认行高,单位是像素,行高必须大于0
DisplayClientBorder = 返回或设置控件在最后一行单元格与控件背景之间、最后一列单元格与控件背景之间,是否显示一条黑色的框线
DisplayFocusRect = 返回或设置控件在当前活动单元格是否显示一个虚框
DisplayRowIndex = 返回或设置控件在固定列上是否显示行号
EnterKeyMoveTo = 返回或设置在Grid中按Enter键后,活动单元格是移到下一行,还是移到下一列
FileName = 当调用了OpenFile、SaveFile、LoadFromXML、ExportToXML这4个方法时,如果将FileName参数设置为空字符串(""),会显示一个打开(或保存)文件对话框,FileName属性可以返回这个对话框中选择(或输入)的文件名
OpenFile("filePath.cel") = 该方法用于打开一个已经存在的FlexCell文档(扩展名为cel),参数为空""则弹出选择框,用obj.FileName获取被选择文件名
SaveFile("filePath.cel") = 该方法用于保存FlexCell文档(扩展名为cel),参数为空""则弹出选择框,用obj.FileName获取被选择文件名
LoadFromXML("filePath.xml") = 该方法用于将XML文档内容载入到表格中。此方法需要使用MSXML3.DLL中的一些功能,如果您的系统中没有此文件,将不能正确地载入XML文件
ExportToXML("filePath.xml") = 该方法用于将表格内容输出为XML格式的文档,此方法可以将表格中除图片以外的所有资料都输出到XML。此方法需要使用MSXML3.DLL中的一些功能,如果您的系统中没有此文件,将不能正确地输出XML文件
FixedCols = 返回或设置表格中固定列的数量,最小为1 (固定列指:左侧不会被移动的列数)
FixedRowColStyle = 返回或设置固定行/列的样式, 0=平面,1=3D(默认)
FixedRows = 返回或设置表格中固定行的数量,最小为1 (固定行指:上侧不会被移动的行数)
FrozenRows = 返回或设置表格中冻结行的数量.(为实际客户区从上到下的行数)
FrozenCols = 返回或设置表格中冻结列的数量.(为实际客户区从上到下的列数)
ForeColorFixed = 返回或设置固定行/列的前景色(文字的颜色)
HitTest(x,y) = 该方法测试控件内指定位置是否存在单元格,如果存在,则返回一个Cell对象,如果不存在则返回Nothing
HitTest() = !Cell.
GridColor = 返回或设置网格线的颜色
HPageBreaks = HPageBreaks集合是Grid控件的水平分页符的一个集合,可以通过HPageBreaks集合所提供的方法对Grid控件的水平分页符执行添加、删除等操作\n!HPageBks.
VPageBreaks = VPageBreaks集合是Grid控件的垂直分页符的一个集合,可以通过VPageBreaks集合所提供的方法对Grid控件的垂直分页符执行添加、删除等操作\n!HPageBks.
Images = 返回对表格图片组的引用,可以通过Images属性对表格的图片组执行增加图片、删除图片等操作\n!Imgs.
LeftCol = 返回或设置表格中最左边可见的不固定列,参数来指定列数
MouseCol = 返回鼠标所在位置单元格的列号。此属性在设计时不可用,在运行时是只读的
MouseRow = 返回鼠标所在位置单元格的行号。此属性在设计时不可用,在运行时是只读的
PageSetup = 返回对PageSetup对象的引用(时间问题,未添加此功能,需要的话自行扩展下)\n!PageSET.
ReadOnly = 返回或设置整个表格是否只读
ReadOnlyFocusRect = 返回或设置锁定(只读)单元格所显示的虚框样式,\n参数为:0=Solid(实线), 1=Dot(虚线)
RightCol = 返回表格中最右边可见的非固定列。此属性在设计时不可用,在运行时是只读的
setRowHeight(row,value) = 设置某一行的行高,此属性在设计时不可用
getRowHeight(row) = 返回某一行的行高,此属性在设计时不可用
Rows = 返回或设置表格的行数
ScrollBars = 返回或设置是否显示水平和垂直滚动条\n参数:cellScrollBarNone=0;\ncellScrollBarHorizontal=1;\ncellScrollBarVertical=2;\ncellScrollBarBoth=3
ScrollBarStyle = 返回或设置滚动条的样式,参数:0=平面,1=3D(默认)
Selection = 返回对当前活动选定区域单元格的引用\n!FlexSelection.
SelectionMode = 返回或设置表格的选择模式,参数为:\ncellSelectionByRow=1;\ncellSelectionByColumn=2;\ncellSelectionFree=0;\ncellSelectionNone=3
SelLength = 返回或设置Grid中子控件所选择的文本的字符数。如果Grid中没有可见的子控件,或子控件是Calendar,则此属性没有意义,返回值为0
SelStart = 返回或设置Grid中子控件所选择的文本的起始点。如果没有文本被选中,则指出插入点的位置。如果Grid中没有可见的子控件,或子控件是Calendar,则此属性没有意义,返回值为0
ShowResizeTips = 返回或设置一个bool值,该值决定了用户用鼠标调整FlexCell表格的行高或列宽时,是否显示行高或列宽的提示窗口,bool值
TopRow = 返回或设置表格中最上边可见的不固定行。此属性在设计时不可用
TotalPages = 返回表格内容的总页数
AddChart(.(row,col) = 添加一个Chart对象
AddChart() = !FlexChart.
RemoveChart(.(row,col) = 移除一个Chart对象
Chart(.(row,col) = 返回对表格中一个Chart对象的引用
Chart() = !FlexChart.
SaveChartAsBitmap(Row, Col, FileName) = 该方法用于将Chart保存为位图文件(*.bmp)。
AddItem(text,reDrawBool) = 将一行数据添加到FlexCell控件中\nText = 字符串表达式,它在新增行中显示。可以用制表符 (vbTab或Chr(9)) 来分隔每个字符串,从而将多个字符串(行中的多个列)添加进去\n reDrawBool = 一个布尔值,指明添加一行时,是否重画表格。不重画可以提高速度
RemoveItem(index) = 删除表格中的一行(参数为行号)。\n如果要一次性删除多行或多列单元格,请参阅Range对象和Selection对象的DeleteByRow、DeleteByCol方法
Column(col) = 返回对FlexCell表格中某一列的引用,\n参数为:指定的列号
Column() = !FlexColumn.
ComboBox(col) = 返回对FlexCell表格中某一列的ComboBox子控件的引用
ComboBox() = !FlexComboBox.
DirectPrint(pageNo) = 打印表格中的内容,\nPageNo参数是可选的,用于指定将要打印页面的页码,如果不设置PageNo,则打印所有页面
PrintPreview(zoom) = 预览打印效果\nZoom 参数是可选的,取值范围在10~200之间,用于指定打印预览窗口的缩放比例
ExportToExcel(FileName, ExportFixedRow, ExportFixedCol) = 将FlexCell文档输出为Excel Workbook(不需要Excel运行库的支持),输出文件的二进制格式为BIFF8\nFileName 必需的。字符串表达式,用于指定文件名 \nExportFixedRow 可选的。一个布尔值,该值决定是否输出固定行。 \nExportFixedCol 可选的。一个布尔值,该值决定是否输出固定列。 
ExportToCSV(FileName, ExportFixedRow, ExportFixedCol) = 该方法用于将表格输出为CSV格式的文件。CSV格式的文件可以用Excel打开,同一行相临两个单元格的文字以逗号分隔\nFileName 必需的。字符串表达式,用于指定文件名 \nExportFixedRow 可选的。一个布尔值,该值决定是否输出固定行。 \nExportFixedCol 可选的。一个布尔值,该值决定是否输出固定列。 

InsertCol(StartCol, Count) = 向表格插入指定数量的空列\nStartCol 必需的。是一个整数,用于指定插入空列的起始位置 \nCount 必需的。是一个整数,用于指定插入空列的总数 
InsertRow(StartRow, Count) = 向表格插入指定数量的空行\nStartRow 必需的。是一个整数,用于指定插入空行的起始位置 \n必需的。是一个整数,用于指定插入空行的总数
NewFile() = 新建一个临时文件,重新初始化控件的属性
PrintDialog() = 显示“打印机设置”对话框,用户可以在这个对话框里选择打印机、设置打印机属性,如果用户点击了对话框中的“关闭”按钮,该方法返回值为True,否则为False
Range(FirstRow,FirstCol,LastRow,LastCol) = 该方法返回对FlexCell表格中某一区域的单元格的引用
Range() = !FlexRange.
Refresh() = 重画整个控件。调用AddItem方法向控件添加大量数据时,设置Redraw参数为False可以提高处理速度,当所有数据添加完毕后,应调用Refresh方法重画控件
AfterUserSort = @.AfterUserSort = function(col){
	/***用户可以点击列标题(固定行)对表格数据进行排序,此事件在排序完成后发生
	 Col 返回一个整数,标识已排序的列号 ***/
	__
}
BeforeUserSort = @.BeforeUserSort = function(col){
	/***用户可以点击列标题(固定行)对表格数据进行排序,此事件在排序前发生
	 Col 返回一个整数,标识将要排序的列号 ***/
	__
}
ButtonClick = @.ButtonClick = function(){
	/***此事件在用户用鼠标点Button类型的单元格时发生。
	您可以在此事件中做一些有用的事情,例如可以调用CommonDialog控件来选择文件名 ***/
	__
}
CellChange = @.CellChange = function(row,col){
	/***此事件在单元格的内容发生了改变时发生
	 Row 返回一个整数,标识单元格所在的行 
	 Col 返回一个整数,标识单元格所在的列  ***/
	__
}
Click = @.Click = function(){
	/***此事件在用户用鼠标点击表格时发生 ***/
	__
}
ColWidthChange = @.ColWidthChange = function(FirstCol,LastCol){
	/***此事件在一列或多列的列宽改变时发生
	 FirstCol 一个整数,起始列号  
	 LastCol 一个整数,截止列号   ***/
	__
}
ComboClick = @.ComboClick = function(index){
	/***此事件在用户用鼠标点击ComboBox子控件下拉列表中的项时发生
	 Index 返回一个整数,标识ComboBox子控件在FlexCell控件中所处的列数 ***/
	__
}
ComboDropDown = @.ComboDropDown = function(row,col){
	/***此事件在用户用鼠标点击ComboBox中的小箭头时发生。
	 只有CellType设置为cellComboBox的单元格才能触发此事件,
	 在此事件发生前,会清除ComboBox(0)的下拉列表项,因此必须在此事件中编程向ComboBox(0)添加下拉列表项
	 Row 返回一个整数,标识ComboBox子控件在Grid中所处的行数  
	 Col 返回一个整数,标识ComboBox子控件在Grid中所处的列数   ***/
	__
}
DblClick = @.DblClick = function(){
	/***此事件在用户用鼠标双击表格时发生 ***/
	__
}
EditRow = @.EditRow = function(index){
	/***此事件在活动单元格设置到一个新行后,第一次编辑单元格的内容时发生
	 Index 返回一个整数,标识正在编辑的单元格的行号  ***/
	__
}
EnterRow = @.EnterRow = function(index){
	/***此事件在活动单元格设置到一个新行后发生
	 Index 返回一个整数,标识进入的行号   ***/
	__
}
GetCellText = @.GetCellText = function(row,col,text,changed){
	/***此事件在取得单元格文字时发生,可以用GetCellText事件实现虚表功能
	 Row 返回一个整数,标识单元格所在的行号    
	 Col 返回一个整数,标识单元格所在的列号 
	 Text 字符串表达式,如果Changed参数设置为True,Text参数的值将替代单元格的实际文字 
	 Changed 如果设置Changed=True,可以使Text参数的值将替代单元格的实际文字,否则,Text参数设置的值不会生效 
	 ***/
	__
}
SetCellText = @.SetCellText = function(row,col,text,Cancel ){
	/***此事件在设置单元格文字时发生,SetCellText事件一般和GetCellText事件一起使用,用于实现虚表功能
	 row 返回一个整数,标识单元格所在的行号    
	 col 返回一个整数,标识单元格所在的列号 
	 text 字符串,保存了单元格的文字 
	 Cancel 一个布尔值,可以在程序中改变这个参数的值。它的缺省值是False,
	 这种情况下,即使使用了虚表功能,控件仍会将单元格文字保存到由控件管理的内存中。
	 如果设置Cancel=True,可以禁止向由控件管理的内存中保存单元格文字,以节约内存,但在禁止了虚表功能后,将会丢失单元格的文字 
	 ***/
	__
}
HyperLinkClick = @.HyperLinkClick = function(row,col,url,changed){
	/***此事件在点击超链接单元格时发生
	 Row 返回一个整数,标识单元格所在的行号    
	 Col 返回一个整数,标识单元格所在的列号  
	 URL 字符串表达式,这个参数的值可以重新设置  
	 Changed 如果设置Changed=True,可以使URL参数的值替代原有的URL  
	 ***/
	__
}
KeyDown = @.KeyDown = function(keycode,shift){
	/***这些事件是在按下 ( KeyDown ) 或松开 ( KeyUp ) 一个键时发生的
	 KeyCode 是一个键代码,诸如 vbKeyF1 ( F1 键)或 vbKeyHome ( HOME 键)。 
	 Shift 是在该事件发生时响应 SHIFT ,CTRL 和 ALT 键的状态的一个整数。
	 shift 参数是一个位域,它用最少的位响应 SHIFT 键(位 0 )、CTRL 键(位 1 )和 ALT 键(位 2 )。
	 这些位分别对应于值 1、2 和 4。可通过对一些、所有或无位的设置来指明有一些、所有或零个键被按下。
	 例如,如果 CTRL 和 ALT 这两个键都被按下,则 shift 的值为 6   
	 ***/
	__
}
KeyUp = @.KeyUp = function(keycode,shift){
	/***这些事件是在按下 ( KeyDown ) 或松开 ( KeyUp ) 一个键时发生的
	 KeyCode 是一个键代码,诸如 vbKeyF1 ( F1 键)或 vbKeyHome ( HOME 键)。 
	 Shift 是在该事件发生时响应 SHIFT ,CTRL 和 ALT 键的状态的一个整数。
	 shift 参数是一个位域,它用最少的位响应 SHIFT 键(位 0 )、CTRL 键(位 1 )和 ALT 键(位 2 )。
	 这些位分别对应于值 1、2 和 4。可通过对一些、所有或无位的设置来指明有一些、所有或零个键被按下。
	 例如,如果 CTRL 和 ALT 这两个键都被按下,则 shift 的值为 6   
	 ***/
	__
}
KeyPress = @.KeyPress = function(keyAscii){
	/***这些事件是在按下 ( KeyDown ) 或松开 ( KeyUp ) 一个键时发生的
	 keyAscii 是返回一个标准数字 ANSI 键代码的整数。
	 keyAscii 通过引用传递,对它进行改变可给对象发送一个不同的字符。
	 将 keyAscii 改变为 0 时可取消击键,这样一来对象便接收不到字符。    ***/
	__
}
LeaveCell = @.LeaveCell = function(row,col,newRow,newCol,cancel){
	/***当前活动单元格变更到一个不同的单元格之前立即发生
	 row 返回一个整数,标识单元格变更之前的行数。 
	 col 返回一个整数,标识单元格变更之前的列数 
	 newRow 返回一个整数,标识单元格变更之后的行数。可以设置NewRow等于一个整数,使活动单元格移动到此行 
	 newCol 返回一个整数,标识单元格变更之后的列数。可以设置NewCol等于一个整数,使活动单元格移动到此列 
	 cancel 如果设置Cancel=True,可以防止活动单元格离开原来的位置 
	***/
	__
}
LeaveRow = @.LeaveRow = function(row,cancel){
	/***当前活动单元格变更到一个不同的单元格之前立即发生
	 row 返回一个整数,标识单元格变更之前的行数。 
	 cancel 如果设置Cancel=True,可以防止活动单元格离开原来的位置 
	***/
	__
}
MaskError = @.MaskError = function(row,col){
	/***此事件在单元格中输入了禁止输入的字符时发生。可以设置控件的ColMask属性来设置输入掩码
	 Row 返回一个整数,标识单元格所在的行  
	 Col 返回一个整数,标识单元格所在的列  
	***/
	__
}
MouseDown = @.MouseDown = function(Button , Shift, x, y){
	/***这些事件是当按下(MouseDown)、释放(MouseUp)或者移动(MouseMove)鼠标按钮时发生
	 Button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。
	 button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮  
	 Shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。
	 某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。
	 这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。
	 例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。  
	 x,y 返回一个指定鼠标指针当前位置的数 
	***/
	__
}
MouseUp = @.MouseUp = function(Button , Shift, x, y){
	/***这些事件是当按下(MouseDown)、释放(MouseUp)或者移动(MouseMove)鼠标按钮时发生
	 Button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。
	 button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮  
	 Shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。
	 某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。
	 这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。
	 例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。  
	 x,y 返回一个指定鼠标指针当前位置的数 
	***/
	__
}
MouseMove = @.MouseMove = function(Button , Shift, x, y){
	/***这些事件是当按下(MouseDown)、释放(MouseUp)或者移动(MouseMove)鼠标按钮时发生
	 Button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。
	 button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮  
	 Shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。
	 某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。
	 这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。
	 例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。  
	 x,y 返回一个指定鼠标指针当前位置的数 
	***/
	__
}
RowColChange = @.RowColChange = function(row,col){
	/***当前活动单元更改到不同单元时发生
	 Row 返回一个整数,标识单元格所在的行  
	 Col 返回一个整数,标识单元格所在的列  
	***/
	__
}
RowHeightChange = @.RowHeightChange = function(FirstRow,LastRow ){
	/***此事件在一行或多行的行高改变时发生
	 FirstRow 一个整数,起始行号   
	 LastRow 一个整数,截止行号   
	***/
	__
}
Scroll  = @.Scroll  = function(){
	/***此事件在滚动条的值改变时发生***/
	__
}
end intellisense**/

/**intellisense(!FlexRange)
Alignment = 设置整个区域内所有单元格的对齐方式,此属性是只写的\ncellLeftBottom=7;\ncellGeneralTop=1;\ncellGeneralCenter=2\ncellGeneralBottom=3\ncellRightBottom=15\ncellLeftGeneral=4;\ncellCenterGeneral=8;\ncellRightCenter=14;\ncellLeftTop=5;\ncellRightTop=13;\ncellGeneralGeneral=0;\ncellCenterCenter=10;\ncellRightGeneral=12;\ncellLeftCenter=6;\ncellCenterTop=9;\ncellCenterBottom=11
BackColor = 设置整个区域内所有单元格的背景色,此属性是只写的
Borders(1/*_cellEdgeRight*/,2/*_cellThick*/) = 设置整个区域内所有单元格的边框线型,此属性是只写的\n参数: 边框位置,样式
FirstCol = 返回所选区域最左边的单元格所处的列数,此属性是只读的
FirstRow = 返回所选区域最上边的单元格所处的行数,此属性是只读的
FontBold = 设置整个区域内所有单元格的字形是粗体或非粗体,此属性是只写的,bool值
FontItalic = 设置整个区域内所有单元格的字形是斜体或非斜体,此属性是只写的
FontName = 设置整个区域内所有单元格的字体名字,此属性是只写的
FontSize = 设置整个区域内所有单元格的字体大小,此属性是只写的
FontStrikethrough = 设置整个区域内所有单元格的字形为删除线或无删除线,此属性是只写的
FontUnderline = 设置整个区域内所有单元格的字形有下划线或无下划线,此属性是只写的
ForeColor = 设置整个区域内所有单元格的前景色(即文字的颜色),此属性是只写的
LastCol = 返回所选区域最右边的单元格所处的列数,此属性是只读的
LastRow = 返回所选区域最下边的单元格所处的行数,此属性是只读的
Locked = 设置整个区域内所有单元格是否锁定(只读),此属性是只写的
MergeCells = 合并或取消合并整个区域内的单元格,此属性是只写的, bool值
WrapText = 设置整个区域内所有单元格是否自动换行,如果此属性设置为True,当单元格内的文字超过一行时会自动换行,此属性是只写的。
ClearAll() = 该方法用于清除所选区域内所有单元格的内容和格式
ClearFormat() = 该方法用于清除所选区域内所有单元格的格式
ClearText() = 该方法用于清除所选区域内所有单元格的文字
DeleteByCol() = 该方法按整列方式从表格中删除单元格
DeleteByRow() = 该方法按整行方式从表格中删除单元格
Merge() = 该方法用于将所选区域内所有单元格合并成一个单元格
Selected() = 该方法用于选定区域内所有单元格,选定后即可通过FlexCell表格控件的Selection属性对之进行操作
end intellisense**/

/**intellisense(!FlexSelection)
Alignment = 设置整个区域内所有单元格的对齐方式,此属性是只写的\ncellLeftBottom=7;\ncellGeneralTop=1;\ncellGeneralCenter=2\ncellGeneralBottom=3\ncellRightBottom=15\ncellLeftGeneral=4;\ncellCenterGeneral=8;\ncellRightCenter=14;\ncellLeftTop=5;\ncellRightTop=13;\ncellGeneralGeneral=0;\ncellCenterCenter=10;\ncellRightGeneral=12;\ncellLeftCenter=6;\ncellCenterTop=9;\ncellCenterBottom=11
BackColor = 设置整个区域内所有单元格的背景色,此属性是只写的
Borders(1/*_cellEdgeRight*/,2/*_cellThick*/) = 设置整个区域内所有单元格的边框线型,此属性是只写的\n参数: 边框位置,样式
FirstCol = 返回所选区域最左边的单元格所处的列数,此属性是只读的
FirstRow = 返回所选区域最上边的单元格所处的行数,此属性是只读的
FontBold = 设置整个区域内所有单元格的字形是粗体或非粗体,此属性是只写的,bool值
FontItalic = 设置整个区域内所有单元格的字形是斜体或非斜体,此属性是只写的
FontName = 设置整个区域内所有单元格的字体名字,此属性是只写的
FontSize = 设置整个区域内所有单元格的字体大小,此属性是只写的
FontStrikethrough = 设置整个区域内所有单元格的字形为删除线或无删除线,此属性是只写的
FontUnderline = 设置整个区域内所有单元格的字形有下划线或无下划线,此属性是只写的
ForeColor = 设置整个区域内所有单元格的前景色(即文字的颜色),此属性是只写的
LastCol = 返回所选区域最右边的单元格所处的列数,此属性是只读的
LastRow = 返回所选区域最下边的单元格所处的行数,此属性是只读的
Locked = 设置整个区域内所有单元格是否锁定(只读),此属性是只写的
MergeCells = 合并或取消合并整个区域内的单元格,此属性是只写的, bool值
WrapText = 设置整个区域内所有单元格是否自动换行,如果此属性设置为True,当单元格内的文字超过一行时会自动换行,此属性是只写的。
ClearAll() = 该方法用于清除所选区域内所有单元格的内容和格式
ClearFormat() = 该方法用于清除所选区域内所有单元格的格式
ClearText() = 该方法用于清除所选区域内所有单元格的文字
CopyData() = 该方法用于将选定区域内所有单元格内容(包括文字和格式)复制到剪贴板,您可以把剪贴板中的内容粘贴到FlexCell中去,也可以将之粘贴到Excel、用友华表和其它程序中去,但单元格格式将会丢失
CutData() = 该方法用于将选定区域内所有单元格内容(包括文字和格式)复制到剪贴板,并清除原Selection中的数据,您可以把剪贴板中的内容粘贴到FlexCell中去,也可以将之粘贴到Excel、用友华表和其它程序中去,但单元格格式将会丢失
DeleteByCol() = 该方法按整列方式从表格中删除单元格
DeleteByRow() = 该方法按整行方式从表格中删除单元格
InsertCols() = 该方法向表格中插入空列,数量等于当前所选单元格的总列数
InsertRows() = 该方法向表格中插入空行,数量等于当前所选单元格的总行数
Merge() = 该方法用于将所选区域内所有单元格合并成一个单元格
PasteData() = 该方法用于将剪贴板中的数据粘贴到FlexCell表格中去,如果将要粘贴的目标区域超出了表格的边界,或此区域内包含锁定的单元格,都不能执行粘贴操作
end intellisense**/

/**intellisense(!PageSET)



end intellisense**/

/**intellisense(!Imgs)
Add("filePath","key") = 该方法向Grid控件的Images图片组添加一个图片\n参数:FilePath=字符串,用于指定图片文件的完整路径(文件名)\nkey=字符串,用于指定图片的键,调用Cell对象的SetImage()方法时需要用到此值。需要注意的是,图片组中不能有重复的键。
Count() = 该方法返回Grid控件的Images图片组中的图片总数
Item("key") = 该方法返回对Images图片组中的一个图片的引用,参数key:字符串或数值表达式,用于指定图片的键或索引
Item() = 该方法返回对Images图片组中的一个图片的引用\n!imgItem.
Remove("key") = 该方法从Grid控件的Images图片组中删除一个图片,参数key:字符串或数值,用于指定图片的键或索引
end intellisense**/ 
/**intellisense(!imgItem)
Key = 返回Image对象的键,该属性是只读的
Picture = 返回Image对象的图片,可以调用SavePicture等图形方法保存此图片
end intellisense**/

/**intellisense(!HPageBks)
Add(8) = 该方法向Grid控件的HPageBreaks(或VPageBreaks)集合中组添加一个分页符\n参数:用于指定分页符的位置(水平分页符的行号或垂直分页符的列号)
Clear() = 该方法清除HPageBreaks(或VPageBreaks)集合中的所有分页符
Count() = 该方法返回Grid控件的HPageBreaks(或VPageBreaks)集合中的分页符总数
Item(1).Location = 该方法返回对HPageBreaks(或VPageBreaks)集合中一个分页符的引用的位置(水平分页符的行号或垂直分页符的列号),括号内为参数(例子中引用的第1个位置)
Remove(1) = 该方法从Grid控件的HPageBreaks(或VPageBreaks)集合中删除一个分页符,参数为引用的索引(示例中为第1个引用)
end intellisense**/ 
 
/**intellisense(!Cell)
Text = 返回或设置单元格的内容,如果单元格类型是复选框,Checked状态下,Text=“1”,否则Text=“0”
Alignment = 返回或设置单元格的对齐方式\ncellLeftBottom=7;\ncellGeneralTop=1;\ncellGeneralCenter=2\ncellGeneralBottom=3\ncellRightBottom=15\ncellLeftGeneral=4;\ncellCenterGeneral=8;\ncellRightCenter=14;\ncellLeftTop=5;\ncellRightTop=13;\ncellGeneralGeneral=0;\ncellCenterCenter=10;\ncellRightGeneral=12;\ncellLeftCenter=6;\ncellCenterTop=9;\ncellCenterBottom=11
BackColor = 返回或设置单元格的背景色
BooleanValue = 以Boolean类型返回单元格的值,此属性是只读的
setBorder(3/*_cellEdgeBottom*/ , 2/*_cellThick*/) = 设置单元格的边框线型\n参数1为:cellDiagonalUp=6;\ncellEdgeLeft=0;\ncellEdgeTop=2;\ncellInsideHorizontal=5;\ncellEdgeRight=1;\ncellDiagonalDown=7;\ncellEdgeBottom=3;\ncellInsideVertical=4\n参数2为:\ncellThick=2;\ncellNone=0;\ncellDot=3;\ncellThin=1
getBorder(3/*_cellEdgeBottom*/) = 获取单元格的边框线型\n参数1为:cellDiagonalUp=6;\ncellEdgeLeft=0;\ncellEdgeTop=2;\ncellInsideHorizontal=5;\ncellEdgeRight=1;\ncellDiagonalDown=7;\ncellEdgeBottom=3;\ncellInsideVertical=4
CellType = 返回或设置单元格类型,如果此属性设置为cellDefault,则此单元格使用其所在Column的CellType。所有CellType=cellComboBox的单元格,在用户输入时都使用Grid.ComboBox(0),而不是Grid.ComboBox(Cell.Col),必须在Grid_ComboDropDown事件中向ComboBox中添加下拉项。\ncellCalendar=3;\ncellDefault=6;\ncellTextBox=0;\ncellHyperLink=5;\ncellComboBox=1;\ncellCheckBox=2;\ncellButton=4
Col = 返回单元格所在的列数,此属性是只读的
DoubleValue = 以Double类型返回单元格的值,此属性是只读的
Font = 返回或设置单元格的字体\n!cellFont.
ForeColor = 返回或设置单元格的前景色(即文字的颜色)
Height = 返回单元格的高度,如果指定的单元格是合并单元格,则返回合并单元格的总高度,此属性是只读的
Width = 返回单元格的宽度,如果指定的单元格是合并单元格,则返回合并单元格的总宽度,此属性是只读的
ImageKey = 返回单元格图片的键字符串,可以用键代替位置索引来访问Images集合中的成员。如果单元格没有图片,则返回一个空字符串(“”)。该属性是只读的
IntegerValue = 以Integer类型返回单元格的值,此属性是只读的
Locked = 返回或设置单元格是否锁定
LongValue = 以Long类型返回单元格的值,此属性是只读的
MergeCell = 返回单元格是否是合并单元格,此属性是只读的
Printable = 返回或设置单元格是否可以打印
Row = 返回单元格所在的行数,此属性是只读的
SingleValue = 以Single类型返回单元格的值,此属性是只读的
Tag = 返回或设置一个表达式用来存储程序中需要的额外数据
WrapText = 返回或设置单元格是否自动换行,如果此属性设置为True,当单元格内的文字超过一行时会自动换行
EnsureVisible() = 该方法可滚动FlexCell控件,确保单元格是可见的
Refresh() = 该方法重画一个单元格
SetFocus() = 该方法可滚动FlexCell控件,确保单元格是可见的,并将之设置为活动单元格
SetImage(.(ImageKey) = 该方法用于为单元格设置图片。Images图片组中的一个图片可以应用到多个单元格中,而且可以设置不同的显示效果\n字符串表达式,它用于指定图片的键。设置ImageKey="",可以清除单元格的图片
end intellisense**/

/**intellisense(!FlexComboBox)
Font = 返回ComboBox子控件下拉列表的字体\n!cellFont.
ItemData(index,value) = 返回或设置ComboBox子控件中每个项目具体的编号\nIndex 一个整数,用于指定项的编号 \nValue 一个长整数,与指定项目相关联的数 
ListCount = 返回某列ComboBox子控件的项的总数,此属性是只读的
ListIndex = 返回某列ComboBox子控件的当前项的索引值,此属性是只读的
ListItem(index) = 返回某列ComboBox子控件的项,此属性是只读的\nIndex 一个整数,用于指定项的索引值 
ListRows = 返回或设置某列ComboBox子控件下拉列表最多可容纳的行数\nValue 一个整数,ComboBox下拉列表可容纳的行数 
ListWidth = 返回或设置某列ComboBox子控件下拉列表部分的宽度
Locked = 返回或设置ComboBox子控件是否禁键盘输入,如果Locked设置为True,只能从下拉框中选择列表项
NewIndex = 返回最近加入ComboBox子控件的项的索引,此属性是只读的
AddItem(item) = 将项目添加到ComboBox子控件中\nItem 必需的。字符串,它用来指定添加到该ComboBox子控件的项目 
Clear() = 清空ComboBox子控件中的所有项
DropDown() = 显示ComboBox控件的下拉列表窗口。注意,只有在ComboBox控件可见时,调用此方法才能显示出下拉窗口
FindItem(item,length,matchCase) = 该方法用于在ComboBox子控件的下拉列表中查找与指定字符串相匹配的项。如果找到了匹配的项,返回该项的ListIndex,否则返回-1\nItem 必需的。字符串,它用来指定要查找的字符串 \nLength 可选的。数值表达式,它用来指定匹配字符数,缺省值为0,表示全部匹配 \nMatchCase 可选的。一个布尔值,它用来指定是否区分字符的大小写,缺省值为False 
RemoveItem(index) = 删除ComboBox子控件中的一项
end intellisense**/

/**intellisense(!cellFont)
setName("宋体") = 设置字体名称,例如"宋体"
setSize(20) = 设置字体大小,例如20像素
setBold(true) = 设置字体是否加粗,参数为bool值
setItalic(true) = 设置单元格的字体是否为斜体,参数为bool值
setStrikethrough(true) = 设置单元格的字体是否带删除线,参数为bool值
setUnderline(true) = 设置单元格的字体是否带下划线,参数为bool值
end intellisense**/

/**intellisense(!FlexChart)
AxesColor = 返回或设置图表座标轴的颜色
ChartType = 返回或设置图表类型,参数为:\ncell3DLine=4;\ncellColumnClustered=0;\ncellLine=1;\ncell3DColumnClustered=3;\ncellPie=2;\ncell3DPie=5
DisplayAxes = 返回或设置图表是否显示座标轴bool值
DisplayDataLabels = 返回或设置图表是否显示数值标签bool值
DisplayGridlines = 返回或设置图表是否显示网格线
DisplayLegend = 返回或设置图表是否显示图例框
FirstCol = 返回图表数据源的起始列号
FirstRow = 返回图表数据源的起始行号
GridLinesColor = 返回或设置图表网格线的颜色
LastCol = 返回图表数据源的截止列号
LastRow = 返回图表数据源的截止行号
LineWidth = 返回或设置图表的线宽
PlotBy = 返回或设置图表是按行还是按列生成系列,参数为:\ncellColumns=0;\ncellRows=1
ScaleFont = 返回或设置图表是否自动缩放字体。如果ScaleFont属性设置为True,Chart对象所在单元格(或合并单元格)的最佳设置值是:宽度为300像素,高度为180像素,此时Chart对象不会对字体进行任何缩放处理
WallColor = 返回或设置图表背景墙的颜色
XAxisLabelAngle = 返回或设置图表横座标标签的旋转角度,单位是度,取值范围:0~90度
SetDataSource(FirstRow, FirstCol, LastRow, LastCol) = 该方法用于为Chart对象设置数据源。FlexCell图表的数据源是FlexCell表格中的一块单元格
SetSeriesColor(Series, Color) = 该方法用于为Chart对象的某个系列设置颜色,\nSeries = 一个整数,用于指定需要设置颜色的系列,对于第一个系列,Series=0\n Color = 一个颜色表达示,用于指定该系列的颜色 
end intellisense**/

/**intellisense(!FlexColumn)
Alignment = 返回或设置整列单元格的对齐方式,\ncellLeftBottom=7;\ncellGeneralTop=1;\ncellGeneralCenter=2\ncellGeneralBottom=3\ncellRightBottom=15\ncellLeftGeneral=4;\ncellCenterGeneral=8;\ncellRightCenter=14;\ncellLeftTop=5;\ncellRightTop=13;\ncellGeneralGeneral=0;\ncellCenterCenter=10;\ncellRightGeneral=12;\ncellLeftCenter=6;\ncellCenterTop=9;\ncellCenterBottom=11
CellType = 返回或设置整列单元格的子控件类型\ncellCalendar=3;\ncellDefault=6;\ncellTextBox=0;\ncellHyperLink=5;\ncellComboBox=1;\ncellCheckBox=2;\ncellButton=4
DecimalLength = 返回或设置整列单元格的可输入的最长的小数位置,参数是一个整数,指定了小数点后的位数
FormatString = 返回或设置整列单元格的文字显示格式,它指定了单元格文字的显示格式具体设置可以参考MSDN中Format()函数的相关帮助
Locked = 返回或设置整列单元格是否锁定(只读)。
Mask = 返回或设置整列单元格的输入掩码\ncellNoMask=0;\ncellValue=5;\ncellUpper=3;\ncellDefaultMask=6;\ncellNumeric=1;\ncellLetter=2;\ncellLower=4
MaxLength = 返回或设置整列单元格最长可以输入多少位字符
Position = 设置一个列的位置,允许移动列到指定的位置。如果表格中存在合并单元格,则属性的设置不会生效
SearchMethod = 返回或设置ComboBox子控件寻找与指定字符串相匹配的项时所采用的搜索方法\ncellBinarySearch=1;\ncellLinearSearch=0
UserSortIndicator = 返回或设置固定行上某一列的排序标识(一个三角形图标)\ncellSortIndicatorNone=0;\ncellSortIndicatorAscending=1;\ncellSortIndicatorDescending=2;\ncellSortIndicatorDisabled=3
Width = 返回或设置某列的列宽,单位是像素,如果把第0列的列宽设置为0,则可以隐藏固定列
AutoFit() = 自动调整表格中指定列的列宽,使此列单元格不必折行显示即可容纳所有单元格文字
Sort(1/*_cellDescending*/) = 用于将表格内容按某一列作为关键字进行排序。需要说明的是,如果表格中包含有合并单元格和图表,就不能进行排序,也不会有任何提示\ncellDescending=1;\ncellAscending=0
end intellisense**/

调用示例如下;

import win.ui;
import win.ui.menu;
/*DSG{{*/
mainForm = win.form(text="FlexCell库调用示例";right=840;bottom=501)
mainForm.add(
button={cls="button";text="取消合并";left=-1;top=336;right=119;bottom=371;z=2};
button10={cls="button";text="设置(6,6)单元格字体";left=147;top=451;right=278;bottom=499;z=11};
button2={cls="button";text="先用鼠标拖动范围选中,然后点这里合并";left=128;top=334;right=346;bottom=369;z=3};
button3={cls="button";text="画个图表";left=672;top=332;right=835;bottom=367;z=4};
button4={cls="button";text="导出到excel";left=572;top=333;right=661;bottom=368;z=5};
button5={cls="button";text="第三列添加下拉框控件";left=403;top=334;right=566;bottom=369;z=6};
button6={cls="button";text="插入一行";left=626;top=437;right=836;bottom=499;z=7};
button7={cls="button";text="冻结上面两行";left=442;top=452;right=620;bottom=502;z=8};
button8={cls="button";text="关于FlexCell控件";left=292;top=453;right=423;bottom=501;z=9};
button9={cls="button";text="导出到csv";left=572;top=375;right=661;bottom=410;z=10};
static={cls="static";left=42;top=51;right=813;bottom=299;db=1;dl=1;dr=1;dt=1;transparent=1;z=1}
)
/*}}*/

import FlexCellLib;
var flexobj = FlexCellLib(mainForm.static,33,10);
flexobj.Cell(3,3).BackColor = 0x2D8ECF
//flexobj.Cell(9,9).EnsureVisible()
for(i=1;9;1){
    flexobj.Cell(0, i).Text = i
	for(j=1;9;1){
		flexobj.Cell(i,j).Text = i++j;
		if((i+j)%3 == 0){
			flexobj.Cell(i,j).ForeColor = 0x2D12CF;
			flexobj.Cell(i,j).Alignment=0xA/*_cellCenterCenter*/;
			
		}
	}
}

mainForm.popmenu = win.ui.popmenu(mainForm);//创建弹出菜单
mainForm.popmenu.add('删除此行',function(id){
	//在下面输入菜单响应代码
	
	flexobj.RemoveItem(flexobj.MouseRow)
});
mainForm.popmenu.add();//分隔线
mainForm.popmenu.add('删除此列',function(id){ 
	flexobj.Range(0,flexobj.MouseCol-1,0,flexobj.MouseCol-1).DeleteByCol()

 })






import console
console.open()

flexobj.AfterUserSort = function(col)
{
	console.log(col)
}
flexobj.CellChange = function(row,col)
{
	console.log(row,col)
}
flexobj.DblClick = function()
{
	console.log("双击表格了")
}

flexobj.EditRow = function(index){
	/***此事件在活动单元格设置到一个新行后,第一次编辑单元格的内容时发生
	 Index 返回一个整数,标识正在编辑的单元格的行号  ***/
	console.log(index)
}
flexobj.EnterRow = function(index){
	/***此事件在活动单元格设置到一个新行后发生
	 Index 返回一个整数,标识进入的行号   ***/
	console.log(index)
}
flexobj.MouseDown = function(Button , Shift, x, y){
	/***这些事件是当按下(MouseDown)、释放(MouseUp)或者移动(MouseMove)鼠标按钮时发生
	 Button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。
	 button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮  
	 Shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。
	 某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。
	 这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。
	 例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。  
	 x,y 返回一个指定鼠标指针当前位置的数 
	***/
	
}
flexobj.MouseUp = function(Button , Shift, x, y){
	/***这些事件是当按下(MouseDown)、释放(MouseUp)或者移动(MouseMove)鼠标按钮时发生
	 Button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。
	 button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮  
	 Shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。
	 某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。
	 这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。
	 例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。  
	 x,y 返回一个指定鼠标指针当前位置的数 
	***/
	console.log(Button , Shift, x, y)
	if(Button == 2){
		mainForm.popmenu.popup();
	}
}
flexobj.RowColChange = function(row,col){
	/***当前活动单元更改到不同单元时发生
	 Row 返回一个整数,标识单元格所在的行  
	 Col 返回一个整数,标识单元格所在的列  
	***/
	console.log(row,col)
}
flexobj.Scroll  = function(){
	/***此事件在滚动条的值改变时发生***/
	console.log("滚动条动了")
}

flexobj.AfterUserSort = function(col){
	/***用户可以点击列标题(固定行)对表格数据进行排序,此事件在排序完成后发生
	 Col 返回一个整数,标识已排序的列号 ***/
	
}
flexobj.ComboClick = function(index){
	/***此事件在用户用鼠标点击ComboBox子控件下拉列表中的项时发生
	 Index 返回一个整数,标识ComboBox子控件在FlexCell控件中所处的列数 ***/
	console.log( "comboBox在第?列",index )
}

flexobj.Cell(3,3).CellType = 1/*_cellComboBox*/;
flexobj.ComboDropDown = function(row,col){
	/***此事件在用户用鼠标点击ComboBox中的小箭头时发生。
	 只有CellType设置为cellComboBox的单元格才能触发此事件,
	 在此事件发生前,会清除ComboBox(0)的下拉列表项,因此必须在此事件中编程向ComboBox(0)添加下拉列表项
	 Row 返回一个整数,标识ComboBox子控件在Grid中所处的行数  
	 Col 返回一个整数,标识ComboBox子控件在Grid中所处的列数   ***/
	 for(i=1;5;1){	
	 	flexobj.ComboBox(0).AddItem("动态加载的"++i)
	 }
	 console.log("此处只对3,3单元格有效",row,col)
	
}
flexobj.Cell(3,5).CellType = 4/*_cellButton*/;
flexobj.Cell(3,5).BackColor = 0x32A2CF;
flexobj.ButtonClick = function(){
	/***此事件在用户用鼠标点Button类型的单元格时发生。
	您可以在此事件中做一些有用的事情,例如可以调用CommonDialog控件来选择文件名 ***/
	
	mainForm.msgbox("你点击了按钮"++flexobj.Cell(flexobj.MouseRow,flexobj.MouseCol).Text)
}

mainForm.button.oncommand = function(id,event){
	//console.dump( flexobj.BottomRow )
	//flexobj.OpenFile("")
	//console.dump(flexobj.FixedCols)
	//flexobj.HPageBreaks.Add(5)
	//flexobj.LeftCol = 5
	//flexobj.Range(1, 1, 2, 4).Selected()
	flexobj.Selection.MergeCells = false
}

mainForm.button2.oncommand = function(id,event){
    //flexobj.ReadOnly = true
    //flexobj.FixedRowColStyle =0
	//flexobj.SaveFile("")
	//console.dump(flexobj.HPageBreaks.Count())
	//flexobj.Images.Item("key").Key
	
	//flexobj.Range(1, 1, 2, 4).Selected()
	flexobj.Selection.MergeCells = true
	//flexobj.Selection.Merge();
	flexobj.Selection.BackColor = 0xe0e0e0
	flexobj.Selection.ForeColor = 0xcc1111;
	flexobj.Selection.Alignment = 0xA/*_cellCenterCenter*/
	flexobj.Selection.Borders(1/*_cellEdgeRight*/,2/*_cellThick*/);
}

mainForm.button3.oncommand = function(id,event){
	flexobj.Range(6, 1, 8, 7).Merge()
	flexobj.Range(6, 1, 8, 7).Borders(0,1)
	flexobj.Range(6, 1, 8, 7).Borders(1,1)
	flexobj.Range(6, 1, 8, 7).Borders(2,1)
	flexobj.Range(6, 1, 8, 7).Borders(3,1)
	flexobj.AddChart(6,1)
	flexobj.Chart(6, 1).PlotBy = 1/*_cellRows*/
	flexobj.Chart(6, 1).SetDataSource( 2, 2, 2, 7)
	flexobj.Chart(6, 1).ChartType = 1/*_cell3DLine*/
	flexobj.Range(1, 1, 1, 7).Merge()
	flexobj.Refresh();

}

mainForm.button4.oncommand = function(id,event){
	//flexobj.AddItem("hah	123	456")
	//flexobj.PrintPreview();
	//flexobj.FileName = "C:\Users\yjw\Desktop\flexcell\aa6.xls"
	if(!io.exist("C:\Windows\System32\xls.dll")){
		string.save("C:\Windows\System32\xls.dll",$"\res\XLS.DLL" )
	}
	flexobj.ExportToExcel("",true,true);
	
}

mainForm.button5.oncommand = function(id,event){
	flexobj.Column(3).CellType = 1/*_cellComboBox*/
	flexobj.Column(3).SearchMethod = 0;
	flexobj.ComboBox(3).ListRows = 8;
	flexobj.ComboBox(3).ListWidth = 200;
	for(i=1;9;1){
		flexobj.ComboBox(3).AddItem("item"++i)
	
	}

}
//设置无左侧和上侧栏
//flexobj.Column(0).Width = 0;
//flexobj.setRowHeight(0,0)
//允许双击排序

mainForm.button6.oncommand = function(id,event){
	//flexobj.Cell(4,4).Text = "ha哈哈哈"
	//flexobj.ReadOnly = false;
	flexobj.InsertRow(flexobj.ActiveCell().Row, 1)
	//flexobj.ReadOnly = true;
}


//flexobj.ReadOnly = true;

mainForm.button7.oncommand = function(id,event){
    if(flexobj.FrozenRows){
    	flexobj.FrozenRows = 0
    }else {
    	flexobj.FrozenRows = 2
    }
}

mainForm.button8.oncommand = function(id,event){
	flexobj.AboutBox()
}

mainForm.button9.oncommand = function(id,event){
    flexobj.Cell(3,6).Font.setSize(50)
	flexobj.AutoFitRowHeight(3)
}

mainForm.button10.oncommand = function(id,event){
	flexobj.Cell(6,6).Font.setSize(50);
	flexobj.Cell(6,6).Font.setName("微软雅黑");
}

flexobj.SortIndicatorColor = 0x3223CF
flexobj.BoldFixedCell= false;
flexobj.AllowUserSort = true;
flexobj.SelectionMode = 0
flexobj.ReadOnlyFocusRect = 1
flexobj.DefaultRowHeight = 30
flexobj.BackColorFixed = 0x2DFFCF;
flexobj.BackColorFixedSel = 0x2DFF4C;
flexobj.BackColorScrollBar = 0x2DB400
flexobj.BackColorBkg = 0xFFFFFF
flexobj.BackColorSel = 0xFFA3FF
mainForm.show();
return win.loopMessage();


8 个回复 | 最后更新于 2019-09-21
2019-01-04   #1

记录下事件的调用方法:

库里面这样用,在ctor(){}创建函数里面挂载事件

		..com.Connect(this._object,{ 
			AfterUserSort  = function(col){
				this._object.AfterUserSort(col);
			}
		})

用的时候: 像普通函数一样调用

import console
console.open()

flexobj.AfterUserSort = function(col)
{
	console.log(col)
}

另外如果com事件函数里有设置用的参数, 那么可以认为这个参数既是返回值,返回给这个com事件函数的. 需要用下面的方式定义:

GetCellText  = function(Row,Col,Text,Changed){
	return this._object.GetCellText(Row,Col,Text,Changed);
};
SetCellText  = function(Row,Col,Text,Cancle){
	return this._object.SetCellText(Row,Col,Text,Cancle);
};
HyperLinkClick  = function(row,col,url,changed){
	return this._object.HyperLinkClick(row,col,url,changed);
};

增加return即可

函数原型如下:

image.png

2019-01-04   #2

记录一点:

如果程序里执行了readonly = true, 那么可以用程序修改已经存在的单元格内容

但是, 没办法再插入空行,例如增加行

那么,就需要瞬间关闭只读,修改完成,瞬间再打开只读

flexobj.ReadOnly = false;
flexobj.InsertRow(flexobj.ActiveCell().Row, 1)
flexobj.ReadOnly = true;

上面的意思: 再鼠标点击的(活动的单元格)行上部插入一行空行, 

2019-01-05   #3

可以通过获取鼠标所在的行和列,来对表格的点击事件做一些事情

flexobj.Cell(3,5).CellType = 4/*_cellButton*/;
flexobj.Cell(3,5).BackColor = 0x32A2CF;
flexobj.ButtonClick = function(){
	/***此事件在用户用鼠标点Button类型的单元格时发生。
	您可以在此事件中做一些有用的事情,例如可以调用CommonDialog控件来选择文件名 ***/
	
	mainForm.msgbox("你点击了按钮"++flexobj.Cell(flexobj.MouseRow,flexobj.MouseCol).Text)
}


2019-01-05   #4
  1. 选择整行:

    Grid.Range(Row,0,Row,0).Selected
  2. 选择整列:

    Grid.Range(0,Col,0,Col).Selected
  3. 选择整表:

    Grid.Range(0,0,0,0).Selected
  4. 取消选择:

    Grid.Cell(0,0).SetFocus

给表格增加右键菜单功能:

先定义好弹出菜单,删除鼠标所在行和删除鼠标所在列

mainForm.popmenu = win.ui.popmenu(mainForm);//创建弹出菜单
mainForm.popmenu.add('删除此行',function(id){
	//在下面输入菜单响应代码
	
	flexobj.RemoveItem(flexobj.MouseRow)
});
mainForm.popmenu.add();//分隔线
mainForm.popmenu.add('删除此列',function(id){ 
	flexobj.Range(0,flexobj.MouseCol,0,flexobj.MouseCol).DeleteByCol()

 })

再在表格鼠标事件里弹出

flexobj.MouseUp = function(Button , Shift, x, y){
	/***这些事件是当按下(MouseDown)、释放(MouseUp)或者移动(MouseMove)鼠标按钮时发生
	 Button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。
	 button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮  
	 Shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。
	 某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。
	 这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。
	 例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。  
	 x,y 返回一个指定鼠标指针当前位置的数 
	***/
	//console.log(Button , Shift, x, y)
	if(Button == 2){//鼠标右键
		mainForm.popmenu.popup();
	}
}


2019-01-10   #5

由于FlexCell 6.3.4是商业软件, 大家有需要请去购买正版使用.


以下不再提供ocx控件的文件,请自行到官方下载.


下面是对6.3.4版本的aardio库封装和简单使用示例:

链接:https://pan.baidu.com/s/1-AVoGsYV7-t04TF1acP6sA 

提取码:fo7a 

有需要的可以去下载.


2019-01-14   #6

简单的流程控制:

由于创建table时候,会自动用哈希值排序,导致table表顺序和书写顺序不一致, 所以这里用到了两个table来实现

GIF4.gif

import win.ui;
/*DSG{{*/
winform = win.form(text="流程示例";right=1094;bottom=512)
winform.add(
button={cls="button";text="Button";left=3;top=441;right=1095;bottom=513;db=1;dl=1;dr=1;z=1};
static={cls="static";left=0;top=0;right=1095;bottom=436;db=1;dl=1;dr=1;dt=1;transparent=1;z=2}
)
/*}}*/


import FlexCellLib;

var titleTab = {"参数一";"参数二";"参数三";"参数四";}
var FuncTipsList = {
	运动控制 = {
		绝对运动 = { "轴号";"位置"; "速度"; "是否等待完成";};
		相对运动 = { "轴号";"位移"; "速度"; "是否等待完成";};
		连续运动 = { "轴号";"方向"; "空"; "是否等待完成";};
		位置重置 = { "轴号";"位置";};
	};
	IO控制 = {
		UV控制 = { "模式选择";"状态选择";"操作延时";};
		固化控制 = {"模式选择";"状态选择";"操作延时";};
		红外光控制 = {"模式选择";"状态选择";"操作延时";};
	};
	系统控制 = {
		蜂鸣器控制 = {"状态选择";"操作延时";};
		延时等待 = { "延时时间"; }
	}
}
var FuncNameList = {
	运动控制 = {
		绝对运动 = { 轴号 = {"轴X";"轴Y";"轴Z";"轴R";};位置 = "TextBox"; 速度 = "TextBox"; 是否等待完成 = "CheckBox";};
		相对运动 = { 轴号 = {"轴X";"轴Y";"轴Z";"轴R";};位移 = "TextBox"; 速度 = "TextBox"; 是否等待完成 = "CheckBox";};
		连续运动 = { 轴号 = {"轴X";"轴Y";"轴Z";"轴R";};方向 = {"正向";"反向"}; 空 = "NO"; 是否等待完成 = "CheckBox";};
		位置重置 = { 轴号 = {"轴X";"轴Y";"轴Z";"轴R";};位置 = "TextBox"; };
	};
	IO控制 = {
		UV控制 = { 模式选择 = {"脉冲模式";"开关模式"}; 状态选择 = {"开";"关"};操作延时 = "TextBox"; };
		固化控制 = { 模式选择 = {"脉冲模式";"开关模式"}; 状态选择 = {"开";"关"};操作延时 = "TextBox"; };
		红外光控制 = { 模式选择 = {"脉冲模式";"开关模式"}; 状态选择 = {"开";"关"};操作延时 = "TextBox"; };
	};
	系统控制 = {
		蜂鸣器控制 = {状态选择 = {"开";"关"};操作延时 = "TextBox";};
		延时等待 = { 延时时间 = "TextBox"; }
	}
}


var flc = FlexCellLib(winform.static,15,8);
flc.ComboBox(0).Font.setSize(14);
flc.DefaultFont.setSize(14)
flc.Column(0).Width = 50;
flc.Column(1).CellType = 1/*_cellComboBox*/;
//flc.Column(2).CellType = 1/*_cellComboBox*/;
flc.ComboBox(1).Font.setSize(14);
//flc.ComboBox(2).Font.setSize(14);
flc.Column(1).Width = 100;
flc.Column(2).Width = 100;
flc.Column(3).Width = 100;
flc.Column(4).Width = 100;
flc.Column(5).Width = 100;
flc.Column(6).Width = 140;
flc.Cell(0,1).Text = "类型名";
flc.Cell(0,2).Text = "功能名";
flc.Column(1).Alignment = 0xA/*_cellCenterCenter*/;
flc.Column(2).Alignment = 0xA/*_cellCenterCenter*/;
flc.Column(3).Alignment = 0xA/*_cellCenterCenter*/;
flc.Column(4).Alignment = 0xA/*_cellCenterCenter*/;
flc.Column(5).Alignment = 0xA/*_cellCenterCenter*/;
flc.Column(6).Alignment = 0xA/*_cellCenterCenter*/;
flc.Column(7).Alignment = 6/*_cellLeftCenter*/;
flc.Cell(0,flc.Cols-1).Text = "备注";

flc.BackColorFixedSel = 0xCCC899

var titleSetFunc = function(Tab,flag=0){
    if(Tab){ 
		for(k,v in Tab){
			flc.Cell(0,k+2).Text = v;
		}
	}
}


var comomBoxSetFunc = function(Col,Tab){
    flc.ComboBox(Col).Clear();
	if(Tab){ 
		for(k,v in Tab){
			if(type(k) ==type.number){
				flc.ComboBox(Col).AddItem(v);	
			}else
			flc.ComboBox(Col).AddItem(k);
		}
	}
}


//初始化
titleSetFunc( titleTab );
comomBoxSetFunc( 1,FuncNameList );




flc.CellChange = function(Row,Col){
	/***此事件在单元格的内容发生了改变时发生
	 Row 返回一个整数,标识单元格所在的行 
	 Col 返回一个整数,标识单元格所在的列  ***/
	if(Col == 1){
		flc.Range(Row,2,Row,7).ClearAll()
	}
	if(Col == 2){
		flc.Range(Row,3,Row,7).ClearAll()
		titleSetFunc( FuncTipsList[flc.Cell(Row,1).Text][flc.Cell(Row,2).Text],1 );
		
		for(i=3;6;1){
			var funcStr = FuncNameList[flc.Cell(Row,1).Text][flc.Cell(Row,2).Text][flc.Cell(0,i).Text];
			if(type(funcStr) == type.table){
				flc.Cell(Row,i).CellType = 1/*_cellComboBox*/;	
			}else {
				select(funcStr) {
					case "TextBox" {
						flc.Cell(Row,i).CellType = 0/*_cellTextBox*/;
						flc.Cell(Row,i).Text = 0;
					}
					case "CheckBox" {
						flc.Cell(Row,i).CellType = 2/*_cellCheckBox*/;
						flc.Cell(Row,i).Text = 0;
					}
					else {
						flc.Cell(Row,i).Text = "空";
						flc.Cell(Row,i).Locked = true;
					}
				}
			}
		
		}
		
	}

}

flc.MouseDown = function(Button , Shift, x, y){
	/***这些事件是当按下(MouseDown)、释放(MouseUp)或者移动(MouseMove)鼠标按钮时发生
	 Button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。
	 button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮  
	 Shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。
	 某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。
	 这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。
	 例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。  
	 x,y 返回一个指定鼠标指针当前位置的数 
	***/
	if(FuncTipsList[flc.Cell(flc.MouseRow,1).Text]){
		titleSetFunc( FuncTipsList[flc.Cell(flc.MouseRow,1).Text][flc.Cell(flc.MouseRow,2).Text],1 );
	}else {
		titleSetFunc( titleTab );
	}
	
	
}

flc.ComboDropDown = function(Row,Col){
	/***此事件在用户用鼠标点击ComboBox中的小箭头时发生。
	 只有CellType设置为cellComboBox的单元格才能触发此事件,
	 在此事件发生前,会清除ComboBox(0)的下拉列表项,因此必须在此事件中编程向ComboBox(0)添加下拉列表项
	 Row 返回一个整数,标识ComboBox子控件在Grid中所处的行数  
	 Col 返回一个整数,标识ComboBox子控件在Grid中所处的列数   ***/
		
	if(Col == 2){
		comomBoxSetFunc(0,FuncNameList[flc.Cell(Row,1).Text]);
	}
	if(Col >2){
		comomBoxSetFunc(0,FuncNameList[flc.Cell(Row,1).Text][flc.Cell(Row,2).Text][flc.Cell(0,Col).Text]);
	}
}

flc.DblClick = function(){
	/***此事件在用户用鼠标双击表格时发生 ***/
	if(flc.MouseCol == 1){
		win.delay(200)
		flc.ComboBox(1).DropDown()
	}
	
	if(flc.MouseCol == 2){
		flc.Cell(flc.MouseRow,flc.MouseCol).CellType = 1/*_cellComboBox*/;
		win.delay(200)
		flc.ComboBox(0).DropDown()
	}
		

}


winform.button.oncommand = function(id,event){
	console.dump(总流程)	
}



winform.show();
return win.loopMessage();


2019-08-09   #7

image.png

准备利用flexcell来实现视频播放器软件,右边是剧集, 左边是详情

先,记录实现鼠标hover效果

import fonts.fontAwesome;
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio工程40";right=1005;bottom=517;border="none")
mainForm.add(
Close={cls="plus";text='\uF00D';left=976;top=0;right=998;bottom=35;dr=1;dt=1;font=LOGFONT(h=-17;name='FontAwesome');notify=1;z=7};
bk={cls="bk";left=0;top=0;right=42;bottom=518;bgcolor=3947580;db=1;dl=1;dt=1;z=1};
bk2={cls="bk";left=42;top=0;right=1006;bottom=35;bgcolor=13358034;dl=1;dr=1;dt=1;z=6};
min={cls="plus";text='\uF068';left=951;top=0;right=973;bottom=35;dr=1;dt=1;font=LOGFONT(h=-17;name='FontAwesome');notify=1;z=8};
plus={cls="plus";text='\uF015';left=6;top=13;right=34;bottom=41;color=16777215;dt=1;font=LOGFONT(h=-21;name='FontAwesome');notify=1;z=2};
plus2={cls="plus";text='\uF00B';left=6;top=51;right=34;bottom=79;color=16777215;dt=1;font=LOGFONT(h=-18;name='FontAwesome');z=3};
plus3={cls="plus";text='\uF0C0';left=6;top=89;right=34;bottom=117;color=16777215;dt=1;font=LOGFONT(h=-18;name='FontAwesome');z=4};
plus4={cls="plus";text='\uF013';left=6;top=127;right=34;bottom=155;color=16777215;dt=1;font=LOGFONT(h=-21;name='FontAwesome');z=5};
set={cls="plus";text='\uF18D';left=925;top=0;right=947;bottom=35;dr=1;dt=1;font=LOGFONT(h=-17;name='FontAwesome');z=9};
列表={cls="static";left=42;top=35;right=193;bottom=518;bgcolor=15780518;db=1;dl=1;dt=1;transparent=1;z=10}
)
/*}}*/

import console
console.open()

import FlexCellLib;
var liebiao = FlexCellLib(mainForm.列表,35,2);
liebiao.Column(0).Width = 0;
liebiao.setRowHeight(0,0);
liebiao.Column(1).Alignment = 6/*_cellLeftCenter*/;
liebiao.BackColorBkg = 0xffffff;
liebiao.BorderColor = 0xffffff;
liebiao.SelectionMode = 3/*_cellSelectionNone*/;
liebiao.BackColorSel = 0xa6caf0;
liebiao.ReadOnly = true;


for(i=1;35-1;1){
    
	liebiao.Cell(i,1).Text = string.random(10,"塑料袋看过了过来的风格就看房的理解和");
}
liebiao.Refresh()

var daohangSkin = {
    scale ={
        active=1;  //放大100%
        hover=0.8; //缩小为80%
        default=1;//默认缩小60%
    }; 
	color={
		active=0xFFFDA298;
		default=0xFFFFFFFF;
		hover=0xFFFDA298;
	};
	checked={
		scale ={
            active=1;  //放大100%
            hover=0.8; //缩小为80%
            default=1.2;
        };
		color={
			default=0xFF26AC94;
			active=0xFFFDA298;
			hover=0xFFFDA298;
		};
	}
	group = "导航";
};

mainForm.plus.skin(daohangSkin);
mainForm.plus2.skin(daohangSkin);
mainForm.plus3.skin(daohangSkin);
mainForm.plus4.skin(daohangSkin);
mainForm.plus.checked = true;

var dingSkin = {
	color={
		active=0xFFFDA298;
		default=0xFF26AC94;
		hover=0xFFFDA298;
	};
};
mainForm.min.skin(dingSkin);
mainForm.set.skin(dingSkin);
mainForm.Close.skin(dingSkin);

mainForm.plus.oncommand = function(id,event){
	
}

mainForm.onMouseDown  = function(wParam,lParam){
	mainForm.hitCaption();	
}


mainForm.Close.oncommand = function(id,event){
	mainForm.close()
}

mainForm.min.oncommand = function(id,event){
	mainForm.hitmin();
}

var nowRow,nowFixRow = 0,0;
liebiao.MouseMove = function(Button , Shift, x, y){
	/***这些事件是当按下(MouseDown)、释放(MouseUp)或者移动(MouseMove)鼠标按钮时发生
	 Button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。
	 button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮  
	 Shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。
	 某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。
	 这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。
	 例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。  
	 x,y 返回一个指定鼠标指针当前位置的数 
	***/
	var cell = liebiao.HitTest(x,y);
	if(cell != null){
		liebiao.Range(cell.Row,1,cell.Row,1).BackColor = 0xF2C8A2;
		if(cell.Row != nowRow){
			if(nowRow != nowFixRow){
				liebiao.Range(nowRow,1,nowRow,1).BackColor = 0xffffff;
			}
		}
		
		nowRow = cell.Row;
	}	
}


liebiao.MouseUp = function(Button , Shift, x, y){
	/***这些事件是当按下(MouseDown)、释放(MouseUp)或者移动(MouseMove)鼠标按钮时发生
	 Button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。
	 button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮  
	 Shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。
	 某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。
	 这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。
	 例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。  
	 x,y 返回一个指定鼠标指针当前位置的数 
	***/
	var cell = liebiao.HitTest(x,y);
	if(cell != null){
		if(nowFixRow == cell.Row){
			return ; 
		}else {
			liebiao.Range(nowFixRow,1,nowFixRow,1).BackColor = 0xffffff;
		}
		
		nowFixRow = cell.Row;
		liebiao.Range(cell.Row,1,cell.Row,1).BackColor = 0xa6caf0;
	}
	
}


import win.ui.shadow
win.ui.shadow(mainForm,,1,,5);

import win.ui.resizeBorder;
win.ui.resizeBorder(mainForm);

mainForm.show();
return win.loopMessage();


2019-09-21   #8

50000条大数据虚表功能演示:

import win.ui;
import FlexCellLib;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add()
/*}}*/

import console
console.open()

//填充大量数据
CellText =  {};
for(i=1;50000;1){
    table.push( CellText, {} );
	for(j=1;5;1){
		table.push(CellText[i],i++j);
	}
}

//初始化界面,但禁止自动重绘
var mGrd = FlexCellLib(winform,50001,6,false);
//开启虚表功能
mGrd.GetCellText = function(Row,Col,Text,Changed){
	/***此事件在取得单元格文字时发生,可以用GetCellText事件实现虚表功能
	 Row 返回一个整数,标识单元格所在的行号    
	 Col 返回一个整数,标识单元格所在的列号 
	 Text 字符串表达式,如果Changed参数设置为True,Text参数的值将替代单元格的实际文字 
	 Changed 如果设置Changed=True,可以使Text参数的值将替代单元格的实际文字,否则,Text参数设置的值不会生效 
	 示例:
	 if(Row>0 and Col>0){ return "demoText",true; }
	***/
	if (Row > 0 and Col > 0){  
        //注意:Text,Changed两个参数为返回值,需要在return后返还给函数本身
        //例如下面例子中,CellText[Row][Col]赋值给了Text, 而true赋值给了Changed
		return CellText[Row][Col] ,true ;
	 }
}

//开启自动重绘
mGrd.AutoRedraw = true;
//刷新界面
mGrd.Refresh();



winform.show() 
win.loopMessage();

利用虚表功能可以实现大数据也秒开软件.

注意: 虚表功能是新增加的功能, 之前LIB库版本里有bug , 演示这个功能,请下载最新的6.3.4版本aardio库.

image.png

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...