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 :

Comment afficher un ProgressBar dans une DBGrid


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Comment afficher un ProgressBar dans une DBGrid
    Bonjour,

    je développe sous BDS 2006 (Builder C++).
    Je cherche à dessiner un composant ProgressBar dans une cellule de DBGrid.
    Je voudrai simplement afficher une valeur de pourcentage de façon graphique.

    Je sais comment afficher une image dans une cellule (trouvé grace à la FAQ C++ Builder), mais je ne trouve rien pour afficher autre chose, que ce soit un ProgressBar ou tout autre composant.

    Si quelqu'un a une idée ... merci d'avance.

  2. #2
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Si tu arrive à afficher un composant vcl type TImage dans une cellule d'un dbgrid, rien ne t'empêche d'ancrer un TProgressBar.

    Tu peux montrer la façon que tu as adapté avec un TImage ?
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Voici le code utilisé pour faire afficher une image "Coché" ou "Décoché" dans une cellule de DBGrid correspondant à un champ booléen :
    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
    void __fastcall TFrmTableSelection::DBGrid1DrawColumnCell(TObject *Sender,
          const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State)
    {
    if ((String) Column->FieldName == "VALIDITE_CATEGORIE")
        {// on efface la cellule
         DBGrid1->Canvas->FillRect(Rect);
         if (Column->Field->Value.IsNull() == false)
    	{if ((int) Column->Field->Value != 0)
    	    {// case cochée
    	     ImageListCoche->Draw(DBGrid1->Canvas,
    	     Rect.Left + ((Rect.Right - Rect.Left - ImageListCoche->Width) / 2),Rect.Top,1,true);
    	    }
    	 else
    	    {// case décochée
    	     ImageListCoche->Draw(DBGrid1->Canvas,
    	     Rect.Left + ((Rect.Right - Rect.Left - ImageListCoche->Width) / 2),Rect.Top,0,true);
    	    }
    	}
        }
    else
        {// ce n'est pas une cellule "case à cocher"
         DBGrid1->DefaultDrawColumnCell(Rect,DataCol,Column,State);
        }
    }
    Contrairement à ce que je disais dans mon premier message, cet exemple de code a été trouvé dans la Faq Delphi et non pas C++ Builder.

    La fonction DBGrid1DrawColumnCell() est liée à l'évènement OnDrawColumnCell, qui se produit quand la grille doit redessiner une cellule.

    ImageListCoche est un composant TImageList contenant les 2 images de case cochée et décochée.

  4. #4
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    En gardant le même principe :
    Tu crées une fonction dont le paramètre est un entier représentant le taux (entre 0 et 100) :
    1. Cette fonction prend en charge la création d'un Bitmap sur le quel elle ajoute un rectangle vide avec contour en bleu. La taille du Bitmap étant la taille du rectangle +2 pixles
    2. En suite elle remplit le rectangle selon la valeur du paramètre en entrée.
    (tu utilises MoveTo LineTo)
    3. La fonction te retourne ce Bitmap que tu injectes dans le code que tu as posté.

    Est-ce que j'ai été clair ?
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Ok, je vais chercher dans ce sens là.
    Je ne suis pas très à l'aise dans les fonctions de dessin, mais je vais m'y mettre.

    Merci

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/05/2007, 15h10
  2. comment afficher un CString dans une boite de dialog?
    Par meera dans le forum Visual C++
    Réponses: 22
    Dernier message: 04/11/2006, 12h04
  3. Réponses: 13
    Dernier message: 09/03/2006, 18h17
  4. Comment afficher des JPEG dans une application Delphi ?
    Par Bouguennec dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/09/2005, 21h18
  5. Comment afficher les toolTipText dans une zone de statut ?
    Par nicok01 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/01/2005, 13h32

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