您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页VB中MsFlexGrid控件的使用细则

VB中MsFlexGrid控件的使用细则

来源:意榕旅游网
VB中MsFlexGrid控件的使用细则

Dim MSHFlexGrid1 Set

MSHFlexGrid1

=

ScreenItems(\"MSHFl

exGrid1\")

MSHFlexGrid1.Rows=5 '#设置总行数

MSHFlexGrid1.Cols =5 '#设置总列数

MSHFlexGrid1.TextMatrix(0,0)=\"ID\" '#设置标题MSHFlexGrid1.TextMatrix(0,1)=\"NAME\" '#设置标题NAME

Dim j

For j = 1 To 10

MSHFlexGrid1.TextMatrix(j,0)=CStr(j)

MSHFlexGrid1.TextMatrix(j,1)=\"User_\" & CStr(j) Next

1.VB中MsFl exGrid控件的使用细则 >> 将文本赋值给MsFlexGrid的单元格 MsFlexGrid.TextMatrix(3,1)=”Hello” . >> 在MsFlexGrid控件单元格中插入背景图形

Set MsFlexGrid.CellPicture=LoadPicture(“C:\emp\\1.bmp”) 版权申明:本站文章均来自网络.

>>选中某个单元 MsFlexGrid.Row=1 MsFlexGrid.Col=1 。 >>用粗体格式化当前选中单元

MsFlexGrid.CellFontBold=True 根据专家观察,这样的理论和现象都是值得各位站长深思的,所以希望大家多做研究学习,争取总结出更多更好的经验!

>> 添加新的一行

使用AddItem方法,用Tab字符分开不同单元格的内容 dim row as string

row=”AAA”&VBtab&”bbb”

ID

MsFlexFrid1.addItem row ..

>>怎样来实现MSFlexGrid控件单数行背景为白色,双数的行背景为蓝色?

Dim i As Integer With MSFlexGrid1

.AllowBigSelection = True ’设置网格样式 .FillStyle = flexFillRepeat For i = 0 To .Rows - 1 .Row = i: .Col = .FixedCols .ColSel = .Cols() - .FixedCols - 1 If i Mod 2 = 0 Then

.CellBackColor = &HC0C0C0 ’浅灰 Else

.CellBackColor = vbBlue ’兰色 End If Next i End With 。

>> MSFlexGrid控件如何移到最后一行

MSFlexGrid1.TopRow = MSFlexGrid1.Rows –1 版权申明:本站文章均来自网络,如有侵权,请联系028-********-215,我们收到后立即删除,谢谢!

>>如何判断msflexgrid有无滚动条

Declare Function GetScrollRange Lib \"user32\" (ByVal hWnd As Long, ByVal nBar As Long, lpMinPos As Long, lpMaxPos As Long) As Long

Public Const SB_HORZ = &H0 Public Const SB_VERT = &H1 .

Public Function VsScroll(MshGrid As MSHFlexGrid) As Boolean ’判断水平滚动条的可见性Dim i As Long

VsScroll = False

i = GetScrollRange(MshGrid.hWnd, SB_HORZ, lpMinPos, lpMaxPos)

If lpMaxPos <> lpMinPos Then VsScroll = True End Function 。

Public Function HeScroll(MshGrid As MSHFlexGrid) As Boolean ’判断垂直滚动条的可见性Dim i As Long

HeScroll = False

i = GetScrollRange(MshGrid.hWnd, SB_VERT, lpMinPos, lpMaxPos)

If lpMaxPos <> lpMinPos Then HeScroll = True End Function .

>>程序运行时,想动态增加MSFlexgrid的列数 Private Sub Form_Load() Me.MSFlexGrid1.Cols = 4 MSFlexGrid1.Rows = 2

For i = 0 To Me.MSFlexGrid1.Cols - 1 Me.MSFlexGrid1.TextMatrix(0, i) = i Me.MSFlexGrid1.TextMatrix(1, i) = i Next End Sub

Private Sub Command1_Click()

Me.MSFlexGrid1.Cols = Me.MSFlexGrid1.Cols + 1 '增加一列 Me.MSFlexGrid1.ColPosition(4) = 2 '将第四列插到第二列的前面

End Sub

>> 请教MSFlexGrid中的对齐功能的使用 设置MSFlexGrid1.ColAlignment(index)=n >>得到MSFlexGrid控件中当前选中的一行 msflexgrid1.rowsel就是当前选中行. >> 如何通过代码调节列宽度

msflexgrid1.colwidth(i)=4000 ..

2控件MSFl exGrid的属性和方法(VB控件) 1)属性类型说明

AllowBigSelectorBoolean返回/设置一个值,定义当在行或列的头部单击时,是否该行或列将整个被选中

AllowUseResizingEnum设置/返回一个值,定义用户是否可以调整网格行,列的尺寸BackColorOle_Color设置/返回一网格中非固定单元的背景色

BackColorBandArray/Ole_Color设置/返回网格中每个BAND的背景色BachColorBkgOle_Color设置/返回网格的背景色(单元头部除外)

BackColorFixedOle_Color设置/返回网格中固定单元的背景色 BackColorHeaderArray/Ole_Color设置/返回网格头部单元的背景色BackColorIndentArray/Ole_Color设置/返回网格中凹痕部分的背景色

BackColorSelOle_Color设置/返回网格选中单元的背景色 BackColorUnpopulatedOle_Color设置/返回网格非用户操作区的背景色

BandDataArray/Long为独BAND设置/返回任意的值,以合在代码中通过这些值确定BAND BandDisplayEnum定义在网格中BAND是水平还是垂直显示

BandExpandableARRAY/BOOLEN设置/返回值指明的BAND能否被折叠或展开BandIndentArray/Long定义BAND划分的字段数量

BandLevelLong返回当前的单元包含的BAND总数量 BandsLong返回网格中BAND总数量

CellAlignmentInteger设置/返回一个值以定义当前单元的水平和垂直对齐方式CellBackColorOle_Color定义当前单元的字体是否为粗体

CellFontBoldBoolean定义当前单元的字体是否为粗体

CellFontItalicBoolean定义当前单元的字体是否为斜体 CellFontNameString定义当前单元的字体名 CellFontSizeString定义当前单元的字体大小

CellFontStrikeThoughBoolean定义当前单元的字体是否为突显示CellFontUnderlineBoolean定义当前单元的字体是有下划线

CellFontWidthSingle定义当前单元的字体宽(用点表示) CellFontColorOle_Color设置/返回当前单元格的前景色 CellHeightLong设置/返回当前单元格的高度 CellLeftLong返回当前单元格的左边距

CellPictureStdPicture设置/返回当前单元格的图片

CellPictureAlignmentInteger设置/返回当前单元格或某范围的单元格的图像对齐方式CelltextStyleEnum设置/返回当前单元或选中范围单元文本的3D风格

CellTopLong返回当前单元格的垂直位置

CellTypeEnum设置/返回当前单元格的类型(标准.固定) CellWidthLong返回/设置当前的单元的宽度 ClipString设置/返回网格选定范围单元的内容 ColArray/Integer设置/返回当前单元的水平坐标 ColAlignmentArray/Integer设置/返回当前列的对齐方式 ColalignmentBandArray/Integer设置/返回BAND数据列的对齐方式

ColAlignmentFixed Array/Integer设置/返回固定单元数据的对齐方式ColAlignmentHeaderArray/Integer设置/返回固定头部单元数据的对齐方式ColDataAyyay/Long为列设置/返回任意的值,以合在代码中通过这些值确定列ColHeaderArray/Enum定义每个BAND头部是否显示

ColHeaderCaptionArray/Single定义每个BAND的列头部显示的文本

ColIsVisibleARRAY/BOOLEN返回/设置某个列是否可见 ColPosArray/Long返回某个给定列的左上角和网格左上角的距离

ColpositionArray/Long设置网格列的位置 ColsLong返回/设置网格的列数量

ColSelArray/Long设置/返回某个范围单元的起始列 ColWidthArray/Long设置/返回某个列的宽度

ColWordWrapOption Array/Integer设置/返回网格的非固定单元是否允许WRAP ColWordWrapOptionBandArray/Integer定义网格

BAND

WRAP

ColWordWrapOptionFixedArray/Integer定义列的固定单元是否允许WRAP ColWordWrapOptionHeaderArray/Integer定义各头部是否允许WRAP

DataFieldArray/Single一个列绑定的数据库字段

FillStyleEnum定义改变文本或单元的其他属性是影响所有的选中单元还是只影响活动单元FixedColsLong设置/返回固定列的列数

FixedRowsLong设置/返回固定行的行数 FocusRectEnum定义控件对当前单元的焦点表示 FontStdFont返回/设置默认字体或各单元使用的字体 FontBandArray/StdFont设置/返回各BAND使用文本的字体 FontFixedSingle设置/返回固定单元使用的字体

FontHeader Array/StdFont设置/返回各头部使用的字体 FontWidthSingle设置/返回默认字体宽度

FontWidthBandArray/Single设置/返回BAND使用的字宽 FontWidthFixedSingle设置/返回固定单元使用的字宽 FontWidthHeaderArray/Single设置/返回每个头部使用的字宽 ForeColrOle_Color设置/返回网格非固定单元使用的前景色 ForeColorBandArray/Ole_Color设置/返回网格各BAND的前景色

ForeColorFixedOle_Color设置/返回网格固定单元的前景色. ForeColorHeaderArray/Ole_Color设置/返回网格头部单元的前景色

ForeColorSelOle_Color设置/返回设置单元的前景色

FormatStringString定义一个格式串用来设置网格列的宽度,对齐方式,固定行文本固定列文本GridColorOle_Color设置/返回网格单元间的线的颜色

GridColorBandArray/Ole_Color设置/返回网格BAND的线的颜色

GridColorFixedOle_Color设置返回网格固定单元间的线的颜色 GridColorHeaderArray/Ole_Color设置/返回网格头部间的线的颜色

GridColorIndentOle_Color设置/返回网格INDENT单元间的线的颜色

GridColorUnpopulatedOle_Color类型

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设置/返回一个值表

设置/返回网格

UNPOPULATED区域间的颜色GrigLineEnum定义网格单元间的线的

明哪些行可以将内容合并

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

ElseIf KeyCode = vbKeyLeft Then If J > 0 Then

MSFlexGrid1.Col = J - 1 Else

MSFlexGrid1.Col = J End If

MSFlexGrid1.Row = I MSFlexGrid1.SetFocus Text1.Visible = False

ElseIf KeyCode = vbKeyDown Then MSFlexGrid1.Col = J

If I < MSFlexGrid1.Rows - 1 Then MSFlexGrid1.Row = I + 1 End If

MSFlexGrid1.SetFocus

Text1.Visible = False

ElseIf KeyCode = vbKeyRight Then If J < MSFlexGrid1.Cols - 1 Then MSFlexGrid1.Col = J + 1 MSFlexGrid1.Row = I MSFlexGrid1.SetFocus Text1.Visible = False End If End If End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer) '文本右移 If KeyAscii = 13 Then

If J < MSFlexGrid1.Width / MSFlexGrid1.CellWidth - 2 Then J = J + 1

Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(J)+20 Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(I)+20 Text1.Visible = True

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

Text1.SelLength = Len(Text1) Text1.SetFocus Else '换行J = 0 I = I + 1

Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(J)+20 Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(I)+20 Text1.Visible = True

Text1 = MSFlexGrid1.TextMatrix(I, J) Text1.SelLength = Len(Text1) Text1.SetFocus End If

End If End Sub

Private Sub Command7_Click() MSFlexGrid1.AddItem

MSFlexGrid1.Row

+

1,

MSFlexGrid1.Row '记录中插入一行Dim n As Long

For n = 1 To MSFlexGrid1.Rows - 1 MSFlexGrid1.TextMatrix(n, 0) = n Next n End Sub

Private Sub Command3_Click() If MSFlexGrid1.Row > 1 Then

MSFlexGrid1.RemoveItem MSFlexGrid1.Row '删除指定行 MSFlexGrid1.SetFocus End If End Sub

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务