IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC][VS6.0] Flexgrid


Sujet :

MFC

  1. #1
    Membre �clair� Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    D�tails du profil
    Informations personnelles :
    Localisation : France, Sa�ne et Loire (Bourgogne)

    Informations professionnelles :
    Activit� : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par d�faut [MFC][VS6.0] Flexgrid
    Bonjour,
    Je cherche a remplir un flexgrid, je n'arrive pas a savoir comment d�clarer le type de la variable accroch�e a mon flexgrid, elle s'appelle
    m_FlexGrid j'�ffectue un cast voici mon code :



    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    		// Remplissange du Flexgrid
    		// Concaténation text
     
    	CMSFlexGrid* m_FlexGrid = 0;
    	m_FlexGrid = static_cast<CMSFlexGrid*>(GetDlgItem(IDC_MSFLEXGRID));
    	CString result;
    	CString txt_1;
    	CString txt_2;
     
    	m_FlexGrid->Clear();
        m_FlexGrid->SetRows(2);
        m_FlexGrid->SetFormatString("Nom|prenom|adresse");
     
    	GetDlgItem(IDC_EDIT1)->GetWindowText(txt_1);
    	GetDlgItem(IDC_EDIT2)->GetWindowText(txt_2);
     
    	result = "";
    	for (int j = 0;j<12;j++)
    	{
     
    		result = result + txt_1 + txt_2;
    		m_FlexGrid->SetCol(j);
    		m_FlexGrid->AddString(result);	
                    }

    Cdlt
    Philo

  2. #2
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Salut,

    Pour utiliser le contr�le activeX MSFlexgrid tu dois g�n�rer une classe MFC � partir d'un contr�le ActiveX. Le code g�n�r� te produit la classe CMSFlexGrid qui d�rive de CWnd

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class CMSFlexGrid : public CWnd
    {
    protected:
    	DECLARE_DYNCREATE(CMSFlexGrid)
    public:
    CLSID const& GetClsid()
    	{
    		static CLSID const clsid
    			= { 0x6262D3A0, 0x531B, 0x11CF, { 0x91, 0xF6, 0xC2, 0x86, 0x3C, 0x38, 0x5E, 0x30 } };
    		return clsid;
    	}
    //...
    Ensuite tu d�clares le contr�le ActiveX par exemple dans ta bo�te de dialogue

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    CMSFlexGrid	m_FlexGrid;
    Et tu associes ce contr�le � un ID de ressource dans DoDataExchange() comme ceci

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    DDX_Control(pDX, IDC_MSFLEXGRID1, m_FlexGrid);
    Ensuite tu peux l'initialiser ainsi dans une de tes m�thodes

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    m_FlexGrid.Clear();
    	m_FlexGrid.SetCols(6);
    	m_FlexGrid.SetRows(2);
    	m_FlexGrid.SetCol(0);m_FlexGrid.SetRow(0);
    	m_FlexGrid.SetColWidth(0,1402);	m_FlexGrid.SetText("N° CPTE");
    	//
    	m_FlexGrid.SetCol(1);m_FlexGrid.SetRow(0);
    	m_FlexGrid.SetColWidth(1,4000);	m_FlexGrid.SetText("DESIGNATION");
    	//
    	m_FlexGrid.SetCol(2);m_FlexGrid.SetRow(0);
    	m_FlexGrid.SetColWidth(2,2272);	m_FlexGrid.SetText("TOTAUX DEBITS");
    	//
    	m_FlexGrid.SetCol(3);m_FlexGrid.SetRow(0);
    	m_FlexGrid.SetColWidth(3,2272);	m_FlexGrid.SetText("TOTAUX CREDITS");
    	//
    	m_FlexGrid.SetCol(4);m_FlexGrid.SetRow(0);
    	m_FlexGrid.SetColWidth(4,2272);m_FlexGrid.SetText("SOLDES DEBITEURS");
    	//
    	m_FlexGrid.SetCol(5);m_FlexGrid.SetRow(0);
    	m_FlexGrid.SetColWidth(5,2272);m_FlexGrid.SetText("SOLDES CREDITEURS");
    Et tu peux l'utiliser comme ceci
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    m_FlexGrid.SetRows(NumLigne+2);
    	       m_FlexGrid.SetRow(NumLigne);
     
    	       m_FlexGrid.SetCol(0);m_FlexGrid.SetText(REFCD1);
    	       m_FlexGrid.SetCol(1);m_FlexGrid.SetText(DESIGNATION_CD);
     
    	       m_FlexGrid.SetCol(2);m_FlexGrid.SetText(Cvtr(MONTD1));
    	       m_FlexGrid.SetCol(3);m_FlexGrid.SetText(Cvtr(MONTC1));

  3. #3
    Membre �clair� Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    D�tails du profil
    Informations personnelles :
    Localisation : France, Sa�ne et Loire (Bourgogne)

    Informations professionnelles :
    Activit� : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par d�faut
    bonjour Gabrielly,
    merci de ton aide ,
    mon souci et de placer le :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    DDX_Control(pDX, IDC_MSFLEXGRID, m_FlexGrid); 	//}}AFX_DATA_MAP
    je l'ai plac� ici :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    void CIhmDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	DDX_Control(pDX, IDC_MSFLEXGRID, m_FlexGrid); 	//}}AFX_DATA_MAP
    	//{{AFX_DATA_MAP(CIhmDlg)
    		// NOTE: the ClassWizard will add DDX and DDV calls here
     
    }


    Voici les erreurs que me renvoie le compilateur :

    :\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(75) : error C2065: 'm_FlexGrid' : undeclared identifier
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(217) : error C2628: 'CMSFlexGrid' followed by 'void' is illegal (did you forget a ';'?)
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(218) : error C2556: 'class CMSFlexGrid __thiscall CIhmDlg::OnButton2(void)' : overloaded function differs only by return type from 'void __thiscall CIhmDlg::OnButton2(void)'
    i:\dev_c++\dev_philo\ihm_mfc\ihm\ihmdlg.h(43) : see declaration of 'OnButton2'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(218) : error C2371: 'OnButton2' : redefinition; different basic types
    i:\dev_c++\dev_philo\ihm_mfc\ihm\ihmdlg.h(43) : see declaration of 'OnButton2'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(232) : error C2039: 'Clear' : is not a member of 'CMSFlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(205) : see declaration of 'CMSFlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(233) : error C2039: 'SetRows' : is not a member of 'CMSFlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(205) : see declaration of 'CMSFlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(234) : error C2039: 'SetFormatString' : is not a member of 'CMSFlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(205) : see declaration of 'CMSFlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(244) : error C2039: 'SetCol' : is not a member of 'CMSFlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(205) : see declaration of 'CMSFlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(245) : error C2039: 'AddString' : is not a member of 'CMSFlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(205) : see declaration of 'CMSFlexGrid'
    Error executing cl.exe.

    ihm.exe - 9 error(s), 0 warning(s)
    CDLT
    Philo

  4. #4
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Commence par inclure le fichier CMSFlexgrid.h dans ton fichier ihmDlg.cpp

  5. #5
    Membre �clair� Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    D�tails du profil
    Informations personnelles :
    Localisation : France, Sa�ne et Loire (Bourgogne)

    Informations professionnelles :
    Activit� : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par d�faut
    Merci de ton aide Gabrielly, c'est mieux avec le fichier preprocesseur d�clar� (.h)
    je n'ai que deux erreurs sur le code suivant :
    :\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(234) : error C2146: syntax error : missing ';' before identifier 'm_FlexGrid'
    I:\dev_c++\dev_philo\ihm_mfc\ihm\ihmDlg.cpp(235) : error C2039: 'AddString' : is not a member of 'CMSFlexGrid'
    i:\dev_c++\dev_philo\ihm_mfc\ihm\msflexgrid.h(21) : see declaration of 'CMSFlexGrid'
    Error executing cl.exe.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	result = "";
    	for (int j = 1;j<4;j++)
    	{
     
    		result += txt_1 
    		m_FlexGrid->SetCol(j); //ici sa plante
    		m_FlexGrid->AddString(result);	//ici sa plante
     
     
     
     
    	}
    CDLT
    Philo

  6. #6
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Attention au point virgule apr�s "result += txt_1"

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    result = ""; 
       for (int j = 1;j<4;j++) 
       { 
     
          result += txt_1   // Mettre un point virgule ici
          m_FlexGrid->SetCol(j); //ici sa plante 
     
          // addstring n'est effectivement pas membre du Flexgrid
          m_FlexGrid->AddString(result);   //ici sa plante 
     
     
     
     
       }

  7. #7
    Membre �clair� Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    D�tails du profil
    Informations personnelles :
    Localisation : France, Sa�ne et Loire (Bourgogne)

    Informations professionnelles :
    Activit� : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par d�faut
    oui en effet une erreur stupide de ma part.
    // addstring n'est effectivement pas membre du Flexgrid
    m_FlexGrid->AddString(result); //ici sa plante
    Comment cr�er le membre AddString ou y a t'il un autre membre �quivalent a AddString ?


    CDLT
    Philo

  8. #8
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Mais que veux-tu ajouter. Toutes les fonctions membres de CMSFlexgrid sont d�finit dans le .h

    Est-ce que tu ne confonds pas avec une combobox

  9. #9
    Membre �clair� Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    D�tails du profil
    Informations personnelles :
    Localisation : France, Sa�ne et Loire (Bourgogne)

    Informations professionnelles :
    Activit� : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par d�faut
    oui je doit confondre avec listbox (Addstring), donc maintenant j'aimerais remplir mon flexgrid, j'ai regarder les fonction membres du msflexgrid.h ,
    j'ai trouv� AddItem ou faut t'il trouver une fonction commencant par Set...


    Cdlt
    Philo

  10. #10
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    OK, remplace les Set par des put_

  11. #11
    Membre �clair� Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    D�tails du profil
    Informations personnelles :
    Localisation : France, Sa�ne et Loire (Bourgogne)

    Informations professionnelles :
    Activit� : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par d�faut
    J'ai trouv� SetText ca marche tres bien !!!
    J'ai une question : lorsque j'ajoute un bouton, je click dessus pour �diter la fonction membre, VC me renvoit une textbox : "cannot add a new member", comprend pas ? (j'ai deux autre bouton ca marche tres bien).


    Cdlt
    Philo

  12. #12
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Voici un code d'initialisation
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    BOOL CMSFlexgridDlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
     
    	m_FlexGrid.Clear();
    	m_FlexGrid.put_Cols(6);
    	m_FlexGrid.put_Rows(3);
    	m_FlexGrid.put_Col(0);
    	m_FlexGrid.put_Row(0);
    	m_FlexGrid.put_ColWidth(0,1402);
    	m_FlexGrid.put_Text("N° CPTE");
    	//
    	m_FlexGrid.put_Col(1);
    	m_FlexGrid.put_Row(0);
    	m_FlexGrid.put_ColWidth(1,4000);	
    	m_FlexGrid.put_Text("DESIGNATION");
    	//
    	m_FlexGrid.put_Col(2);
    	m_FlexGrid.put_Row(0);
    	m_FlexGrid.put_ColWidth(2,2272);	
    	m_FlexGrid.put_Text("TOTAUX DEBITS");
    	//
    	m_FlexGrid.put_Col(3);
    	m_FlexGrid.put_Row(0);
    	m_FlexGrid.put_ColWidth(3,2272);	
    	m_FlexGrid.put_Text("TOTAUX CREDITS");
    	//
    	m_FlexGrid.put_Col(4);
    	m_FlexGrid.put_Row(0);
    	m_FlexGrid.put_ColWidth(4,2272);
    	m_FlexGrid.put_Text("SOLDES DEBITEURS");
    	//
    	m_FlexGrid.put_Col(5);
    	m_FlexGrid.put_Row(0);
    	m_FlexGrid.put_ColWidth(5,2272);
    	m_FlexGrid.put_Text("SOLDES CREDITEURS");
     
    	return TRUE;  // return TRUE unless you set the focus to a control
    	// EXCEPTION: OCX Property Pages should return FALSE
    }

  13. #13
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    A la colonne d'indexe 3 et � la ligne d'indexe 2 je met la cha�ne "20 %"
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    m_FlexGrid.put_Col(3);
    	m_FlexGrid.put_Row(2);	
    	m_FlexGrid.put_Text("20 %");

  14. #14
    Membre �clair� Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    D�tails du profil
    Informations personnelles :
    Localisation : France, Sa�ne et Loire (Bourgogne)

    Informations professionnelles :
    Activit� : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par d�faut
    bonjour,
    1) le remplissage du flexGrid marche bien, j'aimerais pouvoir extraire le champ sur lequel ce trouve le focus de la sourie, disont le champ selctionner du flexgrid ?

    2) j'ai une erreur qui ce produit lorsque j'essaie de placer un nouveau bouton sur un form, lorsque j'�ssais d'�diter le code du bouton
    le message d'erreur est : "cannot add new member". comprens pas ?




    CDLT
    Philo

Discussions similaires

  1. VS6+MFC Simuler un clic sur une ic�ne
    Par rob24 dans le forum MFC
    R�ponses: 2
    Dernier message: 14/07/2009, 19h51
  2. VS6+MFC - SendMessage
    Par rob24 dans le forum MFC
    R�ponses: 4
    Dernier message: 11/07/2009, 09h05
  3. [MFC] ligne disjointe FlexGrid
    Par moulefrite dans le forum MFC
    R�ponses: 3
    Dernier message: 21/04/2006, 10h04
  4. [MFC][VS6.0] char caract�res
    Par philo71 dans le forum MFC
    R�ponses: 1
    Dernier message: 15/02/2006, 12h46
  5. [MFC][VS6.0] Flexgrid
    Par philo71 dans le forum MFC
    R�ponses: 9
    Dernier message: 07/02/2006, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo