好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

常见改变MSHFLEXGRID的颜色的方法.docx

10页
  • 卖家[上传人]:公****
  • 文档编号:460273379
  • 上传时间:2023-12-28
  • 文档格式:DOCX
  • 文档大小:16.65KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 如何将选中的MSHFlexGrid 一行高亮显示高亮显示要设置颜色Private Sub hflexgrid_EnterCell()'单击某一单元时,改变该行颜色Dim i_Col As IntegerDim c_col As Integer c_col = Hflexgrid.col If c_col > 0 ThenFor i_Col = 0 To Hflexgrid.Cols - 1 Hflexgrid.col = i_Col Hflexgrid.CellBackColor = &HFFFFC0Next i_ColHflexgrid.col = c_colEnd IfEnd SubPrivate Sub hflexgrid_LeaveCell()'当某一行失去焦点时,恢复该行颜色Dim i_Col As IntegerDim c_col As Integer c_col = Hflexgrid.colFor i_Col = 0 To Hflexgrid.Cols - 1Hflexgrid.col = i_ColHflexgrid.Cel lB ackColor = vbWhiteNext i_ColHflexgrid.col = c_colEnd Submshflexgrid怎么改变某一行的背景色和字体颜色?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.Cel lB ackColor = bkcolor '背 景色NextEnd SubPrivate Sub Command1_Click()setColor MSFlexGrid1,3, &HFFFF&, &H8000000DEnd SubPrivate Sub Form_Load()MSFlexGrid1.Rows = 5MSFlexGrid1.Cols = 5For i = 1 To 4Forj = 1 To 4MSFlexGrid1.TextMatrix(i, j) = jNextNextEnd Sub让MSHFlexGrid只能被选中一行的另一方法1、 放置一个 HSB1 (HScrollBar) ,MSHFlexGrid1(MSHFlexGrid)2、 如下代码:' Private Sub Form_Load()If MSHFlexGrid1.Cols thenHSB1.Min=1HSB1.Max=MSHFlexGrid1.ColsEnd IfEnd SubPrivate Sub HSB1 _Change()If MSHFlexGridl.Cols thenMSHFlexGridl.Row = HSB1 .valueMSHFlexGrid1.ColSel = MSHFlexGrid1.Cols - 1End IfEnd Sub ' Private Sub MSHFlexGrid1_Click()If MSHFlexGrid1.Cols thenHSB1 .value = MSHFlexGrid1.RowEnd IfEnd Sub怎么改变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 - 1If I / 2 = Int(I / 2) Then '判断是单是双.Cel l BackColor = RGB(224, 248, 224)'双行的底色Else.Cel l BackColor = RGB(240, 248, 224)'单行的底色End IfNext I.Row = 1.Col = 1.ColSel = .Cols - 1.Redraw = True '允许重画,显示表格End WithEnd Function给第0列打钩MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = "V"'改变行颜色For i_Col = 0 To MSFlexGridl.Cols - 1MSFlexGridl.Col = i_ColMSFlexGrid1.CellBackColor = &H80C0FFNext 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 Intege, Shift As Integer x AsSingle, y As Single)'On Error GoTo Err_ProcDim intCurrCol As LongintCurrCol = MSFlexGrid1.Col'单击选择或不选择If MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = "V" ThenMSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0)=""'改变行颜色For i_Col = 0 To MSFlexGrid1.Cols - 1MSFlexGrid1.Col = i_ColMSFlexGrid1.CellBackColor = vbWhiteNext i_ColElseMSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = "V”'改变行颜色For i_Col = 0 To MSFlexGrid1.Cols - 1MSFlexGrid1.Col = i_ColMSFlexGrid1.CellBackColor = &H80C0FFNext i_ColEnd IfMSFlexGridl.Col = intCurrColExit SubEnd SubPrivate Sub MSFlexGrid1_MouseMove(Button As Integer Shift As Integer, x AsSingle, y As Single)Me.Caption = MSFlexGridl.MouseRow & "," & MSFlexGridl.MouseCol End 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事件中又添加了下 面的代码,为的是实现添加数据行的功能可添上后textl控件不动了总在最后一列, 并且mshflexgrid控件 的数据显示总从非第一列显示(一) 、Dim row, i, j As Integerrow = datadzh.rowdatadzh.Redraw = FalseFor i = 1 To datadzh.Rows - 1datadzh.row = iFor j = 0 To datadzh.Cols - 1datadzh.Col = jdatadzh.CellBackColor = &HC0FFFFNext jNext idatadzh.row = rowFor j = 0 To datadzh.Cols - 1datadzh.Col = jdatadzh.CellBackColor = vbGreenNext jdatadzh.Redraw = True(二) 、With datadzhText1.Left = .CellLeft + datadzh.Left - 10Text1.Top = .CellTop + datadzh.Top - 10Text1.Width = .CellWidthText1.Height = .CellHeightText1.Text = datadzh.TextText1.Enabled = TrueText1.Visible = TrueTextI.BackColor = &HC0FFFFEnd WithTextl.Visible = TrueText1.SetFocusend sub以上为mshflexgrid控件的click事件中全部的代码,要是把(一、(二)两部分代码单独放 置到CLICK事件中就没有问题,一同时放就有问题,不知道哪儿错了。

      问题解决了,终于找到原因啦唉,我在datazw这个控件的mousedown事件下把text定 位了自己结贴了嘿嘿在VB中,单击MSHFlexGrid中的任何一个单元格即能实现选中该行,这个是怎么实现的? 选中的这行变为其它颜色请各位老师给予帮助。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.