Click here to Skip to main content
11,574,503 members (63,118 online)
Click here to Skip to main content

Using the Flexgrid in VC++

, 30 Jul 2002 247.3K 68
Rate this:
Please Sign up or sign in to vote.
This article demonstrates the usage of the MS-Flexgrid using MFC

Introduction

When I had to use the flexgrid for the first time, I was too frustrated to find out that no proper documentation existed on the net. The ones available were too complicated for me to understand. And the ones that were easy were in VB. This article is to help persons who are going to use the flexgrid in their applications using VC++. Also take a look at the Warning note at the end of this article.

Implementation

Step 1

First, include the msflexgrid control in the project. To do that :-

  1. In the VC++ IDE Menu, go to Project->Add To Project->Components and Controls menu.
  2. Then , in the dialog box that appears, select Registered ActiveX Controls. There, You can see a control named "Microsoft Hierarchical FlexGrid Control...".
  3. Select that and add it to your project using the Insert button. You can now see the FlexGrid control in the resource editor's CONTROLS toolbar.
  4. Add it to your dialog as you add a control usually.

Step 2

Then, set the properties as you want it to be. Right click on the grid and select the Properties option. Change the settings there as per your requirements.

Step 3

Add a member variable for that grid. E.g. m_Grid. The sample given below is for an example. Use it as a guideline to make your application.

Step 4

Its better to clear the flexgrid before you do any operations on it. To do that, use :-

m_Grid.Clear();

Step 5

To add records to the Grid, use something like this.

CString strName,strRemarks;

m_nCount = 0;

// Clear and refresh the grid   
m_Grid.Clear();
m_Grid.Refresh();

// Get the value for strName from the database here 
// Get the strRemarks from the database here

m_nCols = m_Grid.GetCols();
m_Grid.SetTextArray(0, "Name " );      // First  Column
m_Grid.SetTextArray(1, "Remarks " );   // Second  Column

m_nCount++;

// Fill First Column 
m_Grid.SetTextArray(  m_nCols * m_nCount + 0,strName );      
// Fill Second  Column
m_Grid.SetTextArray(  m_nCols * m_nCount + 1, strRemarks );  

// Redraw the grid
m_Grid.SetRedraw(TRUE);
m_Grid.Refresh();

Step 6

To retrieve data from the Grid when the user double clicks on a record, add a double click message handler for the grid using the class wizard. Assuming that you have named the function as OnDblClickGrid, then :-

void YourDialog::OnDblClickGrid()
{
    // Get the current row and column
    int nRow = m_Grid.GetRow();
    int nCol = m_Grid.GetCol();

    CString strName,strRemarks;

    // Get data from the First Column
    strName    =  m_Grid.GetTextMatrix(nRow,nCol+0);    
    // Get data from the Second Column
    strRemarks =  m_Grid.GetTextMatrix(nRow,nCol+1);    
}

Step 7

To move to the previous record, do this :-

void YourDialog::OnBtnPrevious()
{
    m_Grid.SetRedraw(FALSE);

    // Get the current selection

    int NextRow = m_Grid.GetRowSel();

    // If the position is at the last record, return
    if(NextRow <= 1)
    {
        return;
    }
    else
    {
        long BackColor[2],FontColor[2];

        int Column;

        // The BackColor and the FontColor variables 
        // are manipulated because we want a 
        // selected effect to be given to the previous
        // record. Here, we are merely changing 
        // the color of the selected
        // row to give it that effect.

        BackColor[0] = 0x00FFFFFF;
        BackColor[1] = 0x00FFFFB0;

        FontColor[0] = 0x00400000;
        FontColor[1] = 0x000000FF;

        for(Column = 1; Column < m_Grid.GetCols(); Column++)
        {
            m_Grid.SetCol(Column);
            m_Grid.SetCellBackColor(BackColor[0]);
            m_Grid.SetCellForeColor(FontColor[0]);
        }


        m_Grid.SetRow(--NextRow);

        for(Column = 1; Column < m_Grid.GetCols(); Column++)
        {
            m_Grid.SetCol(Column);
            m_Grid.SetCellBackColor(BackColor[1]);
            m_Grid.SetCellForeColor(FontColor[1]);
        }

        m_Grid.Refresh();
        m_Grid.SetRedraw(TRUE);
    }
}

Step 8

To got to the Next record, do the reverse of the code above. Instead of m_Grid.SetRow(--NextRow) it would be m_Grid.SetRow(++NextRow).

Warning

Whenever you use a flexgrid in your application, you have to be twice as careful. Be sure to take regular backups. Sometimes, you might note that your compilation time is too longer than usual. It would be more and more slow with each build. If you feel so, check the size of your .rc file. If its size is abnormal ( I cant specify a size because it depends on your project and its resource contents ),then delete the flexgrid from your application , Close Visual Studio and copy the .rc file from your backup. Open your project again. That should solve your problem. I'm not sure why this happens, maybe its a bug in flexgrid that corrupts or damages it. But from your side, be careful.

Conclusion

The flexgrid is a very easy control to use. But whenever you use it , repeat the mantra "take backups of your .rc file regularly" until it becomes a habit. That's it. All luck and have a great time.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

VGirish
Founder
India India
No Biography provided

You may also be interested in...

Comments and Discussions

 
QuestionVC++, How we can add a record at the end of MSFlexGrid in VC++? Pin
Member 41874229-Oct-11 14:11
memberMember 41874229-Oct-11 14:11 
GeneralFlexgrid in VB6 Pin
Member 231839324-Sep-09 18:34
memberMember 231839324-Sep-09 18:34 
QuestionHow Should selected cell? Pin
Divyang Mithaiwala13-Mar-07 2:12
memberDivyang Mithaiwala13-Mar-07 2:12 
Questionresize the grid when the form is maximized Pin
Member #13214389-Mar-07 11:11
memberMember #13214389-Mar-07 11:11 
QuestionHow To Support Editing On Flex Grid Pin
MIAN KAMRAN22-Feb-07 22:12
memberMIAN KAMRAN22-Feb-07 22:12 
QuestionDoModal returns -1 when using FlexGrid [modified] Pin
al250028-Sep-06 16:10
memberal250028-Sep-06 16:10 
AnswerRe: DoModal returns -1 when using FlexGrid Pin
al250029-Sep-06 9:16
memberal250029-Sep-06 9:16 
GeneralShould not replace the original value in the combo box Pin
Sriram P.S2-May-06 21:13
memberSriram P.S2-May-06 21:13 
Generaladding combox in msflexgrid Pin
Sriram P.S28-Apr-06 1:03
memberSriram P.S28-Apr-06 1:03 
GeneralRe: adding combox in msflexgrid Pin
VGirish28-Apr-06 1:15
memberVGirish28-Apr-06 1:15 
GeneralRe: adding combox in msflexgrid Pin
Sriram P.S28-Apr-06 1:32
memberSriram P.S28-Apr-06 1:32 
QuestionWhat is the difference between FlexGrid and Heirarchical-FlexGrid ? Pin
cfilorux25-Apr-06 11:10
membercfilorux25-Apr-06 11:10 
Questionmsflexgrid redefinition error Pin
LucianoLiu25-Apr-06 4:07
memberLucianoLiu25-Apr-06 4:07 
AnswerRe: msflexgrid redefinition error Pin
cfilorux25-Apr-06 10:51
membercfilorux25-Apr-06 10:51 
GeneralRe: msflexgrid redefinition error Pin
LucianoLiu27-Apr-06 0:54
memberLucianoLiu27-Apr-06 0:54 
Generalmultiple selection Pin
fatih isikhan4-Jan-06 3:47
memberfatih isikhan4-Jan-06 3:47 
QuestionDesign-time error Pin
rankot7-Dec-05 20:55
memberrankot7-Dec-05 20:55 
AnswerRe: Design-time error Pin
cfilorux25-Apr-06 11:03
membercfilorux25-Apr-06 11:03 
GeneralkyLaiHow to add item to flexgrid Pin
topky20-Sep-05 17:35
membertopky20-Sep-05 17:35 
QuestionHow to add item to flexgrid Pin
topky20-Sep-05 17:34
membertopky20-Sep-05 17:34 
AnswerRe: How to add item to flexgrid Pin
rgordon9929-Sep-05 10:34
memberrgordon9929-Sep-05 10:34 
GeneralScroll event Pin
Anonymous24-May-05 4:48
sussAnonymous24-May-05 4:48 
GeneralSorting a column Pin
centuriansix19-May-05 20:22
membercenturiansix19-May-05 20:22 
Jokehttp://deramaxx.ceroline.info/ Pin
http://deramaxx.ceroline.info/5-Dec-07 2:40
susshttp://deramaxx.ceroline.info/5-Dec-07 2:40 
GeneralFlexgrid over Dialogbar Pin
anubis_ex12-May-05 3:10
memberanubis_ex12-May-05 3:10 
GeneralRe: Flexgrid over Dialogbar Pin
anubis_ex15-Jul-06 10:01
memberanubis_ex15-Jul-06 10:01 
GeneralSetScrollPos( ) not moving grid Pin
Anonymous4-May-05 1:40
sussAnonymous4-May-05 1:40 
GeneralRe: SetScrollPos( ) not moving grid Pin
Duman Nir10-Aug-06 0:34
memberDuman Nir10-Aug-06 0:34 
QuestionHow do you add Row Headers Pin
Anonymous6-Apr-05 7:45
sussAnonymous6-Apr-05 7:45 
AnswerRe: How do you add Row Headers Pin
Anonymous6-Apr-05 8:08
sussAnonymous6-Apr-05 8:08 
QuestionHow to change Font Pin
prasad.morkar26-Mar-05 19:36
memberprasad.morkar26-Mar-05 19:36 
GeneralFlexGrid in Tab Control Dialog Pin
Milan Risto16-Feb-05 21:57
memberMilan Risto16-Feb-05 21:57 
QuestionHow to select multiple cells using ctrl key? Pin
parashar_ranjana@yahoo.com12-Oct-04 20:46
memberparashar_ranjana@yahoo.com12-Oct-04 20:46 
GeneralFlexGrid Rows Navigation in Dynamic CWnd View Pin
AnonymousVCGuy6-May-04 21:39
sussAnonymousVCGuy6-May-04 21:39 
QuestionHow can I put background-color into some special cells? Pin
liushan15-Mar-04 22:33
memberliushan15-Mar-04 22:33 
QuestionHow can insert CheckBox in FlexGrid? Pin
holysmoke23-Feb-04 22:15
memberholysmoke23-Feb-04 22:15 
AnswerRe: How can insert CheckBox in FlexGrid? Pin
beaulah15-Jul-04 6:22
memberbeaulah15-Jul-04 6:22 
GeneralRe: How can insert CheckBox in FlexGrid? Pin
sarathbs25-Feb-07 21:58
membersarathbs25-Feb-07 21:58 
GeneralRe: How can insert CheckBox in FlexGrid? Pin
shah sachin n22-Sep-08 4:06
membershah sachin n22-Sep-08 4:06 
QuestionHow can I let user type in my grid? Pin
Koorosh Pedram29-Jan-04 7:12
sussKoorosh Pedram29-Jan-04 7:12 
AnswerRe: How can I let user type in my grid? Pin
beaulah5-Oct-05 20:13
memberbeaulah5-Oct-05 20:13 
GeneralOwner draw cell Pin
Appstmd23-Dec-03 1:21
memberAppstmd23-Dec-03 1:21 
QuestionHow to use Flexgrid in a DLL Pin
LuisM24-Nov-03 1:22
memberLuisM24-Nov-03 1:22 
AnswerRe: How to use Flexgrid in a DLL Pin
Anon E. Mouse29-Jan-04 8:27
memberAnon E. Mouse29-Jan-04 8:27 
Generalmissing flexgrid methods Pin
Anonymous21-Oct-03 17:36
sussAnonymous21-Oct-03 17:36 
GeneralRe: missing flexgrid methods Pin
Anonymous21-Oct-03 17:55
sussAnonymous21-Oct-03 17:55 
GeneralRe: missing flexgrid methods Pin
frodi12-Aug-05 7:07
memberfrodi12-Aug-05 7:07 
QuestionHow to use SetDataSource?? Pin
AmyLoo15-Jul-03 16:23
memberAmyLoo15-Jul-03 16:23 
GeneralProblem on MSFlexGrid pointer type Pin
Arash Hemmati25-Jun-03 22:17
memberArash Hemmati25-Jun-03 22:17 
GeneralRe: Problem on MSFlexGrid pointer type Pin
MAK4maX10-Feb-04 18:20
memberMAK4maX10-Feb-04 18:20 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.150624.2 | Last Updated 31 Jul 2002
Article Copyright 2002 by VGirish
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid