您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > vsFlexGrid常用功能介绍
vsFlexGrid常用功能介绍vsFlexGrid是ComponentOne公司的一个ActiveX控件,它与MS的MSHFlexGrid控件在功能上是兼容的,即MSHFlexGrid所具备的属性和方法,它也都具备,只有少数几个属性名称略有不同,使用MSHFlexGrid编写的程序,只需要作较小的调整就可以转换过来;但相比MSHFlexGrid,vsFlexGrid多了很多功能,它的属性和事件非常丰富,可以实现非常灵活的控制和快捷的编码,下面主要对一些常用和实用的功能进行介绍:一、数据批量操作l利用Cell属性批量存取数据比如要清除一块区域的文本,或者设置一块区域的字体,不用循环处理,只需要一条语句就可以完成,如:vsFlexGrid.Cell(flexcpText,1,1,5,5)=“”‘设置(1,1)-(5,5)这块单元格区域的文本都为空vsFlexGrid.Cell(flexcpFontBold,1,1,5,5)=True‘设置(1,1)-(5,5)这块单元格区域的字体都为粗体类似还可以设置的有单元格对齐、图片、颜色等。而语句:strText=vsFlexGrid.Cell(flexcpText,1,1,5,5)返回一个用vbTab间隔列,vbCr间隔行的字符串,当然也可以反过来赋值,这样该区域内的每个单元格都可以赋不同的值。l使用-1对所有行列进行处理RowHeight(-1)=300‘将所有行的高度设置为300Twip,可以类似使用的属性有:RowHidden,ColWidth,ColHidden,ColAlignment等二、大量数据存放vsFlexGrid可以存放数据的地方有:CellText,CellData,ColData,RowData除了CellText是String类型外,其他都是Variant类型,也就是说你可以将任意类型的数据存放在表格中,比如日期(Date),类型变量(Type),集合(Collection),数组,记录集(RecordSet),以及各种对象(Object),这对于关联数据比较多的程序非常有用。注意:vsFlexGrid.Cell(flexcpText,1,1)=rsData!Name实际是存放了一个ADO.Field对象,应该使用CStr(rsData!Name)对类型进行明确。三、编辑特性vsFlexGrid的单元格是可以编辑的,并且有以下几种编辑形式:l文本框:只要Editable设置为可编辑,每个单元格缺省就是TextBox编辑样式l下拉框:设置当前单元格的ComboList属性或者指定列的ColComboList属性,即可实现VB.ComboBox样式的单元编辑,而且下拉界面中可以显示多列,如:vsFlexGrid.ComboList=_“|#100*1;张三”&vbTab&“男”&vbTab&“28岁”&_“|#101;李四”&vbTab&“男”&vbTab&“29岁”&_“|#102;王五”&vbTab&“男”&vbTab&“30岁”其中”|”间隔的是各行数据,vbTab间隔的是各列数据;第1个”|”表示下拉框可以输入,”#”后面的是每行的ItemData,第一个ItemData后面”*1”表示是第1列的数据在选择后显示在ComboBox中。l复选框:设置指定列的ColDataType=flexDTBoolean,或者指定当前元单格的CellChecked属性即可。l选择按钮:设置当前单元格的ComboList属性或者指定列的ColComboList属性为”…”即可,主要配合CellButtonClick事件使用。四、界面特性1)边框除了表格线之外,vsFlexGrid还可以类似Excel一样,设置单元格式的边框线条,包括颜色、粗细,有无:VSFlexGrid.CellBorderColorAsOLE_COLOR,LeftAsInteger,TopAsInteger,RightAsInteger,BottomAsInteger,VerticalAsInteger,HorizontalAsInteger2)自动行高,列宽使用AutoSize方法,可以使列宽、或者行高根据单元格的内容进行自适应调整。其中列宽也可以通过双击表头进行自适应调整。3)树形缩进(TreeList)通过设置表格行的IsSubtotal、RowOutlineLevel属性,可以实现树形风格的缩进层次样式,这样vsFlexGrid就可以实现TreeView和ListView的结合。4)自绘通过设置OwnerDraw属性,可对实现对单元格内容的自绘处理,主要结合DrawCell事件进行:DrawCell(ByValhDCAsLong,ByValRowAsLong,ByValcolAsLong,ByValleftAsLong,ByValtopAsLong,ByValrightAsLong,ByValbottomAsLong,doneAsBoolean)5)背景可以为vsFlexGrid设置背景图,背景图相对单元格式内容是透明的,并且可以设置对齐和平铺属性。6)列排序,行、列拖动设置vsFlexGrid.ExplorerBar属性,就可以实现类似Windows的资源管理器一样,点击列头进行列数据排序,或者用鼠标拖动改变列、行的顺序。7)冻结行列除了固定行列头外,还可以类似Excel一样,通过vsFlexGrid.FrozenCols/FrozenRows设置冻结行列,冻结行列在滚动时,和固定行列是一样的效果,但是光标可以进入到冻结行列范围内的单元格中去。五、丰富的事件控制:vsFlexGrid一共有50多个事件,这些事件主要用于编辑和界面控制,在使用过程中,经常可能会发现某个事件特别有用;因此充分利用这些事件,可以很方便地实现很多功能,下面是它支持的事件及对应列表,粗体是较常用的,从定义基本就可以看出它的作用;详细的事件说明,可以查看帮助。lAfterCollapse(ByValRowAsLong,ByValStateAsInteger)lAfterDataRefresh()lAfterEdit(ByValRowAsLong,ByValColAsLong)lAfterMoveColumn(ByValColAsLong,PositionAsLong)lAfterMoveRow(ByValRowAsLong,PositionAsLong)lAfterRowColChange(ByValOldRowAsLong,ByValOldColAsLong,ByValNewRowAsLong,ByValNewColAsLong)lAfterScroll(ByValOldTopRowAsLong,ByValOldLeftColAsLong,ByValNewTopRowAsLong,ByValNewLeftColAsLong)lAfterSelChange(ByValOldRowSelAsLong,ByValOldColSelAsLong,ByValNewRowSelAsLong,ByValNewColSelAsLong)lAfterSort(ByValColAsLong,OrderAsInteger)lAfterUserFreeze()lAfterUserResize(ByValRowAsLong,ByValColAsLong)lBeforeCollapse(ByValRowAsLong,ByValStateAsInteger,CancelAsBoolean)lBeforeDataRefresh(CancelAsBoolean)lBeforeEdit(ByValRowAsLong,ByValColAsLong,CancelAsBoolean)lBeforeMouseDown(ByValButtonAsInteger,ByValShiftAsInteger,ByValXAsSingle,ByValYAsSingle,CancelAsBoolean)lBeforeMoveColumn(ByValColAsLong,PositionAsLong)lBeforeMoveRow(ByValRowAsLong,PositionAsLong)lBeforePageBreak(ByValRowAsLong,BreakOKAsBoolean)lBeforeRowColChange(ByValOldRowAsLong,ByValOldColAsLong,ByValNewRowAsLong,ByValNewColAsLong,CancelAsBoolean)lBeforeScroll(ByValOldTopRowAsLong,ByValOldLeftColAsLong,ByValNewTopRowAsLong,ByValNewLeftColAsLong,CancelAsBoolean)lBeforeScrollTip(ByValRowAsLong)lBeforeSelChange(ByValOldRowSelAsLong,ByValOldColSelAsLong,ByValNewRowSelAsLong,ByValNewColSelAsLong,CancelAsBoolean)lBeforeSort(ByValColAsLong,OrderAsInteger)lBeforeUserResize(ByValRowAsLong,ByValColAsLong,CancelAsBoolean)lCellButtonClick(ByValRowAsLong,ByValColAsLong)lCellChanged(ByValRowAsLong,ByValColAsLong)lChangeEdit()lClick()lComboCloseUp(ByValRowAsLong,ByValColAsLong,FinishEditAsBoolean)lComboDropDown(ByValRowAsLong,ByValColAsLong)lCompare(ByValRow1AsLong,ByValRow2AsLong,CmpAsInteger)lDblClick()lDragDrop(SourceAsControl,XAsSingle,YAsSingle)lDragOver(SourceAsControl,XAsSingle,YAsSingle,StateAsInteger)lDrawCell(ByValhDCAsLong,ByValRowAsLong,ByValColAsLong,ByValLeftAsLong,ByValTopAsLong,ByValRightAsLong,ByValBottomAsLong,DoneAsBoolean)lEndAutoSearch()lEnterCell()lError(ByValErrorCodeAsLong,ShowMsgBoxAsBoolean)lFilterData(ByValRowAsLong,ByValColAsLong,ValueAsString,ByValSavingToDBAsBoolean,WantThisColAsBoolean)lGetHeaderRow(ByValRowAsLong,HeaderRowAsLong)lGotFocus()lKeyDown(KeyCodeAsInteger,ShiftAsInteger)lKeyDownEdit(ByValRowAsLong,ByValColAsLong,KeyCodeAsInteger,ByValShiftAsInteger)lKeyPress(KeyAsciiAsInteger)lKeyPressEdit(ByValRowAsLong,ByValColAsLong,KeyAsciiAsInteger)lKeyUp(KeyCodeAsInteger,ShiftAsInteger)lKeyUpEdit(ByValRowAsLong,ByVal
本文标题:vsFlexGrid常用功能介绍
链接地址:https://www.777doc.com/doc-2866794 .html