msflexgrid允许大选择_VB中MsFlexGrid控件的使用细则 -

GridColorUnpopulatedOle_Color设置/返回网格UNPOPULATED区域间的颜色 GrigLineEnum定义网格单元间的线的类型

GrigLinesBandArray/Enum定义网格各BAND间的线的类型 GrigLinesFixedEnum定义网格固定单元的线的类型

GrigLinesHeaderArray/Enum定义网格各头部间的线的类型

GrigLinesIndentArray/Enum定义网格INDENT单元间的线的类型

GrigLinesUnpopulatedEnum定义网格UNPOPULATED区域间的线的类型 GrigLinesWidthInteger设置/返回网格单元间的线的宽度

GrigLinesWidthBandArray/Integer设置/返回网格各BAND间的线的宽度 GrigLinesWidthFixedInteger设置/返回网格固定单元间的线的宽度 GrigLinesWidthHeaderArray/Integer设置/返回网格各头间的线的宽度

GrigLinesWidthIndentArray/Integer设置/返回网格INDENT单元间的线的宽度 GrigLinesWidthUnpopulatedInteger设置/返回网格UNPOPULATED区域间的宽度 HieghtEnum定义如何以及何时高亮度显示网格的选中单元 LeftColLong网格最械的可见列

MergeCellsEnum设置/返回一个值表明如何及何时将有相同内容的记录进行合并 MergeColARRAY/BOOLEN设置/返回一个值表明哪些列可以将内容合并 MergeRowARRAY/BOOLEN设置/返回一个值表明哪些行可以将内容合并 MouseColLong返回鼠标光标的列坐标位置 MouseRowLong返回鼠标光标的行坐标位置 PictureStdPicture返回MSHFLEXGRID的控件快照 PictureTypeEnum设置/返回PICTURE类型

RedrawBoolean设置/返回一个值,表明MSHFLEXGRIDR控件是否在每个改变后重画 RowLong设置/返回当前单元的垂直坐标

RowDataArray/Long为各行设置/返回任意的值,以合在代码中通过这些值确定行 RowExpandableBoolean定义当前行是否可以展开

RowExpandedBoolean返回一个值表明当前行是否展开 RowHeightArray/Long设置/返回各行的高度

RowHeightMinLong设置/返回网格中行的最小高度

RowIsVisibleARRAY/BOOLEN设置/返回一个值,表明某个特定列是否可见 RowPosArray/Long返回给定行左上角和MSHFLEXGRID控件左上角的距离 RowPositionArray/Long设置某个网格行的位置

RowsLong返回网格的行的总数或者或BAND的行的总数 RowSelLong设置/返回一个范围的单元的起始行

RowSizingModeEnum设置/返回一个值表明对一行的设置是影响网格的所有行还是只影响被调整的行

ScrollBarsEnum设置/返回一个值表明MSHFLEXGRID控件的滚动条类型

ScrollTrackBoolean设置/返回一个值表明网格内容是在用户移动滚动条时随着改变还是滚动结束后改变

SelectionModeEnum设置/返回一个值表明MFHFLEXGRID控件允许的选择类型. SortEnum根据某些村准备设置排序的值

TextString设置/返回一个单元或一个范围内单元的文本内容

TextArrayarray/string不改变ROW,COL属性,设置/返回任意单元的文本内容 TextMatrixarray/string设置/返回某个选定行,列的单元的文本内容

TextStyleEnum设置/返回网格通常单元的3D文本风格

TextStyleBandArray/Enum设置/返回网格BAND的3D文本风格 TextStyleFixedEnum设置/返回网格各固定行的3D文本风格

TextStyleHeaderArray/Enum设置/返回网格各头部的3D文本风格 TopRowLong设置/返回网格最上面的可见行

VersionInteger返回正在使用MSHFLEXGRID控件的版本

WordWrapBoolean定义当到达单元的边界时,网格的单元的内容是否WRAP

2) MSFLEXGRID控件的重要方法

方法说明

AddItem向网格中加入一新行 Clear清除网格中的内容

ClearStructure清除网格的结构(映射信息) CollapseAll折叠网格的某个特定的所有行 ExpandAll展开网格的某个特定的所有行 RemoveItem从网格中清除一行

方法AddItem和RemoveItem可以用来向网格中加入或删除行(BANDS).如果折叠或展开某个BAND的所有行,则可以使用COLLAPSEALL和EXPAANDALL方法.

方法CLEAR可以清除网格中的内容,但不影响网格的行,列数,如果要清除网格的结构,包括顺序及网格各列的名称,应当使用ClearStructure方法.

3) MSFELXGRID的控件的主要事件

Collapse用户折叠了网格的一行

Compare当SORT属性被设置为CUSTOMERSORT,允许用户定义排序过程 EnterCell当一个新的单元成为当前活动单元时(获得) Expand用户展开了网格的一行

LeaveCell当一个新单元成为当前活动单元前(离开) RowColChange当一个新单元成为当前活动单元时

Scroll用户用键盘,滚动条滚动网格的内容或网格的内容由程序滚动时 SelChangeEvent一个新范围内的单元被选中

EnterCell, LeaveCell, RowColChange事件相互联系,因为它们都在当一个新单元成为当前活动单元时被激发,实际上这些事件的顺序是:LeaveCell, EnterCell然后是RowColChange.

Collapse和Expand事件在用户折叠或者展开网格的一行(BAND)时被激发.属性ROW和COL可以用来确定用户折叠或者展开的单元.

当SORT属性设置为9时,对网格的每两行发生一次COMPARE事件,用户排序方法使你可以选择按照午任意列或单元对行排序.注意,使用这种排序方式的速度会慢于BUILD-IN排序.

不论采用何种方式,只要对网格进行滚动时,SCROLL事件就会被激发.当SCROLLTRACK属性设

置为TRUE时,如果用户用鼠标拖动或滚动时,该事件也被激发,如果SCROLLTRACK属性被设置为FALSE时,SCROLL事件只在拖动结束后激发一次.

当选择单元格变化时, SelChangeEvent事件会被激发,对选择的单元范围的改变,可以通过用户操作或程序代码来实现.

3应用举例

在MSFLEXGRID控件中每一个CELL格的内容是不可以由用户直接编辑的但是我们可以通过一些小技巧来方便的实现这编辑功能来扩展MSFLEXGRID的应用(在实际应用中这是很常用的功能)。

你只需按下面的做即可轻松实现编辑MSFLEXGRID控件数据的功能

例在窗体上放一文本框text1,和一MSFLEXGRID控件flexgrid1

加入下例代码

Private Sub Form_Load()

Text1.Move -10000, -10000, 1, 1 End Sub

Private Sub MSFlexGrid1_EnterCell() MSFlexGrid1.CellBackColor = vbBlue MSFlexGrid1.CellForeColor = vbWhite Text1.Text = MSFlexGrid1.Text Text1.SelStart = 0

Text1.SelLength = Len(Text1.Text) End Sub

Private Sub MSFlexGrid1_LeaveCell() MSFlexGrid1.CellBackColor = vbWhite MSFlexGrid1.CellForeColor = vbBlue End Sub

Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Text1.SetFocus End Sub

Private Sub Text1_Change() MSFlexGrid1.Text = Text1.Text End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode

Case vbKeyLeft, vbKeyRight, vbKeyUp, vbKeyDown KeyCode = 0 End Select End Sub 又如:

msflexgrid不能直接编辑,用时很不方便,不看了很多有关msflexgrid的例子,在上面放一文本框,让msflexgrid实现可以编辑功能,在此,我先谢谢各位帮助我学习的人! 现我做的msflexgrid可以:

1、在msflexgrid中可以直接录入数据; 2、用方向键自由移动焦点;

3、在picture图片框中进行打印预览,进行打印输出,导出到excel;

4、用msflexgrid的合并功能制作表头(本人认为作为报表表头还真不错); 5、记录中插入一行,删除一行; Option Explicit

Dim I As Integer, J As Integer

Private Sub Command1_Click() '预览 Form2.Pic.Picture = MSFlexGrid1.Picture Form2.Show Form1.Hide End Sub

Private Sub Command2_Click() '打印 Printer.PaintPicture Form2.Pic.Picture, 0, 0 End Sub

Private Sub Form_Activate()

I = MSFlexGrid1.Row '单元格行 J = MSFlexGrid1.Col '单元格列 Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(J) + 20 ' 文本的位置 Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(I) + 20

Text1.Width = MSFlexGrid1.CellWidth ' 文本的大小 Text1.Height = MSFlexGrid1.CellHeight Text1.Visible = True

Text1 = MSFlexGrid1.TextMatrix(I, J) Text1.SelStart = 0

Text1.SelLength = Len(Text1) Text1.SetFocus End Sub

Private Sub MSFlexGrid1_Click()

I = MSFlexGrid1.Row '单元格行 J = MSFlexGrid1.Col '单元格列

Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(J) + 20 ' 文本的位置 Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(I) + 20

Text1.Width = MSFlexGrid1.CellWidth ' 文本的大小 Text1.Height = MSFlexGrid1.CellHeight Text1.Visible = True

Text1 = MSFlexGrid1.TextMatrix(I, J) Text1.SelStart = 0

Text1.SelLength = Len(Text1) Text1.SetFocus End Sub

Private Sub Form_Load()

MSFlexGrid1.TextMatrix(0, 1) = \编号\ MSFlexGrid1.TextMatrix(0, 2) = \名称\ MSFlexGrid1.TextMatrix(0, 3) = \单位\ MSFlexGrid1.TextMatrix(0, 4) = \单价\End Sub

Private Sub MSFlexGrid1_GotFocus() '重新让文本获得焦点 If J < MSFlexGrid1.Width / MSFlexGrid1.CellWidth - 3 Then Call MSFlexGrid1_Click Else

Call MSFlexGrid1_Click End If End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then

Call MSFlexGrid1_Click End If End Sub

Private Sub Text1_Change()

MSFlexGrid1.TextMatrix(I, J) = Text1 End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) '文本失去焦点,响应方向健 If KeyCode = vbKeyUp Then MSFlexGrid1.Col = J If I > 0 Then

MSFlexGrid1.Row = I - 1 Else

MSFlexGrid1.Row = I End If

MSFlexGrid1.SetFocus

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值