MsFlexGrid使用方法.doc_第1页
MsFlexGrid使用方法.doc_第2页
MsFlexGrid使用方法.doc_第3页
MsFlexGrid使用方法.doc_第4页
MsFlexGrid使用方法.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MsFlexGrid使用方法MsFlexGrid使用方法最近写代码,要对一些表格做特殊的处理,我想用MsFlexGrid来实现,所以现收集MsFlexGrid的使用方法。引用地址:/trackback.asp?id=5608begin:VB中MsFlexGrid控件的使用细则(收集) 将文本赋值给MsFlexGrid的单元格MsFlexGrid.TextMatrix(3,1)=”Hello” 在MsFlexGrid控件单元格中插入背景图形Set MsFlexGrid.CellPicture=LoadPicture(“C:temp1.bmp”)选中某个单元MsFlexGrid.Row=1MsFlexGrid.Col=1用粗体格式化当前选中单元MsFlexGrid.CellFontBold=True 添加新的一行使用AddItem方法,用Tab字符分开不同单元格的内容dim row as stringrow=”AAA”&vbtab&”bbb”MsFlexFrid1.addItem row怎样来实现MSFlexGrid控件单数行背景为白色,双数的行背景为蓝色?Dim i As IntegerWith MSFlexGrid1.AllowBigSelection = True 设置网格样式.FillStyle = flexFillRepeatFor i = 0 To .Rows - 1.Row = i: .Col = .FixedCols.ColSel = .Cols() - .FixedCols - 1If i Mod 2 = 0 Then.CellBackColor = &HC0C0C0 浅灰Else.CellBackColor = vbBlue 兰色End IfNext iEnd With MSFlexGrid控件如何移到最后一行MSFlexGrid1.TopRow = MSFlexGrid1.Rows 1如何判断msflexgrid有无滚动条Declare Function GetScrollRange Lib user32 (ByVal hWnd As Long, ByVal nBar As Long, lpMinPos AsLong, lpMaxPos As Long) As LongPublic Const SB_HORZ = &H0Public Const SB_VERT = &H1Public Function VsScroll(MshGrid As MSHFlexGrid) As Boolean 判断水平滚动条的可见性Dim i As LongVsScroll = Falsei = GetScrollRange(MshGrid.hWnd, SB_HORZ, lpMinPos, lpMaxPos)If lpMaxPos lpMinPos Then VsScroll = TrueEnd FunctionPublic Function HeScroll(MshGrid As MSHFlexGrid) As Boolean 判断垂直滚动条的可见性Dim i As LongHeScroll = Falsei = GetScrollRange(MshGrid.hWnd, SB_VERT, lpMinPos, lpMaxPos)If lpMaxPos lpMinPos Then HeScroll = TrueEnd Function程序运行时,想动态增加MSFlexgrid的列数在第2列后插入一列:Private Sub Form_Load()Me.MSHFlexGrid1.Cols = 5MSHFlexGrid1.Rows = 2For i = 0 To Me.MSHFlexGrid1.Cols - 1Me.MSHFlexGrid1.TextMatrix(0, i) = iMe.MSHFlexGrid1.TextMatrix(1, i) = iNextEnd SubPrivate Sub Command1_Click()Me.MSHFlexGrid1.Cols = Me.MSHFlexGrid1.Cols + 1Me.MSHFlexGrid1.ColPosition(5) = 3End Sub 请教MSFlexGrid中的对齐功能的使用设置MSFlexGrid1.ColAlignment(index)=n得到MSFlexGrid控件中当前选中的一行msflexgrid1.rowsel就是当前选中行 如何通过代码调节列宽度msflexgrid1.colwidth(i)=4000将MsFlexGrid控件的内容输出到文本2004-03-19 14:25:18OutDataToText将MsFlexGrid控件中显示的内容输出到文本文件Public Sub OutDataToText(Flex As MSFlexGrid)Dim s As StringDim i As IntegerDim j As IntegerDim k As IntegerDim strTemp As StringOn Error GoTo ErtMe.MousePointer = 11On Error Resume NextDoEventsDim FileNum As IntegerFileNum = FreeFileOpen d:aa.txt For Output As #FileNumWith Flexk = .RowsFor i = 0 To k - 1strTemp = For j = 0 To .Cols - 1DoEventsstrTemp = strTemp & .TextMatrix(i, j) & ,Next jPrint #FileNum, Left(strTemp, Len(strTemp) - 1)Next iEnd WithClose #FileNumMe.MousePointer = 0MsgBox 导出成功Ert:MsgBox Err.DescriptionMe.MousePointer = 0End Sub增加 MsFlexGrid 的编辑功能(作者:佚名 加载日期: 2002/3/31)概述MsFlexGrid 控件没有提供文本编辑的功能,下面的例子演示了如何利用一个TextBox 实现编辑当前网格的功能。在按下一个键后, 就把TextBox 移动到当前的位置, 并激活。 在键入回车或移动到其他网格时,就把TextBox 中的内容放到网格中。实现步骤1 打开 VB5, 开启一个新的工程。2 在菜单“工程” 中选择 “部件”, 在列表中选中 “Microsoft FlexGrid Control .”3 放一个 MsFlexGrid 控件和一个TextBox 控件(Text1)到 Form1。 修改MsFlexGrid 控件的名称为 Grid1,设置Grid1 的行,列 为 4, 固定行,列为 0。 设置 Text1 的 Visiable 为 False, BorderStyle 为None(0)。4 在Form1 的代码中增加声明:Const ASC_ENTER = 13 回车Dim gRow As IntegerDim gCol As Integer5 增加代码到 Grid_KeyPress 过程:Private Sub Grid1_KeyPress(KeyAscii As Integer) Move the text box to the current grid cell:Text1.Top = Grid1.CellTop + Grid1.TopText1.Left = Grid1.CellLeft + Grid1.Left Save the position of the grids Row and Col for later:gRow = Grid1.RowgCol = Grid1.Col Make text box same size as current grid cell:Text1.Width = Grid1.CellWidth - 2 * Screen.TwipsPerPixelXText1.Height = Grid1.CellHeight - 2 * Screen.TwipsPerPixelY Transfer the grid cell text:Text1.Text = Grid1.Text Show the text box:Text1.Visible = TrueText1.ZOrder 0 把 Text1 放到最前面!Text1.SetFocus Redirect this KeyPress event to the text box:If KeyAscii ASC_ENTER ThenSendKeys Chr$(KeyAscii)End IfEnd Sub6 增加代码到 Text1_KeyPress 过程:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = ASC_ENTER ThenGrid1.SetFocus Set focus back to grid, see Text_LostFocus.KeyAscii = 0 Ignore this KeyPress.End IfEnd Sub7 增加代码到 Text1_LostFocus 过程:Private Sub Text1_LostFocus()Dim tmpRow As IntegerDim tmpCol As Integer Save current settings of Grid Row and col. This is needed only if the focus is set somewhere else in the Grid.tmpRow = Grid1.RowtmpCol = Grid1.Col Set Row and Col back to what they were before Text1_LostFocus:Grid1.Row = gRowGrid1.Col = gColGrid1.Text = Text1.Text Transfer text back to grid.Text1.SelStart = 0 Return caret to beginning.Text1.Visible = False Disable text box. Return row and Col contents:Grid1.Row = tmpRowGrid1.Col = tmpColEnd Sub8 好了。 按 F5 开始测试。 您可以自由地在 Grid 中移动, 按回车可以开始或结束编辑。使用MsFlexGrid控件的几个函数作者:中国论坛网收集 来源: 加入时间:2004-8-25在VB处理数据显示的时候,使用表格是一种好的方法,虽然DataGrid可以与数据源绑定,但是总有美中不足,就是外观不好看,所以有时应用MsFlexGrid显示数据还是一种比较好的方法,以下几个函数是用来控制MsFlexGrid的程序(本人语言表达能力有限,还请见谅)MsFlexGrid操作函数合并列Public Function MergeCol(GridObj As Object, ByVal StartCol As Long, ByVal EndCol As Long, ByValColValue As String, ByVal CurrentRow As Long) As BooleanIf StartCol EndCol Or StartCol GridObj.Cols Or CurrentRow GridObj.Rows ThenMsgBox 对不起,行列设置错误!, vbOKOnly, App.TitleMergeCol = FalseExit FunctionEnd IfFor I = StartCol To EndColGridObj.MergeCol(I) = TrueGridObj.TextArray(faIndex(GridObj, CurrentRow, I) = ColValueGridObj.ColAlignment(I) = flexAlignCenterCenterNext IGridObj.MergeRow(CurrentRow) = TrueMergeCol = TrueEnd Function合并行Public Function MergeRow(GridObj As Object, ByVal StartRow As Long, ByVal EndRow As Long, ByValRowValue As String, ByVal CurrentCol As Long) As BooleanIf StartRow EndRow Or StartRow GridObj.Rows Or CurrentCol GridObj.Cols ThenMsgBox 对不起,行列设置错误!, vbOKOnly, App.TitleMergeRow = FalseExit FunctionEnd IfFor I = StartRow To EndRowGridObj.MergeRow(I) = TrueGridObj.TextArray(faIndex(GridObj, I, CurrentCol) = RowValueGridObj.ColAlignment(CurrentCol) = flexAlignCenterCenterNext IGridObj.MergeCol(CurrentCol) = TrueMergeRow = TrueEnd Function转换索引Public Function faIndex(GridObj As Object, ByVal row As Integer, ByVal col As Integer) As LongIf row GridObj.Rows Or row GridObj.Cols Or col GridObj.Rows Or row GridObj.Cols Or col GridObj.Rows Or row GridObj.Cols Or col 0 ThenMsgBox 对不起,行列设置错误!, vbOKOnly, App.TitleGetItem = Exit FunctionEnd IfGetItem = GridObj.TextArray(faIndex(GridObj, row, col)End Function在msflexgrid控件中每一个cell格的内容是不可以由用户直接编辑的但是我们可以通过一些小技巧来方便的实现这编辑功能来扩展msflexgrid的应用(在实际应用中这是很常用的功能)。你只需按下面的做即可轻松实现编辑msflexgrid控件数据的功能例在窗体上放一文本框txtvalue,和一msflexgrid控件grid文本框控件的keypress事件private sub txtvalue_keypress(keyascii as integer)放入一些处理过程,如只需输入数字时的处理dim ii=1end subprivate sub txtvalue_change()grid.tex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论