如何vb mshflexgrid删除行编辑数据,保存?

VB数据库教程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
VB数据库教程
上传于||文档简介
&&V​B​数​据​库​教​程
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩25页未读,继续阅读
你可能喜欢vb6.0中的控件list怎样调用数据库中的东西。
listbox不能够连接数据库,只能先读出数据库数据,再添加到list里面,建议你用MSHFlexGrid控件
vb6.0中的控件list怎样调用数据库中的东西。<img src="-.jpg"把数据库中的东西,调用到list1中。具体代码怎么写?listbox 不能够连接数据库,只能先读出数据库数据,再添加到list里面,建议你用MSHFlexGrid控件'MSHFlexGrid操作参考: Private Sub LoadMSHFlexGridData Dim As New ADODB.Connection, rs As New ADODB.Recordset.Open "DRIVER=Microsoft Access Driver *. DBQ= " & App.Path & "\数据库.User Id=Password=;" rs.Open "select * from 表名", adOpenKeyset, adLockBatchOptimistic Set MSHFlexGrid.DataSource = rs End Sub'这样就可以把数据放到MSHFlexGrid里面,然后用list1.AddItem "值" ,就可以把想要的东西加载到listbox控件里了
您好。怎么是的。要编写什么代码。可以让数据库中的数据读出到listbox中。
我现在只想把数据库中的东西读出到listbox控件中来显示。不需要连接数据库。List1.DataSource = rsList1.DataField = "字段名" 用这个试试代码怎么编写了。这样怎么去打开数据库。 adodc 跟data不支持list 我们只有自己编写编码把数据库中的值赋给listbox中来了。但是这个代码我不会写。
爱美丽为您推荐:
图库_视频_时尚1)& MSHFLEXGRID的重要属性.MSHFLEXGRID的属性非常多,其实绝大部分的属性和网格的显示的外观有关.在MSDN里,这些属性足以将人搞得眼花缭乱的了(我相信你没有耐性一个一个地翻查).下面列出常用的属性,方法事件及其简要说明.以便查阅.
属性 类型 说明AllowBigSelector Boolean 返回/设置一个值,定义当在行或列的头部单击时,是否该行或列将整个被选中AllowUseResizing Enum 设置/返回一个值,定义用户是否可以调整网格行,列的尺寸BackColor Ole_Color 设置/返回一网格中非固定单元的背景色BackColorBand Array/Ole_Color 设置/返回网格中每个独立BAND的背景色BachColorBkg Ole_Color 设置/返回网格的背景色(单元头部除外)BackColorFixed Ole_Color 设置/返回网格中固定单元的背景色BackColorHeader Array/Ole_Color 设置/返回网格头部单元的背景色BackColorIndent Array/Ole_Color 设置/返回网格中凹痕部分的背景色BackColorSel Ole_Color 设置/返回网格选中单元的背景色BackColorUnpopulated Ole_Color 设置/返回网格非用户操作区的背景色BandData Array/Long 为独BAND设置/返回任意的值,以合在代码中通过这些值确定BANDBandDisplay Enum 定义在网格中BAND是水平还是垂直显示BandExpandable ARRAY/BOOLEN 设置/返回值指明独立的BAND能否被折叠或展开BandIndent Array/Long 定义BAND划分的字段数量BandLevel Long 返回当前的单元包含的BAND总数量Bands Long 返回网格中BAND总数量CellAlignment Integer 设置/返回一个值以定义当前单元的水平和垂直对齐方式CellBackColor Ole_Color 定义当前单元的字体是否为粗体CellFontBold Boolean 定义当前单元的字体是否为粗体CellFontItalic Boolean 定义当前单元的字体是否为斜体CellFontName String 定义当前单元的字体名CellFontSize String 定义当前单元的字体大小CellFontStrikeThough Boolean 定义当前单元的字体是否为突显示CellFontUnderline Boolean 定义当前单元的字体是有下划线CellFontWidth Single 定义当前单元的字体宽(用点表示)CellFontColor Ole_Color 设置/返回当前单元格的前景色CellHeight Long 设置/返回当前单元格的高度CellLeft Long 返回当前单元格的左边距CellPicture StdPicture 设置/返回当前单元格的图片CellPictureAlignment Integer 设置/返回当前单元格或某范围的单元格的图像对齐方式CelltextStyle Enum 设置/返回当前单元或选中范围单元文本的3D风格CellTop Long 返回当前单元格的垂直位置CellType Enum 设置/返回当前单元格的类型(标准.固定)CellWidth Long 返回/设置当前的单元的宽度Clip String 设置/返回网格选定范围单元的内容Col Array/Integer 设置/返回当前单元的水平坐标ColAlignment Array/Integer 设置/返回当前列的对齐方式ColalignmentBand Array/Integer 设置/返回BAND数据列的对齐方式ColAlignmentFixed Array/Integer 设置/返回固定单元数据的对齐方式ColAlignmentHeader Array/Integer 设置/返回固定头部单元数据的对齐方式ColData Ayyay/Long 为独立列设置/返回任意的值,以合在代码中通过这些值确定列ColHeader Array/Enum 定义每个BAND头部是否显示ColHeaderCaption Array/Single 定义每个BAND的列头部显示的文本ColIsVisible ARRAY/BOOLEN 返回/设置某个列是否可见ColPos Array/Long 返回某个给定列的左上角和网格左上角的距离Colposition Array/Long 设置网格列的位置Cols Long 返回/设置网格的列数量ColSel Array/Long 设置/返回某个范围单元的起始列ColWidth Array/Long 设置/返回某个列的宽度ColWordWrapOption Array/Integer 设置/返回网格的非固定单元是否允许WRAPColWordWrapOptionBand Array/Integer 定义网格的BAND是否允许WRAPColWordWrapOptionFixed Array/Integer 定义列的固定单元是否允许WRAPColWordWrapOptionHeader Array/Integer 定义各头部是否允许WRAPDataField Array/Single 一个独立列绑定的数据库字段FillStyle Enum 定义改变文本或单元的其他属性是影响所有的选中单元还是只影响活动单元FixedCols Long 设置/返回固定列的列数FixedRows Long 设置/返回固定行的行数FocusRect Enum 定义控件对当前单元的焦点表示Font StdFont 返回/设置默认字体或各单元使用的字体FontBand Array/StdFont 设置/返回各BAND使用文本的字体FontFixed Single 设置/返回固定单元使用的字体FontHeader Array/StdFont 设置/返回各头部使用的字体FontWidth Single 设置/返回默认字体宽度FontWidthBand Array/Single 设置/返回BAND使用的字宽FontWidthFixed Single 设置/返回固定单元使用的字宽FontWidthHeader Array/Single 设置/返回每个头部使用的字宽ForeColr Ole_Color 设置/返回网格非固定单元使用的前景色ForeColorBand Array/Ole_Color 设置/返回网格各BAND的前景色ForeColorFixed Ole_Color 设置/返回网格固定单元的前景色.ForeColorHeader Array/Ole_Color 设置/返回网格头部单元的前景色ForeColorSel Ole_Color 设置/返回设置单元的前景色FormatString String 定义一个格式串用来设置网格列的宽度,对齐方式,固定行文本固定列文本GridColor Ole_Color 设置/返回网格单元间的线的颜色GridColorBand Array/Ole_Color 设置/返回网格BAND的线的颜色GridColorFixed Ole_Color 设置返回网格固定单元间的线的颜色GridColorHeader Array/Ole_Color 设置/返回网格头部间的线的颜色GridColorIndent Ole_Color 设置/返回网格INDENT单元间的线的颜色GridColorUnpopulated Ole_Color 设置/返回网格UNPOPULATED区域间的颜色GrigLine Enum 定义网格单元间的线的类型GrigLinesBand Array/Enum 定义网格各BAND间的线的类型GrigLinesFixed Enum 定义网格固定单元的线的类型GrigLinesHeader Array/Enum 定义网格各头部间的线的类型GrigLinesIndent Array/Enum 定义网格INDENT单元间的线的类型GrigLinesUnpopulated Enum 定义网格UNPOPULATED区域间的线的类型GrigLinesWidth Integer 设置/返回网格单元间的线的宽度GrigLinesWidthBand Array/Integer 设置/返回网格各BAND间的线的宽度GrigLinesWidthFixed Integer 设置/返回网格固定单元间的线的宽度GrigLinesWidthHeader Array/Integer 设置/返回网格各头间的线的宽度GrigLinesWidthIndent Array/Integer 设置/返回网格INDENT单元间的线的宽度GrigLinesWidthUnpopulated Integer 设置/返回网格UNPOPULATED区域间的宽度Hieght Enum 定义如何以及何时高亮度显示网格的选中单元LeftCol Long 网格最械的可见列MergeCells Enum 设置/返回一个值表明如何及何时将有相同内容的记录进行合并MergeCol ARRAY/BOOLEN 设置/返回一个值表明哪些列可以将内容合并MergeRow ARRAY/BOOLEN 设置/返回一个值表明哪些行可以将内容合并MouseCol Long 返回鼠标光标的列坐标位置MouseRow Long 返回鼠标光标的行坐标位置Picture StdPicture 返回MSHFLEXGRID的控件快照PictureType Enum 设置/返回PICTURE类型Redraw Boolean 设置/返回一个值,表明MSHFLEXGRIDR控件是否在每个改变后重画Row Long 设置/返回当前单元的垂直坐标RowData Array/Long 为各行设置/返回任意的值,以合在代码中通过这些值确定行RowExpandable Boolean 定义当前行是否可以展开RowExpanded Boolean 返回一个值表明当前行是否展开RowHeight Array/Long 设置/返回各行的高度RowHeightMin Long 设置/返回网格中行的最小高度RowIsVisible ARRAY/BOOLEN 设置/返回一个值,表明某个特定列是否可见RowPos Array/Long 返回给定行左上角和MSHFLEXGRID控件左上角的距离RowPosition Array/Long 设置某个网格行的位置Rows Long 返回网格的行的总数或者或BAND的行的总数RowSel Long 设置/返回一个范围的单元的起始行RowSizingMode Enum 设置/返回一个值表明对一行的设置是影响网格的所有行还是只影响被调整的行ScrollBars Enum 设置/返回一个值表明MSHFLEXGRID控件的滚动条类型ScrollTrack Boolean 设置/返回一个值表明网格内容是在用户移动滚动条时随着改变还是滚动结束后改变SelectionMode Enum 设置/返回一个值表明MFHFLEXGRID控件允许的选择类型.Sort Enum 根据某些村准备设置排序的值Text String 设置/返回一个单元或一个范围内单元的文本内容TextArray array/string 不改变ROW,COL属性,设置/返回任意单元的文本内容TextMatrix array/string 设置/返回某个选定行,列的单元的文本内容TextStyle Enum 设置/返回网格通常单元的3D文本风格TextStyleBand Array/Enum 设置/返回网格BAND的3D文本风格TextStyleFixed Enum 设置/返回网格各固定行的3D文本风格TextStyleHeader Array/Enum 设置/返回网格各头部的3D文本风格TopRow Long 设置/返回网格最上面的可见行Version Integer 返回正在使用MSHFLEXGRID控件的版本WordWrap Boolean 定义当到达单元的边界时,网格的单元的内容是否WRAP
2)& MSHFLEXGRID控件的重要方法方法 说明AddItem 向网格中加入一新行Clear 清除网格中的内容ClearStructure 清除网格的结构(映射信息)CollapseAll 折叠网格的某个特定的所有行ExpandAll 展开网格的某个特定的所有行RemoveItem 从网格中清除一行方法AddItem和RemoveItem可以用来向网格中加入或删除行(BANDS).如果折叠或展开某个BAND的所有行,则可以使用COLLAPSEALL和EXPAANDALL方法.方法CLEAR可以清除网格中的内容,但不影响网格的行,列数,如果要清除网格的结构,包括顺序及网格各列的名称,应当使用ClearStructure方法.
3)& MSHFELXGRID的控件的主要事件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事件会被激发,对选择的单元范围的改变,可以通过用户操作或程序代码来实现.
1)& MSHFLEXGRID的编辑.关于MSHFLEXGRID的编辑,很多书都有介绍.一般都是用一个TEXTBOX作为的输入框,通过移动TEXTBOX来达到类似于EXCEL的编辑功能.很多书介绍的方法是在MOUSEDOWN或CLICK事件中移动TEXTBOX,然后,再在LeaveCell事件中写入.本文的方法与其有类似之处,但亦有小许不同,主要在写入网格时,在TEXTBOX的Change事件中写入.2)网格内容的保存与加载对于网格的保存,一般人喜欢使用.Clip属性,将整个网格一次性地写入一个文件中,当然,在文件不大时,这当然是一个好办法.但是,当网格达到几千行几万行时,这个方法好象不是很好.(各位如果有兴趣的话,可以试试下面的程序)
&将网格设置成5000*12,然后用随机数填充网格.然后,调用下面程序Private Sub Command4_Click()&&&&&&& Dim msgStr As String &&&&&&& Dim FileID As Long &&&&&&& Dim T1 As Date &&&&&&& Dim T2 As Date &&&&&&& &&&&&&& T1 = Timer() &&&&&&& With MSHFlexGrid1 &&&&&&&&&&&&&&& .Row = 0 &&&&&&&&&&&&&&& .Col = 0 &&&&&&&&&&&&&&& .RowSel = .Rows - 1 &&&&&&&&&&&&&&& .ColSel = .Cols - 1 &&&&&&&&&&&&&&& FileID = FreeFile &&&&&&&&&&&&&&& msgStr = .Clip &&&&&&&&&&&&&&& Open "C:\LX.TXT" For Output As #FileID&&&&&&&&&&&&&&&&&&&& Print #FileID, msgStr &&&&&&&&&&&&&&& Close #FileID &&&&&&& End With &&&&&&& T2 = Timer() &&&&&&& MsgBox T2 - T1 End Sub反正我的感觉是:好象死机一般,要过一分多钟后计算机才能反应过来(实测是82.5秒左右,我的计算机是:AMDM内存).为什么一次性的写入会如此的慢呢?这大概是有的人想不到的地方.其实,这跟VB处理字符串的机制有关,如果处理5K的字符串要一秒的话,那么,处理30K的字符串绝不是处理5K的6倍,而是长得多.这种关系几乎是呈某种几何级数的关系.明白了VB原来处理大字符串的效率原来是这么底.那么,解决的办法自然就有了.就是一个字:拆,将大拆小将会大大地加快处理字符串的速度.所以,下面的网格的保存函数的主要思想就将网格中的数据分步保存,每一次保存一小部分.直到整个网格保存完成.当然,其中还有一些细小的技巧,例如:保存时将先将网格中的行,列,固定行,固定列的总数保存,然后,保存各列的宽度,再然后正式保存数据.这都是为了加载的方便与快捷作了一定的处理.(参考下面的程序)
Option Explicit
Dim m_Row As LongDim m_Col As Long
Private Sub Command3_Click()&&&&&&&& '填充网格&&&&&&&&& Dim R As Long &&&&&&&&& Dim C As Long &&&&&&&&& &&&&&&&&& For R = 0 To MSHFlexGrid1.Rows - 1 &&&&&&&&&&&&& For C = 0 To MSHFlexGrid1.Cols - 1 &&&&&&&&&&&&&&&& MSHFlexGrid1.TextMatrix(R, C) = R & C&&&&&&&&&&&&& Next &&&&&&&&& Next End Sub
Private Sub Form_Load()&&&&&&& With MSHFlexGrid1&&&&&&&&&&&& Text1.Visible = False &&&&&&&&&&& .RowHeight(-1) = 285 &&&&&&&&&&&& '设定网格是5000行.12列. &&&&&&&&&&& .Rows = 5000: .Cols = 12 &&&&&&& End With End Sub
'保存文件Private Sub Command1_Click()&&&&&&& Call SaveFile(MSHFlexGrid1, "c:\kk.grd")End Sub
'加载文件Private Sub Command2_Click()&&&&&&&& Call LoadFile(MSHFlexGrid1, "c:\kk.grd")End Sub
Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)&&&&&&& Text1.Visible = False&&&&&&& With MSHFlexGrid1 &&&&&&&&&&& m_Row = .MouseRow &&&&&&&&&&& m_Col = .MouseCol &&&&&&&&&&& If m_Row & .FixedRows Then m_Row = .FixedRows&&&&&&&&&&& If m_Col & .FixedCols Then m_Col = .FixedCols&&&&&&&&&&& .Row = m_Row: .Col = m_Col &&&&&&&&&&& Text1.Move .Left + .CellLeft, .Top + .CellTop, .CellWidth, .CellHeight &&&&&&&&&&& Text1.Text = .Text &&&&&&&&&&& Text1.Visible = True &&&&&&&&&&& Text1.SetFocus &&&&&&& End With End Sub
Private Sub Text1_Change()&&&&&&& With MSHFlexGrid1&&&&&&&&&&& .TextMatrix(m_Row, m_Col) = Text1 &&&&&&& End With End Sub
'//**以下是相应的功能函数''加载一个文件到表格.'函数:LoadFileToGrid'参数:MsgObj Mshfelxgrid控件名,FileName 加载的文件名'返回值:=True 成功.=True 失败.Public Function LoadFile(MsgObj As Control, FileName As String) As Long&&& Dim InputID As Long, FileID As Long &&& Dim EndRow As Long, DltAdd As Long &&& Dim AddFlag As Boolean &&& Dim KeyTab As String, KeyEnter As String &&& Dim FixedRows As Long, FixedCols As Long &&& Dim GridInput As String, AddSum As String, RowColMax() As String &&& Dim GridColMax As Long, GridRowMax As Long &&& Dim OleRow As Long, OleCol As Long &&& Dim SumFmtStr As String &&& Dim DltCol As Long &&& &&& On Error Resume Next &&& &&& With MsgObj &&&&&&& .Redraw = False &&&&&&& Err.Clear: SetAttr FileName, 0 &&&&&&& If Err.Number && 0 Then '如果文件不存在&&&&&&&&&& Err.Clear &&&&&&&&&& Call SaveFile(MsgObj, FileName) &&&&&&&&&& .Redraw = True &&&&&&&&&& Exit Function &&&&&&& End If &&&&&&& &&&&&&& KeyTab = Chr$(vbKeyTab): KeyEnter = Chr$(13) &&&&&&& InputID = 0: AddSum = ""&&&&&&& AddFlag = False: DltAdd = 25: DltCol = 1 &&&&&&& .Redraw = False: .FixedRows = 0: .FixedCols = 0 &&&&&&& &&&&&&& FileID = FreeFile &&&&&&& Open FileName For Input As #FileID &&&&&&&&&&&& Do While Not EOF(FileID) ' 循环至文件尾。 &&&&&&&&&&&&&&& Line Input #FileID, GridInput &&&&&&&&&&&&&&& If InputID &= 1 Then&&&&&&&&&&&&&&&&&& '取出总行数和总列数,以及各列的宽度. &&&&&&&&&&&&&&&&&& If InputID = 0 Then &&&&&&&&&&&&&&&&&&&&&&& RowColMax = Split(GridInput, "|")&&&&&&&&&&&&&&&&&&&&&&& GridRowMax = CLng( "0" & RowColMax(0)): GridColMax = CLng("0" & RowColMax(1))&&&&&&&&&&&&&&&&&&&&&&& If CLng( "0" & RowColMax(0)) & 2 Then GridRowMax = 1&&&&&&&&&&&&&&&&&&&&&&& If CLng( "0" & RowColMax(1)) & 2 Then GridColMax = 1&&&&&&&&&&&&&&&&&&&&&&& .Rows = GridRowMax: .Cols = GridColMax &&&&&&&&&&&&&&&&&& Else &&&&&&&&&&&&&&&&&&&&&&& SumFmtStr = GridInput '格式字符串. &&&&&&&&&&&&&&&&&& End If &&&&&&&&&&&&&&& Else &&&&&&&&&&&&&&&&&& If AddFlag Then &&&&&&&&&&&&&&&&&&&&& AddSum = AddSum & KeyEnter & GridInput&&&&&&&&&&&&&&&&&& Else &&&&&&&&&&&&&&&&&&&&& AddSum = GridInput: AddFlag = True &&&&&&&&&&&&&&&&&& End If &&&&&&&&&&&&&&&&&& If (InputID - DltCol) Mod DltAdd = 0 Then &&&&&&&&&&&&&&&&&&&&& .Row = InputID - DltAdd - DltCol: .Col = 0 &&&&&&&&&&&&&&&&&&&&& .RowSel = InputID - 1 - DltCol: .ColSel = GridColMax - 1 &&&&&&&&&&&&&&&&&&&&& .Clip = AddSum: AddSum = ""&&&&&&&&&&&&&&&&&&&&& EndRow = InputID - DltCol: AddFlag = False &&&&&&&&&&&&&&&&&& End If &&&&&&&&&&&&&&& End If &&&&&&&&&&&&&&& InputID = InputID + 1 &&&&&&&&&&&& Loop &&&&&&&&&&&& If (InputID - DltCol) - EndRow & 1 Then&&&&&&&&&&&&&&& .Row = EndRow: .Col = 0 &&&&&&&&&&&&&&& .RowSel = GridRowMax - 1 &&&&&&&&&&&&&&& .ColSel = GridColMax - 1 &&&&&&&&&&&&&&& .Clip = AddSum &&&&&&&&&&&&&&& AddSum = ""&&&&&&&&&&&& End If &&&&&&& Close #FileID &&&&&&& &&&&&&& Call FormatGrid(MsgObj, SumFmtStr) &&&&&&& &&&&&&& .FixedRows = CLng( "0" & RowColMax(2)): .FixedCols = CLng("0" & RowColMax(3))&&&&&&& .Redraw = True &&&&&&& &&&&&&& .Row = .FixedRows &&&&&&& .Col = .FixedCols &&&&&&& .RowSel = .FixedRows &&&&&&& .ColSel = .FixedCols &&& End With End Function
''保存表格数据'函数:SaveFile'参数:MsgObj Mshfelxgrid控件名,FileName 加载的文件名'返回值:=True 成功.=True 失败.Public Function SaveFile(MsgObj As Control, FileName As String) As Boolean'/保存文件&&& Dim FileID As Long, ConTents As String &&& Dim A As Long, B As Long &&& Dim RowMax As Long, ColMax As Long &&& Dim FixRows As Long, FixCols As Long &&& Dim OleRow As Long, OleCol As Long &&& Dim SFmtStr As String &&& Dim strColWidth As String &&& &&& On Error Resume Next &&& &&& With MsgObj &&&&&&& .Redraw = False &&&&&&& FixRows = .FixedRows: FixCols = .FixedCols &&&&&&& RowMax = .Rows - 1: ColMax = .Cols - 1 &&&&&&& .FixedRows = 0: .FixedCols = 0 &&&&&&& FileID = FreeFile
&&&&&&& Open FileName For Output As #FileID&&&&&&&&&&&& ConTents = RowMax + 1 & "|" & ColMax + 1 & "|" & FixRows & "|" & FixCols & "|"&&&&&&&&&&&& Print #FileID, ConTents& '保存总的行数和列数. &&&&&&&&&&&& For A = 0 To .ColMax &&&&&&&&&&&&&&&& strColWidth = strColWidth & .ColWidth(A) & "|"&&&&&&&&&&&& Next &&&&&&&&&&&& Print #FileID, Left$(strColWidth, Len(strColWidth) - 1) '保存各列的宽度. &&&&&&&&&&&& &&&&&&&&&&&& For A = 0 To RowMax &&&&&&&&&&&&&&&& .Row = A: .Col = 0 &&&&&&&&&&&&&&&& .RowSel = A: .ColSel = ColMax &&&&&&&&&&&&&&&& ConTents = .Clip &&&&&&&&&&&&&&&& Print #FileID, ConTents &&&&&&&&&&&& Next A &&&&&&& Close #FileID &&&&&&& .FixedRows = FixRows: .FixedCols = FixCols &&&&&&& .Redraw = True &&& End With &&& SaveFile = (Err.Number = 0) &&& Err.Clear End Function
'格式网格:在这里是设置网格宽度.Function FormatGrid(MsgObj As Control, FmtStr As String)&&&&&&&& Dim I As Long &&&&&&&& Dim WithArr() As String &&&&&&&& &&&&&&&& WithArr = Split(FmtStr, "|")&&&&&&&& For I = 0 To UBound(WithArr) &&&&&&&&&&&& If IsNumeric(WithArr(I)) Then &&&&&&&&&&&&&&& If Val(WithArr(I)) & 0 Then MsgObj.ColWidth(I) = CLng("0" & WithArr(I))&&&&&&&&&&&& End If &&&&&&&& Next End Function
要按照内容自动调整列宽。只要适当地修改一下Text1_Change函数即可,如下:
Private Sub Text1_Change()&&&&&&& Dim OleWidth As Long&&&&&&& Dim NewWidth As Long&&&&& &&&&&&& With MSHFlexGrid1 &&&&&&&& .TextMatrix(m_Row, m_Col) = Text1 &&&&&&&& .Text = Text1 &&&&&&&& '根据输入自动调列宽 &&&&&&&& NewWidth = Me.TextWidth(.Text)'新列宽 &&&&&&&& OleWidth = .CellWidth&&&&&&&& '旧列宽 &&&&&&&& If NewWidth & OleWidth Then&& '如果新列大于旧列,则将列宽设置为一个新值。&&&&&&&&&&& .ColWidth(.Col) = NewWidth &&&&&&&&&&& Text1.Width = NewWidth &&&&&&&&&&& DoEvents &&&&&&&& End If &&&&&& End With End Sub
编写一个类,首先在确定其功能。对某个控件功能的扩充,无非是增加一些原控件没有的属性和方法而已。只要你曾经设计过类或设计过控件,这些相对而言并不是很难。本文假定用户曾有个设计过一个简单类的经历。功能的提出:网格编辑,文件保存,文件加载,键盘的移动(用箭头,PAGEUP,PAGEDOWN实现向左,向下,翻页等),网格插入一行,网格插入一列,删除一行,删除一列,范围内删除内容,范围内删除列,范围内删除行。实现要点:对于网格的编辑,保存和加载。此不再叙述。对于键盘的移动,这里有一个难点。因为,我们并不能通过MSHFLEXGRID的滚动来移动当前表格,这里用到一个技巧,就是:移动编辑框到相应的网格即可实现滚动功能。对于插入行列等,其实思路非常简单,实质上就是内容的&搬运&。例如,要在当前行下插入一行,则将网格扩展一行,然后,将所有内容向下移动一行,再清空当前行。实现插入列也一样。仅上面将行变成列而已。关于范围内删除内容则更简单,清空即可。删除行可直接将选择的行删除(MSHFLEXGRID提供了相应的方法),删除列则麻烦一点。先将列内容前移,然后,重新设置网格的列数即可。由于程序比较长,所以,我也不能细述每部分的功能,而且,也可能存在BUG。当然,我既然有胆将这片药膏贴出来,致到运行上基本能通过了。下面的该类提供的属性和方法:
**属性**BindGrid 绑定表格,如:SET BindGrid=Mshflexgrid1.(该属性是最重要的属性.必须首先设置)BindText 绑定文本框,如:SET BindText=ev_text.(该属性是最重要的属性.必须首先设置)BindPicture 绑定图片框,如:SET BindPicture=PictureBox1.(该属性是最重要的属性.必须首先设置)EditFixed 是否可以编辑固定行.EnterAction 回车键的行为EnterNextRow 如果是向右移到了网格的尽头,是否跳转下一行.(EnterAction=True)PageEnabled 是否可以翻页ArrowEnabled 是否可以用箭头移动编辑框.DltL 输入框左边距微调量DltT 输入框顶距边距微调量DltW 输入框宽度微调量.DltH 输入框高度微调量.AutoSize 当网格的行距或列距改变时,是否可以自动调整编辑框的位置.
保存表格数据函数:SaveFile参数:FileName 加载的文件名返回值:=True 成功.=False 失败.
加载一个文件到表格.函数:LoadFileToGrid参数:FileName 加载的文件名返回值:=True 成功.=True 失败.
表格中添加一个新行函数:AddNewRow参数:无.返回值:无
表格当前行前插入空行函数:InsertRow参数:InsRows 插入的空行数.返回值:
在表格当前列前面插入列函数:InsertCol参数:InsCols 插入的列数.返回值:
在表格未尾添加一列函数:AddNewCol参数:返回值:
删除当前行函数:DelGridRow参数:返回值:
删除当前列函数:DelGridCol参数:返回值:
删除指定范围的行数函数:KillGridRows参数:StarRow 删除的开始行 ,EndRow 删除的结束行.返回值:
删除指定范围的列数函数:KillGridCols参数:StarCol 删除的开始列 ,EndCol 删除的结束列.返回值:
删除指定范围的内容函数:KillSelGrid参数:StarRow& 删除的开始行,StarCol 删除的开始列 ,EndRow 删除的结束行 ,EndCol 删除和结束列.
阅读(...) 评论() &
欢迎访问翱翔软件}

我要回帖

更多关于 vb mshflexgrid 属性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信