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

C++Builder Discussion :

Afficher une progressbar dans un TListItem


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 135
    Par défaut Afficher une progressbar dans un TListItem
    Bonjour,

    Comment afficher une progress bar dynamique dans un TListItem.
    Un peu comme emule le fait?

    Merci

  2. #2
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,

    Une petite proposition...Non pas avec un vrai ProgressBar, mais avec le dessin dans la zone du TListItem.
    Dans le cas ci dessous, je lance un TTimer, mais il faudra tester et adapter en fonction de tes besoins.
    ' LVstb ' correspond simplement au nom de la TListView utilisée...

    Dans le .h de la fiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    private:	// Déclarations de l'utilisateur
    	TListItem *pItem;
    	int Decal;
    Dans le .cpp de la fiche
    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
     
    void __fastcall TForm3::Button6Click(TObject *Sender)
    {
    	pItem = LVstb->Items->Item[0];
    	Timer1->Enabled = true;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm3::Timer1Timer(TObject *Sender)
    {
    Decal++;
    TRect rect, arect;
    rect = pItem->DisplayRect(drLabel);
    	arect.top = rect.top;
    	arect.bottom = rect.bottom;
    	arect.left = rect.left;
    	arect.right = rect.left + Decal;
     
    LVstb->Canvas->Brush->Color = clRed;
    	LVstb->Canvas->FillRect(arect);
    }
    //---------------------------------------------------------------------------
    En espérant t'aider,
    @+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 135
    Par défaut
    Merci c'est déjà un bon début!!!

    Comment faire pour que cette progressBar s'affiche dans une autre colonne que la première? Exemple sur la 6ème?

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonjour,

    Désolé, je n'aurais pas accès a un bout de Borland de la journée.
    Donc je jette un oeil ce soir.

    En attendant, il faudrait regarder du côté des SubItems et cie (mas pas sur)

    Bon courage,
    @ +

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 135
    Par défaut
    J'ai regardé mais en vain car je ne maitrise pas trop la class TCanvas...
    Je vais attendre alors merci

  6. #6
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Citation Envoyé par James_ Voir le message
    J'ai regardé mais en vain car je ne maitrise pas trop la class TCanvas...
    Bonsoir,

    Faut fouiner ....
    Donc ci joint juste une proposition, ya peut être plus 'propre':
    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
     
    void __fastcall TForm3::Button6Click(TObject *Sender)
    {
    	pItem = LVstb->Items->Item[0];
    	Timer1->Enabled = true;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm3::Timer1Timer(TObject *Sender)
    {
    Decal++;
    TRect rect, arect;
    rect = pItem->DisplayRect(drLabel);
    	arect.top = rect.top;
    	arect.bottom = rect.bottom;
    	arect.left = ( LVstb->Columns->Items[0]->Width + LVstb->Columns->Items[1]->Width );
    	arect.right = arect.left + Decal;
     
    LVstb->Canvas->Brush->Color = clRed;
    	LVstb->Canvas->FillRect(arect);
    }
    Et cela rempli la troisième colonne de la première ligne.

    En espérant t'aider,
    @+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 135
    Par défaut
    Ok je tests ça mais du coup c une astuce, que se passe-t-il si on modifie la taille des champs?
    En tout cas c quand même un moyen relativement simple d'afficher une progression, est-elle professionnelle?

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Par défaut
    Salut,

    Je vais peut-etre dire une bétise, mais pourquoi ne pas essayer de mettre une progressBar dans ton TListView. Il y a un exemple de code pour mettre une TProgressBar dans un TStatusBar, alors tu pourrais essayer de faire la même chose.
    Voici le bout de code de la rubrique Trucs et Astuces pour la TStatusBar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
      StatusBar1->ControlStyle = StatusBar1->ControlStyle << csAcceptsControls ;
      ProgressBar1->Left = 0;
      ProgressBar1->Top = 2;
      ProgressBar1->Parent = StatusBar1;
    }
    Ca vaut peut-etre le coup d'essayer. Tu adaptes bien sur ce code à tes besoins.

  9. #9
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Citation Envoyé par James_ Voir le message
    Ok je tests ça mais du coup c une astuce, que se passe-t-il si on modifie la taille des champs?
    En tout cas c quand même un moyen relativement simple d'afficher une progression, est-elle professionnelle?

    Bonjour,

    Tant que le calcul des coordonnées du TRect sont situées dans l'évènement du TTimer, il n'y a pas de problème au redimensionnement des champs, j'ai testé.

    Pour ce qui est de la dernière question, je ne sais quoi répondre ( -> est-elle professionnelle? ). Qu'est ce qui est 'pro' ou pas .... ? Ca pourrait être un bon débat de la taverne, ça. Non ?
    En tout cas, si tu veux que je te rassure, de mon côté je ne sais pas si on peut me qualifier de 'professionnel' car même si je suis censé être payé dans un proche avenir (dans 10 jours ! youpi !) pour ça, je n'ai fait aucune études .... donc, prends garde!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/08/2012, 10h08
  2. Comment afficher un ProgressBar dans une DBGrid
    Par Luc84 dans le forum C++Builder
    Réponses: 4
    Dernier message: 18/02/2010, 11h20
  3. [MFC] afficher une ProgressBar dans une barre d'etat
    Par guillaume21 dans le forum MFC
    Réponses: 5
    Dernier message: 30/03/2007, 11h16
  4. Afficher une icone dans DBgrid
    Par boyerf dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/02/2004, 15h45
  5. Réponses: 3
    Dernier message: 28/01/2004, 14h55

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