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 :

Problème avec une progressBar


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut Problème avec une progressBar
    Bonjour à tous

    Je désire afficher une progressbar avec un label au dessus.

    J'ai d'abord mis ces deux composants dans un Panel que je rend visible lorsque j'en ai besoin.

    J'ai ensuite créé une Form et je les ai mis dedans et rendu cette form visible lorsque j'en ai besoin.

    Dans les deux cas, le label est invisible (même en mettant Label->Visible avant l'affichage).

    Est ce que quelqu'un aurait une solution ?

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 531
    Points : 537
    Points
    537
    Par défaut
    Vérifie que ton Label est bien dans le panel et non derrière ?? sinon je vois pas

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    J'ai eu le même soucis et voilà la solution que l'on m'a donné, j'espère que ce sera la même pour toi Lien

  4. #4
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    J'ai fait un petit test.

    Vu que le Panel dans leque sont la progressBar et le label est invisible au départ, je l'ai mis en visible.

    là le label est visible, par contre il disparait lorsque la barre de progression commence a avancé.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Points : 578
    Points
    578
    Par défaut
    Hello

    Essaie ceci: remplace le label par un TStaticText, et rajoute ceci dans le code:

    .h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void __fastcall StaticTextWndProc(Messages::TMessage &Message);
    TWndMethod ancienne_wndproc;
    .cpp:
    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
    __fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner)
      {
      SetWindowLong(StaticText1->Handle, GWL_EXSTYLE, GetWindowLong(StaticText1->Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT);
      ancienne_wndproc = StaticText1->WindowProc;
      StaticText1->WindowProc = StaticTextWndProc;
      }
     
    void __fastcall TForm1::StaticTextWndProc(Messages::TMessage &Message)
      {
      if (Message.Msg == CN_CTLCOLORSTATIC)
        {
        Message.Result = (int)(HBRUSH)::GetStockObject(HOLLOW_BRUSH);
        SetBkMode(HDC(Message.WParam), TRANSPARENT);
        }
      else
        ancienne_wndproc(Message);
      }
    A++

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Vu que je passe par là lol, ca sert à quoi tout ce code Totoche ???

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Points : 578
    Points
    578
    Par défaut
    Hello

    Ben.... à placer un texte en transparence sur un contrôle fenêtré...

    J'ai vu faire ce genre de choses avec Visual C++ en utilisant un CStatic... c'est juste une adaptation à Builder.

    Si quelqu'un a plus simple (autre que dériver TGraphicControl, façon TCGauge, le composant fourni en exemple par Borland), je suis preneur....

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 61
    Points : 62
    Points
    62
    Par défaut
    Lut kurul1!
    pk tu ne ferais pas une mini class qui contiendrai tes 2 composants.
    Déjà tu ne gèreras plus le Panel en rab, ni la form en rab.

    Et je pense que niveau gestion et affichage ce sera plus simple.

    Sinon, je te proposerai bien, de positionner la ProgressBar, puis par dessus une Image, et tu afficheras ton texte dans le canvas de l'Image.

    @+

  9. #9
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Ta néthode ne marche pas totoche76, le texte n'est toujours pas affiché.

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Points : 578
    Points
    578
    Par défaut
    Hello

    Dans l'éditeur, est-ce que tu as bien mis ton TStaticText au premier plan ??

  11. #11
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Oui je viens de vérifier, il est bien au premier plan

  12. #12
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Points : 578
    Points
    578
    Par défaut
    Ha bon ?????

    Curieux : :

    Ché moué ca affiche bien un label en transparence par dessus autre chose.

    .h:
    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
     
    #ifndef Unit2H
    #define Unit2H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ComCtrls.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
      TPanel *Panel1;
      TProgressBar *ProgressBar1;
      TStaticText *StaticText1;
    private:	// Déclarations de l'utilisateur
    void __fastcall StaticTextWndProc(Messages::TMessage &Message); 
    TWndMethod ancienne_wndproc;
    public:		// Déclarations de l'utilisateur
      __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    .cpp:
    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
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit2.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
     
    __fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner)
      {
      SetWindowLong(StaticText1->Handle, GWL_EXSTYLE, GetWindowLong(StaticText1->Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT);
      ancienne_wndproc = StaticText1->WindowProc;
      StaticText1->WindowProc = StaticTextWndProc;
      }
     
    void __fastcall TForm1::StaticTextWndProc(Messages::TMessage &Message)
      {
      if (Message.Msg == CN_CTLCOLORSTATIC)
        {
        Message.Result = (int)(HBRUSH)::GetStockObject(HOLLOW_BRUSH);
        SetBkMode(HDC(Message.WParam), TRANSPARENT);
        }
      else
        ancienne_wndproc(Message);
      }
    .dfm:
    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
    object Form1: TForm1
      Left = 547
      Top = 363
      Width = 295
      Height = 108
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      PixelsPerInch = 96
      TextHeight = 13
      object Panel1: TPanel
        Left = 8
        Top = 8
        Width = 269
        Height = 57
        Caption = ' '
        TabOrder = 0
        object ProgressBar1: TProgressBar
          Left = 20
          Top = 16
          Width = 229
          Height = 25
          Min = 0
          Max = 100
          Position = 50
          TabOrder = 0
        end
        object StaticText1: TStaticText
          Left = 112
          Top = 24
          Width = 58
          Height = 17
          Caption = 'StaticText1'
          TabOrder = 1
        end
      end
    end

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 118
    Points : 111
    Points
    111
    Par défaut
    J'ai déjà eu un problème semblable.
    Est ce que tout l'avancement de la progressBar se fait dans dans un seule fonction à tout hasard ?
    Si c'est le cas, essaie de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->ProcessMessages();
    après chaque fois que tu modifies un TLabel, ou après chaque fois que tu rend un TForm visible, ou que tu fais avancer la progressBar.
    Vous aussi, passez pour un dieu du bon français grâce à Firefox et sa correction orthographique

  14. #14
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Merci fumidu, je n'avait pas pensé au

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Application->ProcessMessages();
    Maintenant mon texte apparait, même avec un label.


    Merci également à tout le monde pour votre aide.

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

Discussions similaires

  1. Problème avec une UDF
    Par kanmaber dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/08/2004, 23h42
  2. [JBOSS] [Struts] Problème avec une application
    Par Tiercel dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 13/07/2004, 13h50
  3. Problème avec une instruction OUTER /Postgres
    Par Volcomix dans le forum Langage SQL
    Réponses: 14
    Dernier message: 21/04/2004, 16h56
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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