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

上传人:b****2 文档编号:17190290 上传时间:2023-04-24 格式:DOCX 页数:10 大小:17.59KB
下载 相关 举报
常见改变MSHFLEXGRID的颜色的方法.docx_第1页
第1页 / 共10页
常见改变MSHFLEXGRID的颜色的方法.docx_第2页
第2页 / 共10页
常见改变MSHFLEXGRID的颜色的方法.docx_第3页
第3页 / 共10页
常见改变MSHFLEXGRID的颜色的方法.docx_第4页
第4页 / 共10页
常见改变MSHFLEXGRID的颜色的方法.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

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

《常见改变MSHFLEXGRID的颜色的方法.docx》由会员分享,可在线阅读,更多相关《常见改变MSHFLEXGRID的颜色的方法.docx(10页珍藏版)》请在冰豆网上搜索。

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

常见改变MSHFLEXGRID的颜色的方法

如何将选中的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怎么改变某一行的背景色和字体颜色?

 

PrivateSubsetColor(msfgAsMSFlexGrid,rowAsLong,colorAsLong,bkcolorAsLong)

Fori=1Tomsfg.Cols-1

msfg.row=row

msfg.Col=i

msfg.CellForeColor=color'前景色

msfg.CellBackColor=bkcolor'背景色

Next

EndSub

PrivateSubCommand1_Click()

setColorMSFlexGrid1,3,&HFFFF&,&H8000000D

EndSub

PrivateSubForm_Load()

MSFlexGrid1.Rows=5

MSFlexGrid1.Cols=5

Fori=1To4

Forj=1To4

MSFlexGrid1.TextMatrix(i,j)=j

Next

Next

EndSub

让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)="√"

      '改变行颜色

      Fori_Col=0ToMSFlexGrid1.Cols-1

        MSFlexGrid1.Col=i_Col

        MSFlexGrid1.CellBackColor=&H80C0FF

      Nexti_Col

PrivateSubCommand1_Click()

MSFlexGrid1.BackColorBkg=vbGreen

EndSub

PrivateSubForm_Load()

MSFlexGrid1.Cols=10

MSFlexGrid1.Rows=10

MSFlexGrid1.FixedCols=0

MSFlexGrid1.FixedRows=0

MSFlexGrid1.SelectionMode=flexSelectionByRow

EndSub

PrivateSubMSFlexGrid1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

'OnErrorGoToErr_Proc

  DimintCurrCol    AsLong

  intCurrCol=MSFlexGrid1.Col

  '单击选择或不选择

    IfMSFlexGrid1.TextMatrix(MSFlexGrid1.Row,0)="√"Then

      MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,0)=""

      '改变行颜色

      Fori_Col=0ToMSFlexGrid1.Cols-1

        MSFlexGrid1.Col=i_Col

        MSFlexGrid1.CellBackColor=vbWhite

      Nexti_Col

      

  Else

      MSFlexGrid1.TextMatrix(MSFlexGrid1.Row,0)="√"

      '改变行颜色

      Fori_Col=0ToMSFlexGrid1.Cols-1

        MSFlexGrid1.Col=i_Col

        MSFlexGrid1.CellBackColor=&H80C0FF

      Nexti_Col

      

  EndIf

  MSFlexGrid1.Col=intCurrCol

  ExitSub

EndSub

PrivateSubMSFlexGrid1_MouseMove(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

  Me.Caption=MSFlexGrid1.MouseRow&","&MSFlexGrid1.MouseCol

EndSub

 

我想实现的是当我选点击MSHFLEXGRID控件中某行的数据时,其颜色变为与原来的底色不同的颜色,但当我点击鼠标又重新选中其他行时,刚才选中的那一行恢复原来的颜色,而刚刚重新选中的新行显示不同的颜色。

如何实现

 

1.PrivateSubmfg1_Click()

2.Dimrow,i,jAsInteger

3.row=mfg1.row

4.mfg1.Redraw=False

5.Fori=1Tomfg1.Rows-1

6.  mfg1.row=i

7.  Forj=0Tomfg1.Cols-1

8.      mfg1.Col=j

9.      mfg1.CellBackColor=&H80000005

10.  Nextj

11.Nexti

12.mfg1.row=row

13.Forj=0Tomfg1.Cols-1

14.  mfg1.Col=j

15.  mfg1.CellBackColor=vbGreen

16.Nextj

17.mfg1.Redraw=True

18.EndSub

按着ymshjg的方法选中行变色问题解决啦。

可我要mshflexgrid的click事件中又添加了下面的代码,为的是实现添加数据行的功能。

可添上后text1控件不动了。

总在最后一列,并且mshflexgrid控件的数据显示总从非第一列显示

(一)、Dimrow,i,jAsInteger

row=datadzh.row

datadzh.Redraw=False

Fori=1Todatadzh.Rows-1

  datadzh.row=i

  Forj=0Todatadzh.Cols-1

      datadzh.Col=j

      datadzh.CellBackColor=&HC0FFFF

  Nextj

Nexti

datadzh.row=row

Forj=0Todatadzh.Cols-1

  datadzh.Col=j

  datadzh.CellBackColor=vbGreen

Nextj

datadzh.Redraw=True

(二)、Withdatadzh

      

        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

      

EndWith

      Text1.Visible=True

      Text1.SetFocus

endsub

以上为mshflexgrid控件的click事件中全部的代码,要是把

(一)、

(二)两部分代码单独放置到CLICK事件中就没有问题,一同时放就有问题,不知道哪儿错了。

问题解决了,终于找到原因啦。

唉,我在datazw这个控件的mousedown事件下把text定位了。

唉。

解决了。

自己结贴了嘿嘿。

在VB中,单击MSHFlexGrid中的任何一个单元格即能实现选中该行,这个是怎么实现的?

选中的这行变为其它颜色。

请各位老师给予帮助。

另外单击列标头即能实现排列的互换,这又是怎么实现的呢?

1.SelectionMode=1-ByROW

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控件点击时可以选中多行,但有时我们需要仅仅选中一行,有一个小技巧:

OptionExplicit

DimCURRENTROWAsInteger

PrivateSubForm_Load()

DimiAsInteger,jAsInteger

WithMSHFlexGrid1

.Rows=10

.Cols=4

Fori=1To9

.TextMatrix(i,0)="第"&i&"行"

Forj=1To3

.TextMatrix(0,j)="第"&j&"列"

.TextMatrix(i,j)=i&","&j

Next

Next

EndWith

EndSub

PrivateSubMSHFlexGrid1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

   WithMSHFlexGrid1

    .Row=.MouseRow

         CURRENTROW=.Row

     .Col=0

       .ColSel=.Cols-1

   EndWith

EndSub

PrivateSubMSHFlexGrid1_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

WithMSHFlexGrid1

.RowSel=CURRENTROW

.ColSel=.Cols-1

EndWith

EndSub

 

如何让MSHFlexGrid只能被选中一行]

OptionExplicit

DimCURRENTROWAsInteger

PrivateSubForm_Load()

DimiAsInteger,jAsInteger

WithMSHFlexGrid1

.Rows=10

.Cols=4

Fori=1To9

.TextMatrix(i,0)="第"&i&"行"

Forj=1To3

.TextMatrix(0,j)="第"&j&"列"

.TextMatrix(i,j)=i&","&j

Next

Next

EndWith

EndSub

PrivateSubMSHFlexGrid1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

WithMSHFlexGrid1

.Row=.MouseRow

CURRENTROW=.Row

.Col=0

.ColSel=.Cols-1

EndWith

EndSub

PrivateSubMSHFlexGrid1_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

WithMSHFlexGrid1

.RowSel=CURRENTROW

.ColSel=.Cols-1

EndWith

EndSub

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1