第1页共13页【MSFlexGrid控件的几种简单的使用方法】【日期】VBMSFlexGrid控件的几种简单的使用方法2009-01-1017:05MSFlexGrid控件的几种简单的使用方法'MSFlexGrid赋值的方法MSFlexGrid1.TextMatrix(0,1)=老师MSFlexGrid1.TextMatrix(1,2)=学生MSFlexGrid1.TextMatrix(2,3)=校长MSFlexGrid1.TextMatrix(3,4)=班主任MSFlexGrid1.TextMatrix(4,5)=教务主任MSFlexGrid1.AddItem2MSFlexGrid1.AddItem4MSFlexGrid1.AddItem6MSFlexGrid1.AddItem8``MSFLEXGRID中如何取的某个单元格的数据PrivateSubMSFlexGrid1_Click()MsgBoxMSFlexGrid1.TextMatrix(MSFlexGrid1.Row,MSFlexGrid1.Col),vbOKOnly,提示消息EndSubMSFlexGrid1.Row,表格中的当前行MSFlexGrid1.Col,表格中的当前列'初始化MSFlexGridDimiAsIntegerMSFlexGrid1.Rows=0Fori=0To10MSFlexGrid1.AddItemAA+Str(i)'Fori=0To10MSFlexGrid1.Col=1MSFlexGrid1.Row=iMSFlexGrid1.Text=CStr(i)MSFlexGrid1.Col=2MSFlexGrid1.Row=i第2页共13页MSFlexGrid1.Text=CStr(i)&CStr(i)MSFlexGrid1.Col=3MSFlexGrid1.Row=iMSFlexGrid1.Text=CStr(i)&CStr(i)&CStr(i)Nexti'实现MSFlexGrid控件,单行背景为浅灰,双行为兰色DimjAsIntegerWithMSFlexGrid1.AllowBigSelection=True'设置网格样式.FillStyle=flexFillRepeatForj=0To.Rows-1.Row=j:.Col=.FixedCols.ColSel=.Cols()-.FixedCols-1IfjMod2=0Then.CellBackColor=&HC0C0C0'浅灰Else.CellBackColor=vbBlue'兰色EndIfNextjEndWith'在MsFlexGrid控件单元格中插入背景图形SetMSFlexGrid1.CellPicture=LoadPicture(f:\temp\snow.bmp)'MSFlexGrid控件如何移到最后一行MSFlexGrid1.TopRow=MSFlexGrid1.Rows-1'隐藏第一行'PrivateSubCommand1_Click1()'MSFlexGrid1.RowHeight(1)=0'EndSub'隐藏第一列'PrivateSubCommand_Click2()'MSFlexGrid1.ColWidth(1)=0'EndSub在MSFlexGrid上点击右键,选择属性,选择选择模式,自己任选点击得到行代码msgrid1.Col就是你选择的列号msgrid1.Row就是你选择的行号第3页共13页msgrid1.text就是你选择单元格的内容。将文本赋值给MsFlexGrid的单元格MsFlexGrid.TextMatrix(3,1)=”Hello”在MsFlexGrid控件单元格中插入背景图形SetMsFlexGrid.CellPicture=LoadPicture(“C:\temp\1.bmp”)选中某个单元MsFlexGrid.Row=1MsFlexGrid.Col=1用粗体格式化当前选中单元MsFlexGrid.CellFontBold=True添加新的一行使用AddItem方法,用Tab字符分开不同单元格的内容dimrowasstringrow=”AAA”&vbtab&”bbb”MsFlexFrid1.addItemrow怎样来实现MSFlexGrid控件单数行背景为白色,双数的行背景为蓝色?DimiAsIntegerWithMSFlexGrid1.AllowBigSelection=True’设置网格样式.FillStyle=flexFillRepeatFori=0To.Rows-1.Row=i:.Col=.FixedCols.ColSel=.Cols()-.FixedCols-1IfiMod2=0Then.CellBackColor=&HC0C0C0’浅灰Else.CellBackColor=vbBlue’兰色EndIfNextiEndWith第4页共13页MSFlexGrid控件如何移到最后一行MSFlexGrid1.TopRow=MSFlexGrid1.Rows–1如何判断msflexgrid有无滚动条DeclareFunctionGetScrollRangeLibuser32(ByValhWndAsLong,ByValnBarAsLong,lpMinPosAsLong,lpMaxPosAsLong)AsLongPublicConstSB_HORZ=&H0PublicConstSB_VERT=&H1PublicFunctionVsScroll(MshGridAsMSHFlexGrid)AsBoolean’判断水平滚动条的可见性DimiAsLongVsScroll=Falsei=GetScrollRange(MshGrid.hWnd,SB_HORZ,lpMinPos,lpMaxPos)IflpMaxPoslpMinPosThenVsScroll=TrueEndFunctionPublicFunctionHeScroll(MshGridAsMSHFlexGrid)AsBoolean’判断垂直滚动条的可见性DimiAsLongHeScroll=Falsei=GetScrollRange(MshGrid.hWnd,SB_VERT,lpMinPos,lpMaxPos)IflpMaxPoslpMinPosThenHeScroll=TrueEndFunction程序运行时,想动态增加MSFlexgrid的列数在第2列后插入一列:PrivateSubForm_Load()Me.MSHFlexGrid1.Cols=5MSHFlexGrid1.Rows=2Fori=0ToMe.MSHFlexGrid1.Cols-1Me.MSHFlexGrid1.TextMatrix(0,i)=iMe.MSHFlexGrid1.TextMatrix(1,i)=iNextEndSubPrivateSubCommand1_Click()Me.MSHFlexGrid1.Cols=Me.MSHFlexGrid1.Cols+1Me.MSHFlexGrid1.ColPosition(5)=3第5页共13页EndSub请教MSFlexGrid中的对齐功能的使用设置MSFlexGrid1.ColAlignment(index)=n得到MSFlexGrid控件中当前选中的一行msflexgrid1.rowsel就是当前选中行如何通过代码调节列宽度msflexgrid1.colwidth(i)=4000--------------------------------------------------------------------------------------'OutDataToText'将MsFlexGrid控件中显示的内容输出到文本文件PublicSubOutDataToText(FlexAsMSFlexGrid)DimsAsStringDimiAsIntegerDimjAsIntegerDimkAsIntegerDimstrTempAsStringOnErrorGoToErtMe.MousePointer=11OnErrorResumeNextDoEventsDimFileNumAsIntegerFileNum=FreeFileOpend:aa.txtForOutputAs#FileNumWithFlexk=.RowsFori=0Tok-1strTemp=Forj=0To.Cols-1DoEventsstrTemp=strTemp&.TextMatrix(i,j)&,NextjPrint#FileNum,Left(strTemp,Len(strTemp)-1)NextiEndWithClose#FileNum第6页共13页Me.MousePointer=0MsgBox导出成功Ert:MsgBoxErr.DescriptionMe.MousePointer=0EndSub增加MsFlexGrid的编辑功能概述MsFlexGrid控件没有提供文本编辑的功能,下面的例子演示了如何利用一个TextBox实现编辑当前网格的功能。在按下一个键后,就把TextBox移动到当前的位置,并激活。在键入回车或移动到其他网格时,就把TextBox中的内容放到网格中。实现步骤1打开VB5,开启一个新的工程。2在菜单“工程”中选择“部件”,在列表中选中“MicrosoftFlexGridControl..”3放一个MsFlexGrid控件和一个TextBox控件(Text1)到Form1。修改MsFlexGrid控件的名称为Grid1,设置Grid1的行,列为4,固定行,列为0。设置Text1的Visiable为False,BorderStyle为None(0)。4在Form1的代码中增加声明:ConstASC_ENTER=13'回车DimgRowAsIntegerDimgColAsInteger5增加代码到Grid_KeyPress过程:PrivateSubGrid1_KeyPress(KeyAsciiAsInteger)'Movethetextboxtothecurrentgridcell:Text1.Top=Grid1.CellTop+Grid1.TopText1.Left=Grid1.CellLeft+Grid1.Left第7页共13页'SavethepositionofthegridsRowandColforlater:gRow=Grid1.RowgCol=Grid1.Col'Maketextboxsamesizeascurrentgridcell:Text1.Width=Grid1.CellWidth-2*Screen.TwipsPerPixelXText1.Height=Grid1.CellHeight-2*Screen.TwipsPerPixelY'Transferthegridcelltext:Text1.Text=Grid1.Text'Showthetextbox:Text1.Visible=TrueText1.ZOrder0'把Text1放到最前面!Text1.SetFocus'RedirectthisKeyPresseventtothetextbox:IfKeyAsciiASC_ENTERThenSendKeysChr$(KeyAscii)EndIfEndSub6增加代码到Text1_KeyPress过程:PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=ASC_ENTERThenGrid1.SetFocus'Setfocusbacktogrid,seeText_LostFocus.KeyAscii=0'IgnorethisKeyPress.EndIfEndSub7增加代码到Text1_LostFocus过程:PrivateSubText1_LostFocus()Dim