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

Delphi Discussion :

[D7] Comment programmer un progress bar ?


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 64
    Points : 27
    Points
    27
    Par défaut [D7] Comment programmer un progress bar ?
    Bonjour,

    J'ai deux fiches. La première fiche est une forme d’accueil et la deuxième fiche contient un progress bar. Je veux que, quand j'ouvre mon projet et que je l’exécute, la deuxième fiche du progress bar s'affiche et que le progress bar fait un signe de chargement du contenu.

    Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Voici un exemple trouvé dans les sources Delphi :

    http://nono40.developpez.com/sources/source0030/
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 64
    Points : 27
    Points
    27
    Par défaut
    merci je vais essayer

  4. #4
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut
    Bonjour seifrf ,

    Tu peux créer un SplashScreen (avec un logo ou une image) sur une ouverture d'un DataModule (contenant l'ensemble de tes tables, si tu en as bien sûr..)
    Ainsi, ta barre de progression avancera au fur et à mesure de l'ouverture de tes tables ou Query
    et une fois l'opération terminée, ta forme s'ouvrira.

    @+

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 64
    Points : 27
    Points
    27
    Par défaut
    bonjour, désole pour le retard tu peut me donner un exemple comment faire cela ?

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 661
    Points : 3 630
    Points
    3 630
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    Une petite recherche dans la FAQ Delphi https://delphi.developpez.com/faq/?p...-splash-screen
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut splashscreen
    Bonsoir,
    un premier exemple simple utilisant l'alphablending de la forme :

    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
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
     
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    uses Splash;
     
    {$R *.dfm}
     
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i: integer;
    begin
      Sleep(1000);
      for i := 255 downto 1 do
      begin
        FSplashScreen.AlphaBlendValue := i;
        Sleep(4);
      end;
      FSplashScreen.Free;
    end;
     
    end.
    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
     
    unit Splash;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls, ComCtrls, jpeg, JvExControls, JvComponent,
      JvSpecialProgress;
     
    type
      TFSplashScreen = class(TForm)
        Panel1: TPanel;
        Image1: TImage;
        Label1: TLabel;
        Panel2: TPanel;
        ProgressBar1: TJvSpecialProgress;
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      FSplashScreen: TFSplashScreen;
     
    implementation
     
    {$R *.DFM}
     
    end.
    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
     
    program Project1;
     
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Splash in 'Splash.pas' {FSplashScreen};
     
    {$R *.res}
     
    begin
      Application.Initialize;
      FSplashScreen := TFSplashScreen.Create(Application);
      FSplashScreen.Show;
      FSplashScreen.Refresh;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
     
    end.
    il faut mettre la propriété alphablend à true dans FSplashScreen
    @+

  8. #8
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut splashScreen_2
    on peut aussi retirer l'alphablending
    et activer la barre de progression :

    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
     
          try
            FSplashScreen := TFSplashScreen.Create(Application);
            FSplashScreen.Show;
            FSplashScreen.Refresh;
            FSplashScreen.ProgressBar1.Maximum := Max;   // Nombre maxi de Query à ouvrir + le reste
            FSplashScreen.ProgressBar1.Position := j;
     
            with DataModule1 do
            begin
              for i := 0 to ComponentCount - 1 do
                if Components[i] is TIBOQuery then                // il faut mettre la classe de tes Query
     
                  if TIBOQuery(Components[I]).SQL.Count <> 0 then
                  begin
                    try
                      FSplashScreen.ProgressBar1.Position := j;
                      TIBOQuery(Components[I]).Close;
                      TIBOQuery(Components[I]).Open;
                      inc(j, 1);
                    except
                      Showmessage(Components[i].Name);
                    end;
                  end;
             end;
     
            FSplashScreen.ProgressBar1.Position := j;
     
            if not assigned(DMETAT) then                                    // tu peux en profiter pour créer d'autres formes
              Application.CreateForm(TDMETAT, DMETAT);
            inc(j, 1);
            FSplashScreen.ProgressBar1.Position := j;
     
            if not assigned(FormSearch) then
              Application.CreateForm(TFormSearch, FormSearch);  // tu peux en profiter pour créer d'autres formes
            inc(j, 1);
            FSplashScreen.ProgressBar1.Position := j;
     
          finally
            Form1.Show;
            Form1.WindowState := wsMaximized;
            if Assigned(FSplashScreen) then
            begin
              FSplashScreen.Hide;
              FSplashScreen.Free;
            end;
          end;
    la fome FSplashScreen est à placer dans le liste des formes non créées automatiquement

    @+

  9. #9
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 64
    Points : 27
    Points
    27
    Par défaut
    merci cantador

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    dans une unité a part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Type
      TOnProgress = procedure (const Text: string; const iCur,iMax: Integer) of object;
    dans la fiche principale

    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
     
    //**********************************************************
    procedure TFrmPrincipal.BtnTravailClick(Sender: TObject);
    begin
      dm := TdmJetravail.create(self);
      dm.Onprogress := EventProgress ;
      dm.Jetravail;
      dm.Onprogress := nil;
      dm.free;
    end;
    //**********************************************************
    procedure TFrmPrincipal.EventProgress(const Text: string; const iCur,iMax: Integer);
    var
      pcent: integer;
      MustRefresh: boolean;
    begin
       if (iCur<0) or (iMax<0) then
       begin
          Progressbar.visible := False;
          Progressbar.Position := 0;
       end
       else
       begin
           Progressbar.visible := True;
           MustRefresh := False;
           pcent := 0;
           if iMax<>0 then
    	   pCent := (iCur * 100) div iMax;
     
    	if pCent<>Progressbar.Position then
    	begin
    	    Progressbar.Position := pCent;
    	    MustRefresh := True;
    	end;
    	if MustRefresh then
    	    Application.ProcessMessages;
       end;
    end;
    dans la seconde parti
    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
     
    Type 
      TdmJetravail = Class(..)
       fonprogress : TonProgress ;
     Public 
        Procedure Jetravail;
        Procedure Progress(const Text: string; const iCur,iMax: Integer);
        Property onProgress : TOnProgress read fOnProgress write fOnProgress; 
     end;
    ....
    //**********************************************************
    Procedure TdmJetravail.Progress(const Text: string; const iCur,iMax: Integer);
    begin
      if assigned(fOnProgress) then
        fOnProgress(Text,iCur,iMax);
    end;
    //**********************************************************
    Procedure TdmJetravail.Jetravail
    begin
      For iCur := 0 to Imax Do 
      begin
         OnBosseCetteLigne(iCur);
         Progress('Je Fais mon boulot',iCur,Imax);
      end;
    end;
    //**********************************************************
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

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

Discussions similaires

  1. comment creer une progress bar
    Par assiya dans le forum Forms
    Réponses: 7
    Dernier message: 09/12/2009, 15h00
  2. Réponses: 11
    Dernier message: 20/02/2008, 12h14
  3. Comment fonctionne une Progress Bar
    Par loulag07 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/01/2008, 15h37
  4. [winAPI] Comment créer une progress bar ownerdraw ?
    Par kidpaddle2 dans le forum Windows
    Réponses: 1
    Dernier message: 01/08/2006, 11h02
  5. Comment programmer un BHO en Delphi ?
    Par pdtor dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 20/01/2006, 21h59

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