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

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

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

    Informations forums :
    Inscription : janvier 2018
    Messages : 44
    Points : 28
    Points
    28

    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
    3 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 3 326
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    7

    Par défaut

    Bonjour !

    Voici un exemple trouvé dans les sources Delphi :

    http://nono40.developpez.com/sources/source0030/

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

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

    Informations forums :
    Inscription : janvier 2018
    Messages : 44
    Points : 28
    Points
    28

    Par défaut

    merci je vais essayer

  4. #4
    Membre averti Avatar de cantador
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mars 2006
    Messages : 515
    Points : 413
    Points
    413

    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
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Algérie

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

    Informations forums :
    Inscription : janvier 2018
    Messages : 44
    Points : 28
    Points
    28

    Par défaut

    bonjour, désole pour le retard tu peut me donner un exemple comment faire cela ?

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2006
    Messages
    412
    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 : 412
    Points : 2 292
    Points
    2 292

    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 averti Avatar de cantador
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mars 2006
    Messages : 515
    Points : 413
    Points
    413

    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 averti Avatar de cantador
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mars 2006
    Messages : 515
    Points : 413
    Points
    413

    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 averti Avatar de cantador
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : mars 2006
    Messages : 515
    Points : 413
    Points
    413

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

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

    Informations forums :
    Inscription : janvier 2018
    Messages : 44
    Points : 28
    Points
    28

    Par défaut

    merci cantador

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    2 728
    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 : 2 728
    Points : 4 406
    Points
    4 406

    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, 16h00
  2. Programmer un Progress bar avec la procédure de recherche
    Par souminet dans le forum Débutant
    Réponses: 11
    Dernier message: 20/02/2008, 13h14
  3. Comment fonctionne une Progress Bar
    Par loulag07 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/01/2008, 16h37
  4. [winAPI] Comment créer une progress bar ownerdraw ?
    Par kidpaddle2 dans le forum Windows
    Réponses: 1
    Dernier message: 01/08/2006, 12h02
  5. Comment programmer un BHO en Delphi ?
    Par pdtor dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 20/01/2006, 22h59

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