FlexCell控件aar调用示例

By admin at 2018-12-31 • 1人收藏 • 6096人看过

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.chengxu.xyz/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();


11 个回复 | 最后更新于 2020-01-02
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

更详细的 [图表流程控制] 源码工程: https://www.chengxu.xyz/t/512


简单的流程控制:

由于创建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

2019-12-26   #9

谢谢提供这么好的学习教程!

2019-12-31   #10

虚表功能的另外一种写法,感谢netfox提供

上面return的写法会打断程序的继续执行,下面这种写法不会

FEAF8AD7-7321-4218-91C8-84A4CE384CF6.png


2020-01-02   #11

都是非常实用的案例,收藏谢谢!!

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...