收藏 分销(赏)

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

上传人:pc****0 文档编号:8329324 上传时间:2025-02-10 格式:DOC 页数:10 大小:54.50KB 下载积分:10 金币
下载 相关 举报
常见改变MSHFLEXGRID的颜色的方法.doc_第1页
第1页 / 共10页
常见改变MSHFLEXGRID的颜色的方法.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
如何将选中的MSHFlexGrid一行高亮显示 高亮显示要设置颜色 Private   Sub   hflexgrid_EnterCell()      '单击某一单元时,改变该行颜色      Dim   i_Col   As   Integer      Dim   c_col   As   Integer      c_col   =   Hflexgrid.col      If   c_col   >   0   Then            For   i_Col   =   0   To   Hflexgrid.Cols   -   1                    Hflexgrid.col   =   i_Col                    Hflexgrid.CellBackColor   =   &HFFFFC0            Next   i_Col            Hflexgrid.col   =   c_col      End   If  End   Sub  Private   Sub   hflexgrid_LeaveCell()      '当某一行失去焦点时,恢复该行颜色      Dim   i_Col   As   Integer      Dim   c_col   As   Integer      c_col   =   Hflexgrid.col      For   i_Col   =   0   To   Hflexgrid.Cols   -   1              Hflexgrid.col   =   i_Col              Hflexgrid.CellBackColor   =   vbWhite      Next   i_Col      Hflexgrid.col   =   c_col  End   Sub mshflexgrid怎么改变某一行的背景色和字体颜色? Private Sub setColor(msfg As MSFlexGrid, row As Long, color As Long, bkcolor As Long) For i = 1 To msfg.Cols - 1 msfg.row = row msfg.Col = i msfg.CellForeColor = color '前景色 msfg.CellBackColor = bkcolor '背景色 Next End Sub Private Sub Command1_Click() setColor MSFlexGrid1, 3, &HFFFF&, &H8000000D End Sub Private 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 Next End Sub 让MSHFlexGrid只能被选中一行的另一方法 1、放置一个 HSB1 (HScrollBar) ,MSHFlexGrid1(MSHFlexGrid)  2、如下代码:  '---------------------------------------------------------  Private Sub Form_Load()      If MSHFlexGrid1.Cols then          HSB1.Min=1          HSB1.Max=MSHFlexGrid1.Cols      End If  End Sub  '---------------------------------------------------------  Private Sub HSB1 _Change()      If MSHFlexGrid1.Cols then          MSHFlexGrid1.Row = HSB1 .value          MSHFlexGrid1.ColSel = MSHFlexGrid1.Cols - 1      End If  End Sub  '---------------------------------------------------------  Private Sub MSHFlexGrid1_Click()       If MSHFlexGrid1.Cols then             HSB1 .value = MSHFlexGrid1.Row      End If  End 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   -   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_Col Private Sub Command1_Click() MSFlexGrid1.BackColorBkg = vbGreen End Sub Private Sub Form_Load() MSFlexGrid1.Cols = 10 MSFlexGrid1.Rows = 10 MSFlexGrid1.FixedCols = 0 MSFlexGrid1.FixedRows = 0 MSFlexGrid1.SelectionMode = flexSelectionByRow End Sub Private 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 Sub End Sub Private Sub MSFlexGrid1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)     Me.Caption = MSFlexGrid1.MouseRow & "," & MSFlexGrid1.MouseCol End Sub 我想实现的是当我选点击MSHFLEXGRID控件中某行的数据时,其颜色变为与原来的底色不同的颜色,但当我点击鼠标又重新选中其他行时,刚才选中的那一行恢复原来的颜色 ,而刚刚重新选中的新行显示 不同的颜色 。如何实现 1. Private Sub mfg1_Click() 2. Dim row, i, j As Integer 3. row = mfg1.row 4. mfg1.Redraw = False 5. For i = 1 To mfg1.Rows - 1 6.     mfg1.row = i 7.     For j = 0 To mfg1.Cols - 1 8.         mfg1.Col = j 9.         mfg1.CellBackColor = &H80000005 10.     Next j 11. Next i 12. mfg1.row = row 13. For j = 0 To mfg1.Cols - 1 14.     mfg1.Col = j 15.     mfg1.CellBackColor = vbGreen 16. Next j 17. mfg1.Redraw = True 18. End Sub 按着ymshjg的方法选中行变色问题解决啦。可我要mshflexgrid的click事件中又添加了下面的代码,为的是实现添加数据行的功能。可添上后text1控件不动了。总在最后 一列,并且mshflexgrid控件 的数据显示总从非第一列显示 (一)、Dim row, i, j As Integer row = datadzh.row datadzh.Redraw = False For i = 1 To datadzh.Rows - 1     datadzh.row = i     For j = 0 To datadzh.Cols - 1         datadzh.Col = j         datadzh.CellBackColor = &HC0FFFF     Next j Next i datadzh.row = row For j = 0 To datadzh.Cols - 1     datadzh.Col = j     datadzh.CellBackColor = vbGreen Next j datadzh.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.SetFocus end sub 以上为mshflexgrid控件的click事件中全部的代码,要是把(一)、(二)两部分代码单独放置到CLICK事件中就没有问题,一同时放就有问题,不知道哪儿错了。 问题解决了,终于找到原因啦。唉,我在datazw这个控件的mousedown事件下把text定位了。唉。解决了。自己结贴 了嘿嘿。 在VB中,单击MSHFlexGrid中的任何一个单元格即能实现选中该行,这个是怎么实现的?选中的这行变为其它颜色。请各位老师给予帮助。另外单击列标头即能实现排列的互换,这又是怎么实现的呢? 1.Selection Mode =1-By ROW 2. MouseDown事件中如果Y为列头则调用Sort方法 MSHFlexGrid中单击某一行变色 VB codePrivate Sub HFlexgrid_EnterCell()     '单击某一单元时,改变该行颜色     Dim i_Col As Integer     Dim c_col As Integer     c_col = Hflexgrid.Col     If c_col > 0 Then         For i_Col = 0 To Hflexgrid.Cols - 1             Hflexgrid.Col = i_Col             Hflexgrid.CellBackColor = &HFFFFC0         Next i_Col         Hflexgrid.Col = c_col     End If End Sub   Private Sub HFlexgrid_LeaveCell()     '当某一行失去焦点时,改变该行颜色     Dim i_Col As Integer     Dim c_col As Integer     c_col = Hflexgrid.Col     For i_Col = 0 To Hflexgrid.Cols - 1         Hflexgrid.Col = i_Col         Hflexgrid.CellBackColor = vbWhite     Next i_Col     Hflexgrid.Col = c_col End Sub 让MSHFlexGrid只能被选中一行 MSHFlexGrid控件点击时可以选中多行,但有时我们需要仅仅选中一行,有一个小技巧: Option Explicit Dim CURRENTROW As Integer Private Sub Form_Load() Dim i As Integer, j As Integer With MSHFlexGrid1 .Rows = 10 .Cols = 4 For i = 1 To 9 .TextMatrix(i, 0) = "第 " & i & " 行" For j = 1 To 3 .TextMatrix(0, j) = "第 " & j & " 列" .TextMatrix(i, j) = i & "," & j Next Next End With End Sub Private 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 With End Sub Private Sub MSHFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) With MSHFlexGrid1 .RowSel = CURRENTROW .ColSel = .Cols - 1 End With End Sub 如何让MSHFlexGrid只能被选中一行] Option Explicit Dim CURRENTROW As Integer Private Sub Form_Load() Dim i As Integer, j As Integer With MSHFlexGrid1 .Rows = 10 .Cols = 4 For i = 1 To 9 .TextMatrix(i, 0) = "第 " & i & " 行" For j = 1 To 3 .TextMatrix(0, j) = "第 " & j & " 列" .TextMatrix(i, j) = i & "," & j Next Next End With End Sub Private 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 With End Sub Private Sub MSHFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) With MSHFlexGrid1 .RowSel = CURRENTROW .ColSel = .Cols - 1 End With End Sub
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服