Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 569
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 569
    Points : 15 924
    Points
    15 924

    Par défaut Message "Veuillez patienter" pour une tâche un peu longue

    Voici une démonstration de l'utilisation d'une fenêtre "Veuillez patienter" à déclenchement automatique.

    le principe est d'appeler WaitForm.Submit() en lui passant en paramètre une méthode à soumettre. Celle-ci s'execute dans un Thread secondaire, si elle prend plus de 2 secondes, une fenêtre "Veuillez patienter" s'affiche avec un bouton Annuler qui permet de stopper la procédure. Sinon la fenêtre s'efface automatiquement en fin de tâche.

    Pour les besoins de l'exemple, on parcours les fichiers de C:\, avec un sleep pour ralentir le code si vous cochez la case "Ralentir" afin que la fenêtre "Veuillez patienter" s'affiche.

    Une console est également affichée pour permettre de suivre le déroulement de la tâche soumise.

    J'utilise cette technique dans une application qui effectue des requêtes SQL qui sont parfois longues, parfois très rapides, WaitForm s'occupe de tout !

    Submit.zip
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  2. #2
    Membre expérimenté
    Inscrit en
    octobre 2002
    Messages
    601
    Détails du profil
    Informations forums :
    Inscription : octobre 2002
    Messages : 601
    Points : 583
    Points
    583

    Par défaut

    Roh, mais ça m'a l'air excellent ça... et ça tombe à point

    Merci M'sieur !

  3. #3
    Membre expérimenté Avatar de JustMe
    Inscrit en
    juillet 2002
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 469
    Points : 541
    Points
    541

    Par défaut

    C'est un immense plaisir de me retrouver avec vous dans un même forum Mr PAUL
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**
    http://www.mobile-tactile.com/

  4. #4
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut

    Bonjour,

    Existe-t-il un équivalent en D7 ?

    En tous cas merci pour la contrib

  5. #5
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut

    Oups ! ca fonctionne en D7. Fallait essayer avant de poster.
    Je pensais que c'était pour les version récente de Delphi

  6. #6
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 569
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 569
    Points : 15 924
    Points
    15 924

    Par défaut

    c'est fait sous Delphi 6 mais ça doit fonctionner avec à peu près toutes les versions
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  7. #7
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut

    Encore merci Paul

  8. #8
    Membre émérite Avatar de Montor
    Homme Profil pro
    Inscrit en
    avril 2008
    Messages
    863
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : avril 2008
    Messages : 863
    Points : 891
    Points
    891

    Par défaut

    Voici une autre version avec fonctions BeginThread,EndThread ...
    Code :
    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
    interface
     
    uses
      Windows, Messages, Controls, Forms,Dialogs;
     
    type
       TProcess= procedure of object;
     
    function Submit(Process: TProcess): integer;
     
    implementation
    type
       PProcess=^TProcess;
    function StartMe(Hwnd: HWND): integer;
    begin
      Result := 0;
      with FindControl(Hwnd) do
      try
         PProcess(Tag)^;
      except
        Result := -1;
      end;
      PostMessage(Hwnd,WM_CLOSE,0,0);
      EndThread(Result);
    end;
     
    function Submit(Process: TProcess): integer;
    var
     FThread :Cardinal;
    begin
      with CreateMessageDialog('Veuillez patienter...', mtCustom, [mbAbort])do
      try
           Tag:=Integer(@@Process);
           FThread := BeginThread(nil,0,@StartMe,Pointer(Handle),0,PDWord(nil)^);
           if WaitForSingleObject(FThread,2000) = WAIT_TIMEOUT then
             if ShowModal()= mrAbort then
                TerminateThread(FThread, DWORD(-1));
           WaitForSingleObject(FThread,INFINITE);
           GetExitCodeThread(FThread, PDWord(@Result)^) ;
           CloseHandle(FThread);
      finally
         Free;
      end;
    end;
     
    end.

  9. #9
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 569
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 569
    Points : 15 924
    Points
    15 924

    Par défaut

    intéressant, mais la même chose sans transtypage ésotérique serait plus portable

    n'oublie pas que Embarcadero nous prépare un Delphi 64 bits
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  10. #10
    Membre éprouvé
    Homme Profil pro
    Analyste-développeur
    Inscrit en
    mai 2002
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Analyste-développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 998
    Points : 440
    Points
    440

    Par défaut

    Super ! j'aurais besoin de ça
    Merci Montor

  11. #11

    Femme Profil pro
    Développeur informatique
    Inscrit en
    mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2012
    Messages : 36
    Points : -5
    Points
    -5

    Par défaut

    Citation Envoyé par Paul TOTH Voir le message
    Voici une démonstration de l'utilisation d'une fenêtre "Veuillez patienter" à déclenchement automatique.

    le principe est d'appeler WaitForm.Submit() en lui passant en paramètre une méthode à soumettre. Celle-ci s'execute dans un Thread secondaire, si elle prend plus de 2 secondes, une fenêtre "Veuillez patienter" s'affiche avec un bouton Annuler qui permet de stopper la procédure. Sinon la fenêtre s'efface automatiquement en fin de tâche.

    Pour les besoins de l'exemple, on parcours les fichiers de C:\, avec un sleep pour ralentir le code si vous cochez la case "Ralentir" afin que la fenêtre "Veuillez patienter" s'affiche.

    Une console est également affichée pour permettre de suivre le déroulement de la tâche soumise.

    J'utilise cette technique dans une application qui effectue des requêtes SQL qui sont parfois longues, parfois très rapides, WaitForm s'occupe de tout !

    Submit.zip
    bonjour j'ai le même problème mon application établi un traitement très long et je qu'une progressebare s’affiche cependant ce traitement votre idée aussi me plait ms je sais pas comment créer un waitform dans le vb.net
    merci de me répondre

  12. #12
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 569
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 569
    Points : 15 924
    Points
    15 924

    Par défaut

    Citation Envoyé par safailizabet Voir le message
    bonjour j'ai le même problème mon application établi un traitement très long et je qu'une progressebare s’affiche cependant ce traitement votre idée aussi me plait ms je sais pas comment créer un waitform dans le vb.net
    merci de me répondre
    sans doute faut-il poser la question sur le forum VB !

    ou vous mettre à Delphi...je suis revendeur
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •