常见改变MSHFLEXGRID的颜色的方法.doc_第1页
常见改变MSHFLEXGRID的颜色的方法.doc_第2页
常见改变MSHFLEXGRID的颜色的方法.doc_第3页
常见改变MSHFLEXGRID的颜色的方法.doc_第4页
常见改变MSHFLEXGRID的颜色的方法.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

如何将选中的MSHFlexGrid一行高亮显示高亮显示要设置颜色PrivateSubhflexgrid_EnterCell()单击某一单元时,改变该行颜色Dimi_ColAsIntegerDimc_colAsIntegerc_col=Hflexgrid.colIfc_col0ThenFori_Col=0ToHflexgrid.Cols-1Hflexgrid.col=i_ColHflexgrid.CellBackColor=&HFFFFC0Nexti_ColHflexgrid.col=c_colEndIfEndSubPrivateSubhflexgrid_LeaveCell()当某一行失去焦点时,恢复该行颜色Dimi_ColAsIntegerDimc_colAsIntegerc_col=Hflexgrid.colFori_Col=0ToHflexgrid.Cols-1Hflexgrid.col=i_ColHflexgrid.CellBackColor=vbWhiteNexti_ColHflexgrid.col=c_colEndSubmshflexgrid怎么改变某一行的背景色和字体颜色?Private Sub setColor(msfg As MSFlexGrid, row As Long, color As Long, bkcolor As Long)For i = 1 To msfg.Cols - 1msfg.row = rowmsfg.Col = imsfg.CellForeColor = color 前景色msfg.CellBackColor = bkcolor 背景色NextEnd SubPrivate Sub Command1_Click() setColor MSFlexGrid1, 3, &HFFFF&, &H8000000DEnd SubPrivate Sub Form_Load() MSFlexGrid1.Rows = 5 MSFlexGrid1.Cols = 5 For i = 1 To 4 For j = 1 To 4 MSFlexGrid1.TextMatrix(i, j) = j Next NextEnd Sub让MSHFlexGrid只能被选中一行的另一方法1、放置一个HSB1(HScrollBar),MSHFlexGrid1(MSHFlexGrid)2、如下代码:-PrivateSubForm_Load()IfMSHFlexGrid1.ColsthenHSB1.Min=1HSB1.Max=MSHFlexGrid1.ColsEndIfEndSub-PrivateSubHSB1_Change()IfMSHFlexGrid1.ColsthenMSHFlexGrid1.Row=HSB1.valueMSHFlexGrid1.ColSel=MSHFlexGrid1.Cols-1EndIfEndSub-PrivateSubMSHFlexGrid1_Click()IfMSHFlexGrid1.ColsthenHSB1.value=MSHFlexGrid1.RowEndIfEndSub怎么改变MSHFlexGrid某个单元格的颜色Public Function FlexRedraw(F As MSHFlexGrid) As String With F .Redraw = False 禁止重画,防止闪动 .BackColorFixed = RGB(190, 218, 178) 标题行背景色 .Row = 0 设置标题行文字的对其方式 .Col = 0 .ColSel = .Cols - 1 .CellForeColor = vbBlue 标题行文字颜色 .CellAlignment = 4 对其方式为中间中间 .ScrollTrack = True 移动滚动条的同时数据也滚动 For I = .FixedRows To .Rows - 1 单双行表格条纹背景色显示 .Row = I 选择第I行 .Col = .FixedCols .ColSel = .Cols - 1 If I / 2 = Int(I / 2) Then 判断是单是双 .CellBackColor = RGB(224, 248, 224) 双行的底色 Else .CellBackColor = RGB(240, 248, 224) 单行的底色 End If Next I .Row = 1 .Col = 1 .ColSel = .Cols - 1 .Redraw = True 允许重画,显示表格 End With End Function给第0列打钩MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = 改变行颜色 For i_Col = 0 To MSFlexGrid1.Cols - 1 MSFlexGrid1.Col = i_Col MSFlexGrid1.CellBackColor = &H80C0FF Next i_ColPrivate Sub Command1_Click()MSFlexGrid1.BackColorBkg = vbGreenEnd SubPrivate Sub Form_Load()MSFlexGrid1.Cols = 10MSFlexGrid1.Rows = 10MSFlexGrid1.FixedCols = 0MSFlexGrid1.FixedRows = 0MSFlexGrid1.SelectionMode = flexSelectionByRowEnd SubPrivate Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)On Error GoTo Err_Proc Dim intCurrCol As Long intCurrCol = MSFlexGrid1.Col 单击选择或不选择 If MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = Then MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = 改变行颜色 For i_Col = 0 To MSFlexGrid1.Cols - 1 MSFlexGrid1.Col = i_Col MSFlexGrid1.CellBackColor = vbWhite Next i_Col Else MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = 改变行颜色 For i_Col = 0 To MSFlexGrid1.Cols - 1 MSFlexGrid1.Col = i_Col MSFlexGrid1.CellBackColor = &H80C0FF Next i_Col End If MSFlexGrid1.Col = intCurrCol Exit SubEnd SubPrivate Sub MSFlexGrid1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) Me.Caption = MSFlexGrid1.MouseRow & , & MSFlexGrid1.MouseColEnd Sub我想实现的是当我选点击MSHFLEXGRID控件中某行的数据时,其颜色变为与原来的底色不同的颜色,但当我点击鼠标又重新选中其他行时,刚才选中的那一行恢复原来的颜色 ,而刚刚重新选中的新行显示 不同的颜色 。如何实现1. Private Sub mfg1_Click()2. Dim row, i, j As Integer3. row = mfg1.row4. mfg1.Redraw = False5. For i = 1 To mfg1.Rows - 16. mfg1.row = i7. For j = 0 To mfg1.Cols - 18. mfg1.Col = j9. mfg1.CellBackColor = &H8000000510. Next j11. Next i12. mfg1.row = row13. For j = 0 To mfg1.Cols - 114. mfg1.Col = j15. mfg1.CellBackColor = vbGreen16. Next j17. mfg1.Redraw = True18. End Sub按着ymshjg的方法选中行变色问题解决啦。可我要mshflexgrid的click事件中又添加了下面的代码,为的是实现添加数据行的功能。可添上后text1控件不动了。总在最后 一列,并且mshflexgrid控件 的数据显示总从非第一列显示(一)、Dim row, i, j As Integerrow = datadzh.rowdatadzh.Redraw = FalseFor i = 1 To datadzh.Rows - 1 datadzh.row = i For j = 0 To datadzh.Cols - 1 datadzh.Col = j datadzh.CellBackColor = &HC0FFFF Next jNext idatadzh.row = rowFor j = 0 To datadzh.Cols - 1 datadzh.Col = j datadzh.CellBackColor = vbGreenNext jdatadzh.Redraw = True(二)、With datadzh Text1.Left = .CellLeft + datadzh.Left - 10 Text1.Top = .CellTop + datadzh.Top - 10 Text1.Width = .CellWidth Text1.Height = .CellHeight Text1.Text = datadzh.Text Text1.Enabled = True Text1.Visible = True Text1.BackColor = &HC0FFFF End With Text1.Visible = True Text1.SetFocusend sub以上为mshflexgrid控件的click事件中全部的代码,要是把(一)、(二)两部分代码单独放置到CLICK事件中就没有问题,一同时放就有问题,不知道哪儿错了。问题解决了,终于找到原因啦。唉,我在datazw这个控件的mousedown事件下把text定位了。唉。解决了。自己结贴 了嘿嘿。在VB中,单击MSHFlexGrid中的任何一个单元格即能实现选中该行,这个是怎么实现的?选中的这行变为其它颜色。请各位老师给予帮助。另外单击列标头即能实现排列的互换,这又是怎么实现的呢?1.Selection Mode =1-By ROW 2. MouseDown事件中如果Y为列头则调用Sort方法MSHFlexGrid中单击某一行变色VBcodePrivateSubHFlexgrid_EnterCell()单击某一单元时,改变该行颜色Dimi_ColAsIntegerDimc_colAsIntegerc_col=Hflexgrid.ColIfc_col0ThenFori_Col=0ToHflexgrid.Cols-1Hflexgrid.Col=i_ColHflexgrid.CellBackColor=&HFFFFC0Nexti_ColHflexgrid.Col=c_colEndIfEndSubPrivateSubHFlexgrid_LeaveCell()当某一行失去焦点时,改变该行颜色Dimi_ColAsIntegerDimc_colAsIntegerc_col=Hflexgrid.ColFori_Col=0ToHflexgrid.Cols-1Hflexgrid.Col=i_ColHflexgrid.CellBackColor=vbWhiteNexti_ColHflexgrid.Col=c_colEndSub让MSHFlexGrid只能被选中一行MSHFlexGrid控件点击时可以选中多行,但有时我们需要仅仅选中一行,有一个小技巧:Option ExplicitDim CURRENTROW As IntegerPrivate Sub Form_Load()Dim i As Integer, j As IntegerWith MSHFlexGrid1.Rows = 10.Cols = 4For i = 1 To 9.TextMatrix(i, 0) = 第 & i & 行For j = 1 To 3.TextMatrix(0, j) = 第 & j & 列.TextMatrix(i, j) = i & , & jNextNextEnd WithEnd SubPrivate Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) With MSHFlexGrid1 .Row = .MouseRow CURRENTROW = .Row .Col = 0 .ColSel = .Cols - 1 End WithEnd SubPrivate Sub MSHFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)With MSHFlexGrid1.RowSel = CURRENTROW.ColSel = .Cols - 1End WithEnd Su

温馨提示

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

最新文档

评论

0/150

提交评论