| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1926 人关注过本帖, 1 人收藏
标题:如何设定MSHFlexgrid中包含 0 的单元格的背景颜色
只看楼主 加入收藏
z8571127
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2010-3-26
结帖率:83.33%
收藏(1)
已结贴  问题点数:10 回复次数:9 
如何设定MSHFlexgrid中包含 0 的单元格的背景颜色
如何设定MSHFlexgrid中包含 0 的单元格的背景颜色
也就是说 MSHFlexgrid中凡是含有 0 的 背景颜色都改变。
需要代码。
谢谢。
搜索更多相关主题的帖子: 如何 
2011-06-07 15:46
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
程序代码:
Private Sub Form_Load()
Dim i As Integer, j As Integer

    With MSFlexGrid1
        .Rows = 10
        .Cols = 10
        
        For i = 0 To 9
            For j = 0 To 9
                .Row = j: .Col = i
                
                If i = 0 Then
                    .CellBackColor = RGB(128, 128, 128)
                Else
                    If j = 0 Then
                        .CellBackColor = RGB(128, 128, 128)
                    Else
                        .TextMatrix(i, j) = 1
                        .CellBackColor = RGB(0, 0, 0)
                    End If
                End If
            Next j
        Next i
    End With
End Sub

不要選我當版主
2011-06-07 16:37
z8571127
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2010-3-26
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

不是这样的

我的意思是这里含有   “0”    的背景色都变成红色的。
2011-06-08 22:50
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 

那是要在一开始填值的时候顺便变色〜
程序代码:
For i=0 to XXX
    For j=0 to YYY
        If Array(i, j) = 0 then
            .CellBackColor = RGB(0, 0, 0)
            .TextMatrix(i+1, j+1) = 0
        Else
            .CellBackColor = RGB(255, 255, 255)
            .TextMatrix(i+1, j+1) = Array(i, j)
        End if
    Next j
Next i


或是填完所有值后〜再一次重新判断哪些值是0要变色?
程序代码:
For i=1 to XXX
    For j=1 to YYY
        If .TextMatrix(i, j) = 0 then
            .CellBackColor = RGB(0, 0, 0)
            .TextMatrix(i, j) = 0
        Else
            .CellBackColor = RGB(255, 255, 255)
        End if
    Next j
Next i


代码大概离不开上面那几行〜这代码我是直接写在网页上的〜没在VB中上运行过〜

P.S 红色的RGB值自己查查〜

我不会送短消息〜你10点多寄的〜这篇我快12点回的〜应该指的是不同篇吧?
我本来是以为你要让左边和上面第0格的边框变色〜


[ 本帖最后由 wube 于 2011-6-8 23:50 编辑 ]

不要選我當版主
2011-06-08 23:42
z8571127
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2010-3-26
收藏
得分:0 
谢谢您的帮助,可是没变化
2011-06-09 13:20
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
回复 5楼 z8571127
有不一样吗?".CellBackColor" ~来来去去都是这属性~只是看你摆在哪而已~

程序代码:
Option Explicit

Private Sub cmdCommand1_Click()
Dim i As Integer, j As Integer

    With MSFlexGrid1
        For i = 0 To 9
            For j = 0 To 9
                .TextMatrix(j + 1, i + 1) = j
                If .TextMatrix(j + 1, i + 1) = 0 Then
                    .Row = j + 1: .Col = i + 1
                    .CellBackColor = RGB(255, 0, 0)    '有不一样吗?
                End If
            Next j
        Next i
    End With

End Sub

Private Sub Form_Load()
Dim i As Integer, j As Integer

    With MSFlexGrid1
        .Rows = 11
        .Cols = 11
    End With
    
End Sub


[ 本帖最后由 wube 于 2011-6-9 14:07 编辑 ]

不要選我當版主
2011-06-09 14:01
z8571127
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2010-3-26
收藏
得分:0 
程序代码:
Private Sub Command1_Click()


     For i = 0 To List1.ListCount - 2
      a = Left(Right(List1.List(i), 3), 1)
      c = Right(Right(List1.List(i), 3), 1)
      d = Right(Val(a) + Val(c), 1)
      MSFlexGrid1.TextMatrix(i + 2, 2) = d & "   "
      MSFlexGrid1.TextMatrix(i + 2, 3) = Right(a + 2, 1) & "   "
      If Right(a + 2, 1) = d Then
      MSFlexGrid1.TextMatrix(i + 2, 4) = ""
      Else
      MSFlexGrid1.TextMatrix(i + 2, 4) = ""
      End If

     Next
    
End Sub

Private Sub Form_Load()

MSFlexGrid1.Rows = 22
MSFlexGrid1.Cols = 5
For i = 2011001 To 2011020
List1.AddItem i
Next

End Sub

    变成红色背景。
2011-06-11 00:53
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:10 
回复 7楼 z8571127
程序代码:
Option Explicit

Private Const Square = ""     '这个改不改没差〜只是个人习惯而已〜

Private Sub Command1_Click()
Dim i As Long
Dim a As String, c As String, d As String

    With MSFlexGrid1
   
        For i = 0 To List1.ListCount - 2
       
            a = Left(Right(List1.List(i), 3), 1)
            c = Right(Right(List1.List(i), 3), 1)
            d = Right(Val(a) + Val(c), 1)
           
            .TextMatrix(i + 2, 2) = d & "   "
            .TextMatrix(i + 2, 3) = Right(a + 2, 1) & "   "
           
            If Right(a + 2, 1) = d Then
                .TextMatrix(i + 2, 4) = ""
            Else
                .TextMatrix(i + 2, 4) = Square
                .Row = i + 2: .Col = 4              '但是这行更重要〜一般人都会忽略这个〜MSFlexGrid的很笨〜不像EXCEL中会自己调整光标〜所以你要手动帮他指定位置〜
                .CellBackColor = RGB(255, 0, 0)     '还是这行没变〜
            End If
       
        Next i
       
   End With
  
End Sub

Private Sub Form_Load()
Dim i As Long

    MSFlexGrid1.Rows = 22
    MSFlexGrid1.Cols = 5
   
    For i = 2011001 To 2011020
        List1.AddItem i
    Next i

End Sub 

[local]1[/local]


[ 本帖最后由 wube 于 2011-6-11 01:23 编辑 ]

fsdfdsf.JPG (42.67 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

不要選我當版主
2011-06-11 01:13
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
P.S 1.因为顺便在解别题〜所以界面上会多个按钮〜
P.S 2.贴完代码后〜怎光标移不出代码区?无法换行 = =.

不要選我當版主
2011-06-11 01:26
z8571127
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2010-3-26
收藏
得分:0 
高手 谢谢 问题解决
2011-06-11 15:35
快速回复:如何设定MSHFlexgrid中包含 0 的单元格的背景颜色
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019692 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved