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

Windows Forms Discussion :

Progress B + ListView


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Progress B + ListView
    Bonsoir,

    J'utilisais auparavant le composant Glacial ListView me permettant d'inclure des lignes incluant d'autres contrôles (ProgressBar, Images...) dans une listView maintenant le composant est payant et n'est pas compatible avec VS 2008.
    Je suppose qu'il y a moyen de faire ceci avec VS 2008, (je viens de recommencer du développement).
    Avez-vous une solution ?


    http://img707.imageshack.us/img707/725/capturerz.jpg

    Frédéric

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Salut,
    J'ai vu cet article, il n'y pas plus complet (sophistiqué) et en C# ?
    Merci.
    http://www.codeguru.com/cpp/controls...icle.php/c4187

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Personnalisation d'une listview
    Bonjour.

    C'est un peu simpliste (code d'exemple à améliorer, l'aspet graphisme n'est pas mon fort ...), mais on peut personnaliser une lisview en y ajoutant des éléments graphiques dans un subitem.

    Le principe est de positionner la propriété OwnerDraw à True de manière à indiquer que le dessin de la listview n'est pas réalisé automatiquement, mais par le code en utilisant les évènements DrawColumnHeader, DrawItem, et DrawSubItem.

    De cette manière, on peut donc tout personaliser dans une listview.

    Dans l'exemple basique ci-dessous, j'ai juste simulé une progressbar dans le subitem 2 qui évolue suivant un compteur décrémenté par un timer :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace test_listView
    {
        public partial class Form1 : Form
        {
            static public int count = 10;
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Draw_Sub_Item(object sender, DrawListViewSubItemEventArgs e)
            {
                if (e.ColumnIndex == 1)
                {
                    int width = (10 - count)*(e.Bounds.Width/10);
                    e.Graphics.FillRectangle(Brushes.Red,e.Bounds.X, e.Bounds.Y, width, e.Bounds.Height);
                    e.Graphics.DrawString(Convert.ToString((10 - count)) + " secondes", listView1.Font, Brushes.Black, e.Bounds);
                    e.DrawFocusRectangle(e.Bounds);
                }
                else
                {
                    e.DrawText();
                }
            }
     
            private void Draw_Item(object sender, DrawListViewItemEventArgs e)
            {
                Graphics dc = listView1.CreateGraphics();
                dc.FillRectangle(Brushes.Blue, e.Bounds);
                e.DrawFocusRectangle();
            }
     
            private void Draw_Header(object sender, DrawListViewColumnHeaderEventArgs e)
            {
                e.DrawBackground();
                e.DrawText();
                return;
     
            }
     
            private void timer_tick(object sender, EventArgs e)
            {
                if (count > 0)
                {
                    count--;
                }
                else
                {
                    count = 10;
                }
                listView1.Refresh();
            }
        }
    }
    Bonne chance pour la suite.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/03/2010, 16h47
  2. Une gauge dans un ListView
    Par Thom@s dans le forum Composants VCL
    Réponses: 3
    Dernier message: 22/10/2002, 10h32
  3. listview ??
    Par Galdarion dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/09/2002, 17h02
  4. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  5. ListView
    Par SnickeursMan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/08/2002, 10h42

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