Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources et autres ressources pour la rubrique Delphi.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/04/2011, 10h45   #1
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 392
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 4 392
Points : 10 725
Points : 10 725
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%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 70
Vieux 04/04/2011, 13h55   #2
GoustiFruit
Membre éprouvé
 
Inscription : octobre 2002
Messages : 554
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 554
Points : 458
Points : 458
Roh, mais ça m'a l'air excellent ça... et ça tombe à point

Merci M'sieur !
GoustiFruit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 21h01   #3
JustMe
Membre éprouvé
 
Avatar de JustMe
 
Inscription : juillet 2002
Messages : 441
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 441
Points : 455
Points : 455
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/
JustMe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 15h17   #4
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
Bonjour,

Existe-t-il un équivalent en D7 ?

En tous cas merci pour la contrib
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 15h25   #5
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
Oups ! ca fonctionne en D7. Fallait essayer avant de poster.
Je pensais que c'était pour les version récente de Delphi
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 15h34   #6
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 392
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 4 392
Points : 10 725
Points : 10 725
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%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 15h39   #7
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
Encore merci Paul
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 19h12   #8
Montor
Membre émérite
 
Avatar de Montor
 
Homme
Inscription : avril 2008
Messages : 863
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations forums :
Inscription : avril 2008
Messages : 863
Points : 844
Points : 844
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.
Montor est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/04/2011, 19h21   #9
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 392
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 4 392
Points : 10 725
Points : 10 725
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%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/04/2011, 00h30   #10
freud
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 994
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 994
Points : 442
Points : 442
Super ! j'aurais besoin de ça
Merci Montor
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2012, 12h19   #11
safailizabet
 
Femme
Développeur informatique
Inscription : 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 : -4
Points : -4
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 !

Pièce jointe 75479
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
safailizabet est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/03/2012, 06h46   #12
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 392
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 4 392
Points : 10 725
Points : 10 725
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%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h00.


 
 
 
 
Partenaires

Hébergement Web