FlexCell控件aar调用示例
Flexcell是个表格控件, 很强大, 一直都不知道这类的表格控件在软件里面干嘛用...
表格一般不是都有现成的excel用吗?.....嵌入到自己的软件里做什么呢....
如果只是单纯的展示数据, 那么listview足够了.
FlexCell是一款美观、方便、易用的电子表格控件,附带FlexCell表格设计器,提供图表、虚表、打印预览、打印、排序等功能
2019/01/04更新:
第一版FlexCell的aardio调用库完成
本库基于v4.4.0版本构建 , 请勿用于商业用途 , 商业使用请购买正版使用 , FlexCell官方网址:http://www.grid2000.com/cn/
FlexCell为商业控件, 请支持并到官方购买正版, 然后使用下面提供的库进行调用:
针对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();
可以通过获取鼠标所在的行和列,来对表格的点击事件做一些事情
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) }
选择整行:
Grid.Range(Row,0,Row,0).Selected
选择整列:
Grid.Range(0,Col,0,Col).Selected
选择整表:
Grid.Range(0,0,0,0).Selected
取消选择:
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(); } }
更详细的 [图表流程控制] 源码工程: https://www.chengxu.xyz/t/512
简单的流程控制:
由于创建table时候,会自动用哈希值排序,导致table表顺序和书写顺序不一致, 所以这里用到了两个table来实现
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();
准备利用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();
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库.
登录后方可回帖
记录下事件的调用方法:
库里面这样用,在ctor(){}创建函数里面挂载事件
用的时候: 像普通函数一样调用
另外如果com事件函数里有设置用的参数, 那么可以认为这个参数既是返回值,返回给这个com事件函数的. 需要用下面的方式定义:
增加return即可
函数原型如下: