Results 1 to 1 of 1

Thread: MSFlexGrid: The power of the FillStyle property

  1. #1

    Thread Starter
    PowerPoster Arnoutdv's Avatar
    Join Date
    Oct 2013
    Posts
    6,747

    MSFlexGrid: The power of the FillStyle property

    Using the FillStyle property you can change a range of cells with a single command.
    But you always have to take care about the current selected row, col, rowsel and colsel properties.
    That's why I wrote a generic function which is capable of changing most of the cell properties with a single command.

    Code:
    '---------------------------------------------------------------------------------------
    ' Author    : Arnoutdv/Flyuy
    ' Original  : http://web.archive.org/web/20150531180340/http://www.xtremevbtalk.com/showthread.php?p=824613#post824613
    '---------------------------------------------------------------------------------------
    Option Explicit
    
    Private Enum FGCellStyle
      fgcsBackColor = 1
      fgcsForeColor = 2
      fgcsText = 3
      fgcsTextStyle = 4
      fgcsFontName = 5
      fgcsFontBold = 6
      fgcsFontItalic = 7
      fgcsAllignment = 8
    End Enum
    
    Private Sub Form_Load()
      With MSFlexGrid1
        .Cols = 10
        .Rows = 10
      End With
      
      FG_Cell MSFlexGrid1, fgcsBackColor, 1, 1, 7, 7, RGB(191, 191, 255)
      FG_Cell MSFlexGrid1, fgcsBackColor, 3, 2, 7, 5, vbGreen
      FG_Cell MSFlexGrid1, fgcsForeColor, 1, 4, 3, 6, vbRed
      FG_Cell MSFlexGrid1, fgcsText, 1, 1, 5, 5, "Hello"
      FG_Cell MSFlexGrid1, fgcsFontBold, 2, 3, 5, 6, True
      FG_Cell MSFlexGrid1, fgcsAllignment, 2, 4, 3, 4, flexAlignRightCenter
      FG_Cell MSFlexGrid1, fgcsFontName, 1, 3, 2, 5, "Arial"
      FG_Cell MSFlexGrid1, fgcsTextStyle, 1, 1, 3, 3, flexTextRaised
    End Sub
    
    Private Sub FG_Cell(FG As MSFlexGrid, ByVal What As FGCellStyle, Row1 As Long, Col1 As Long, Row2 As Long, Col2 As Long, Value As Variant)
      Dim PrevRowCol(3) As Long    ' to store the actual settings
      Dim PrevFillStyle As Integer ' to store the actual settings
       
      With FG
        .Redraw = False
        
        ' Store current settings
        PrevFillStyle = .FillStyle
        PrevRowCol(0) = .Row:    PrevRowCol(2) = .RowSel
        PrevRowCol(1) = .Col:    PrevRowCol(3) = .ColSel
        
        ' Set the range
        .FillStyle = flexFillRepeat
        .Row = Row1:    .Col = Col1
        .RowSel = Row2: .ColSel = Col2
        
        ' Apply changes
        Select Case What
          Case fgcsBackColor:    .CellBackColor = Value
          Case fgcsForeColor:    .CellForeColor = Value
          Case fgcsText:         .Text = Value
          Case fgcsTextStyle:    .CellTextStyle = Value
          Case fgcsFontName:     .CellFontName = Value
          Case fgcsFontBold:     .CellFontBold = Value
          Case fgcsFontItalic:   .CellFontItalic = Value
          Case fgcsAllignment:   .CellAlignment = Value
        End Select
        
        ' Restore settings
        .FillStyle = PrevFillStyle
        .Row = PrevRowCol(0):    .Col = PrevRowCol(1)
        .RowSel = PrevRowCol(2): .ColSel = PrevRowCol(3)
        
        .Redraw = True
      End With
    End Sub
    Attached Images Attached Images  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width