Listview dans un TabControl

Résolu
Lonicpp Messages postés 14 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 8 juin 2009 - 2 juin 2009 à 15:33
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.

10 réponses

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
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 :)
3
Lonicpp Messages postés 14 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 8 juin 2009
2 juin 2009 à 16:53
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 :/
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 juin 2009 à 03:28
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.
0
Lonicpp Messages postés 14 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 8 juin 2009
3 juin 2009 à 07:44
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 juin 2009 à 14:08
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.
0
Lonicpp Messages postés 14 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 8 juin 2009
3 juin 2009 à 14:37
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.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 juin 2009 à 15:01
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.
0
Lonicpp Messages postés 14 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 8 juin 2009
3 juin 2009 à 15:08
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
0
Lonicpp Messages postés 14 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 8 juin 2009
3 juin 2009 à 15:09


0
Lonicpp Messages postés 14 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 8 juin 2009
4 juin 2009 à 07:44
up plz :/
0
Rejoignez-nous