Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Decide FlexGrid colum widths at run time

Posted on 2000-04-06
3
Medium Priority
?
373 Views
Last Modified: 2010-05-02
Hi,

Has anyone any ideas or suggestions as to how I can decide the width of my FlexGrid colums at run time. The FlexGrid is being populated by information from an Access DB.
e.g. An E-mail address column needs to be wider than a Telephone column. How can I allocate the correct colum width??

Any suggestions or help would be greatly appreciated.
cheers,
shovels
0
Comment
Question by:shovels
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 32

Expert Comment

by:Brendt Hess
ID: 2690599
Do you want the column widths to match the maximum size in the column?  

If you are populating the grid in code, then you could try something like this:

Set the Font on either a Form or a PictureBox to match the font in your grid.  Then check the TextWidth property for the size in twips, add a buffer, and assign that width to the column.

This example assumes a PictureBox (Pic1) with the font set correctly:

Dim strTmp as String

msFlexGrid1.Row = I
msFlexGrid1.Col = J
strTmp = rs!eMailAddr
msFlexGrid1.Text = strTmp
lngTmp = Pic1.TextWidth(strTmp) + 200 ' 200 twip margins around text
If lngTmp > msFlexGrid1.ColWidth(J) Then
  msFlexGrid1.ColWidth(J) = lngTmp
End If
.....

If you just want to set the widths to some fixed value:  

In Form_Load, add code like this:

With msFlexGrid1
  .ColWidth(0) = 100
  .ColWidth(1) = 350
  .ColWidth(2) = 2000
End With
0
 
LVL 1

Accepted Solution

by:
prakashbitra earned 100 total points
ID: 2690601
Use Colwidth property to decide the Flexgrid column width. If it has n number of columns use

    Colwidth(nth column)
0
 
LVL 14

Expert Comment

by:wsh2
ID: 2690606
Add a Picture box to your project and set its Visible property to False. The following routine will then got through the FlexGrid and Autosize the columns.. <smile>.

<----- Code Begin ----->

Private Sub x_MsFlexGrid_AutoSize()
With MSFlexGrid1

   MSFlexGrid1.Visible = False
   Picture1.Visible = False
   
   Dim lngBorder As Long
   Dim lngCol As Long
   Dim lngRow As Long
 
   lngBorder = 6 * Screen.TwipsPerPixelX
   
   ' Set all Column Widths to Minimum
   For lngCol = 0 To .Cols - 1
      .ColWidth(lngCol) = lngBorder
   Next lngCol
 
   ' Autosize
   For lngRow = 0 To .Rows - 1
      .Row = lngRow
      For lngCol = 0 To .Cols - 1
         .Col = lngCol
         If .Text <> "" _
         Then
            Picture1.FontBold = .CellFontBold
            Picture1.FontItalic = .CellFontItalic
            Picture1.FontName = .CellFontName
            Picture1.FontSize = .CellFontSize
            Picture1.FontStrikethru = .CellFontStrikeThrough
            Picture1.FontUnderline = .CellFontUnderline
            If (Picture1.TextWidth(.Text) + lngBorder) _
            > .ColWidth(lngCol) _
            Then
               .ColWidth(lngCol) = (Picture1.Width + lngBorder)
            End If
         End If
      Next lngCol
   Next lngRow
 
   MSFlexGrid1.Visible = True

End With
End Sub

<----- Code End ----->
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
Suggested Courses

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question