Listview dans un TabControl [Résolu]

Messages postés
14
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
8 juin 2009
- - Dernière réponse : Lonicpp
Messages postés
14
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
8 juin 2009
- 4 juin 2009 à 10:41
Bonjour,

Je conçoit actuellement un logiciel destiné à une entreprise, dans le but de mon stage. Mais voila, un problème viens d'arriver.

J'ai des données dans un listview, et je veux afficher ce listview dans un seul onglet de mon application. Problème, je ne trouve pas l'évènement qui me permettrait d'afficher le listview uniquement dans cet onglet.

Je travaille sous visual studio c++.

Merci d'avance.
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
14
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
8 juin 2009
3
Merci
J'ai trouvé une solution a mon problème.
Sur l'évènement du clic sur l'onglet, je réduis mon tabpage...

             tabPage1->Size = System::Drawing::Size(1000, 40);

Et quand je clic sur un autre onglet, je remet la valeur par défaut

             tabPage1->Size = System::Drawing::Size(1000, 750);

Merci d'avoir essayéracpp :)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 131 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lonicpp
Messages postés
14
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
8 juin 2009
0
Merci
Petit up pour donner des nouvelles.

J'arrive à l'afficher, mais il s'affiche en arrière plan, il n'est pas sur le tabcontrol :/
Commenter la réponse de Lonicpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
7
0
Merci
Salut,
Le tabcontrol envoie la notification TCN_SELCHANGE via le message WM_NOTIFY à la procédure de la fenêtre ou boite parente quand on change d'onglet en cliquant dessus. On peut récupérer le numéro de l'onglet courant en envoyant le message TCM_GETCURSEL avec SendMessage() au HWND du tabcontrol. Ainsi, on décidera de rendre visible ou non le listview avec ShowWindow() selon l'onglet voulu. Le listview et le tabcontrol ont le même parent. Le corps du tabcontrol doit être suffisamment gand pour contenir le listview.
Commenter la réponse de racpp
Messages postés
14
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
8 juin 2009
0
Merci
Salut racpp,

Merci pour ta réponse, concernant le listview, il est censé passer dans le tabcontrol, vu que je l'ai réduit et que je ne le vois plus dépasser de chaque côté du tabcontrol.

Pour le reste de la réponse, je n'ai pas vraiment saisi comment afficher le listview au dessus du tabcontrol, excusez mon incompréhension, je n'ai pas beaucoup d'expérience dans le c++ :)

Pouvez vous m'éclaircir ?

Merci,

Lonicpp.
Commenter la réponse de Lonicpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
7
0
Merci
Que veux-tu dire exactement par "au dessus"?. Normalement, il n'y a rien de spécial à faire. Le listview est au même niveau que le tabcontrol. Si le listview est situé à l'intérieur du cadre du corps du tabcontrol, on a l'impression qu'il est au dessus.
Commenter la réponse de racpp
Messages postés
14
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
8 juin 2009
0
Merci
En fait j'ai pas fait un listview avec la boite à outlis, je l'ai créé directement à la main..
Donc je me retrouve avec la fonction "createMyListView()", que je ne sais pas où mettre.

La fonction est la suivante :
<hr size="2" width="100%" />private:
   void CreateMyListView()
   {
           String^ variable_temporaire2;
        //Lecture du fichier texte
        String^ path = "c:\\pxrv.txt";
        FileStream^ fs = File::OpenRead( path );
        array^b2 = gcnew array(1000000);
        UTF8Encoding^ temp = gcnew UTF8Encoding( true );
        while ( fs->Read( b2, 0, b2->Length ) > 0 )
        {
            //On balance le contenu du fichier dans la variable "variable_temporaire"
            variable_temporaire2 = System::Convert::ToString( temp->GetString( b2 ) );
        }
       
        //Fin Lecture du fichier texte
        //On split la variable_temporaire
        array<Char>^chars2 = {';'};    // Tableau des séparateurs, ici uniquement ';'
        array<String^>^split2 = variable_temporaire2->Split( chars2 ); // words contenant votre chaine de caractères et chars les séparateurs
     
        // Création de la listview
        ListView^ listView1 = gcnew ListView;
        listView1->Bounds = Rectangle(Point(20,20),System::Drawing::Size( 1000, 500 ));

        // Permettre l'affichage des valeurs.
        listView1->View = View::Details;

        // Permettre a l'utilisateur de modifier les valeurs.
        listView1->LabelEdit = true;

        // Permettre a l'utilisateur de modifier la taille des colones.
        listView1->AllowColumnReorder = true;

        // Affichage des checkbox.
        listView1->CheckBoxes = false;

        // Sélectionner les éléments et les sous éléments quand on a fait la séléction.
        listView1->FullRowSelect = true;

        // Affichage des lignes.
        listView1->GridLines = true;

        // Ordre de tri des éléments.
        listView1->Sorting = SortOrder::Ascending;
        int nombreaff = System::Convert::ToInt16(split2[0])*48;
       
        // Create columns for the items and subitems.
        listView1->Columns->Add( "Identifiant", -2, HorizontalAlignment::Left );
        listView1->Columns->Add( "Nom de l'entreprise", -2, HorizontalAlignment::Left );
        listView1->Columns->Add( "Date de l'affaire", -2, HorizontalAlignment::Left );
        listView1->Columns->Add( "Chiffre d'affaire", -2, HorizontalAlignment::Right );
        listView1->Columns->Add( "Coût main d'oeuvre", -2, HorizontalAlignment::Right );
        listView1->Columns->Add( "Coût montage", -2, HorizontalAlignment::Right );
        listView1->Columns->Add( "Coût matières", -2, HorizontalAlignment::Right );
        listView1->Columns->Add( "Total déboursé", -2, HorizontalAlignment::Right );
        listView1->Columns->Add( "Charges indirectes", -2, HorizontalAlignment::Right );
        listView1->Columns->Add( "Charges", -2, HorizontalAlignment::Right );
        listView1->Columns->Add( "Marge", -2, HorizontalAlignment::Right );
        listView1->Columns->Add( "Taux marge", -2, HorizontalAlignment::Right );

        for (int i=1; i<nombreaff; i++)
        {
            if (split2[i] == "Laurent D.")
            {
                // Create three items and three sets of subitems for each item.
                ListViewItem^ item1 = gcnew ListViewItem( split2[i],0 );

                // Place a check mark next to the item.
                item1->Checked = true;
                item1->SubItems->Add( split2[i+3] );
                item1->SubItems->Add( split2[i-3] );
                item1->SubItems->Add( "3" );

                //Add the items to the ListView.
                //String^ taille_tbl = "{item1,item2,item3}";
                array<ListViewItem^>^temp1 = {item1};
                listView1->Items->AddRange( temp1 );

                // Add the ListView to the control collection.
                this->Controls->Add( listView1 );
            }
        }
   }
<hr size="2" width="100%" />(désolé je n'ai pas trouvé la balise code)

Je cherche l'emplacement où doit se trouver mon appel de fonction, pour que le listview soit dessiné sur mon onglet.
Dans les évènements j'avais trouvé click, mais quand je clic sur l'onglet ça m'affiche bien mon listview, mais derrière... :D

Merci.
Commenter la réponse de Lonicpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
7
0
Merci
Désolé, je pensais que tu travaillais en Win32 API. Une capture d'écran de ton application serait préférable pour nous permettre de voir la nature du problème.
Commenter la réponse de racpp
Messages postés
14
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
8 juin 2009
0
Merci
Re,

http://www.hiboox.fr/go/images/informatique/listview,25ff5c10641658701644da15375ae5e0.png.html

Comme tu peux le voir, mon listview est derrière :/

Désolé j'avais oublié de préciser que j'étais en winform
Commenter la réponse de Lonicpp
Messages postés
14
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
8 juin 2009
0
Merci


Commenter la réponse de Lonicpp
Messages postés
14
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
8 juin 2009
0
Merci
up plz :/
Commenter la réponse de Lonicpp