Fenêtre pour patienter pendant traitement

Fenêtre pour patienter pendant traitement - Delphi/Pascal - Programmation

Marsh Posté le 14-03-2004 à 12:41:24    

salut,
 
comment faire une fenêtre d'attente pendant qu'un traitement est en cours (rotation d'image).
 
Je pensais faire une fenêtre modale,
sur son onActivate lancer mon traitement, et à la fin de ce traitement affecter modalResult à mrOk.
 
mais ça ne semble pas marcher :/
le traitement ce fait bien (l'image est bien tournée), mais ma fenêtre modale ne ce ferme pas. :/
 
Comment faire? (proprement  :) )

Reply

Marsh Posté le 14-03-2004 à 12:41:24   

Reply

Marsh Posté le 14-03-2004 à 12:55:49    

fais un Close de la fenêtre à la fin.
Sinon une autre solution serait de désactiver la fenêtre principale (Enabled), afficher une fenêtre non modale, faire le traitement, fermer la fenêtre, réactiver la fenêtre principale. L'intérêt c'est que tu n'es pas obligé de lancer ton traitement depuis la fenêtre d'attente.


Message édité par antp le 14-03-2004 à 12:57:01

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 14-03-2004 à 14:21:46    

ok,
 
sinon c'est propre de procéder ainsi?
 
Merci en tout cas.

Reply

Marsh Posté le 14-03-2004 à 14:42:36    

Bon ça m'affiche la fenêre par contre ça n'a pas fini de la dessiner :/
 
On dirait que la rotation bouffe trop et fait frizer l'appli :/
 
Si l'image est petite alors ça fait un flash car trop rapide.
 
:/

Reply

Marsh Posté le 14-03-2004 à 14:49:35    

Tu peux mettre des Application.ProcessMessage de temps en temps pour ne pas que l'application ne semble bloquée.
On mieux : mettre ton traitement dans un thread séparé, mais c'est un peu plus difficile (on n'a rien sans rien :D)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 14-03-2004 à 20:55:25    

Le thread on verra ça plus tard :D
Effectivement une fois la file de message traitée ça marche mieux. :)

Reply

Marsh Posté le 19-03-2004 à 08:03:38    

J'essaierai de te retrouver le code que j'avais mis en place avec l'aide de mon maitre de stage il y a quelques années. Il faisait appel à des échanghes de messages, si je remet la main dessus, je te le post.


Message édité par Titalium le 19-03-2004 à 08:04:32
Reply

Marsh Posté le 19-03-2004 à 08:37:01    

ok.

Reply

Marsh Posté le 12-04-2004 à 23:34:33    

Dans votre fiche Modal:
 
  TFiche= class(TForm)
  ...
 
  Timer1: TTimer;
  procedure Timer1OnTimer(Sender: TObject);
 
private
  Cond: ^Boolean;
 
public
  Constructor CreateFiche(Sender: AOwner, Condition: Boolean);
 
var Fiche: TFiche;
 
implementaion
 
 
Constructor CreateFiche(Sender: AOwner, Condition: Boolean);
begin
  inherited Create(AOWner);
  Cond:= @Condition;
end;
 
procedure Timer1OnTimer(Sender: TObject);
begin
  if Cond^ then
    Close;
end;
////////////////////////////////////////////////////////////////////////
Dans votre unite principale:
 
procedure FaireVotreTraitement;
var CondF: Boolean;
    Toufik: TFiche;
begin
 CondF:= False;
 Toufik:= TFiche.CreateFiche(Self, CondF);
 try
   Toufik.ShowModal;
 
   // votre traitement..  
   // ....
   // et finalement:
   CondF:= True;
 finally
   Toufik.Free;
 end;
end;
 
  Bonne chance...


Message édité par Tou_Pas le 13-04-2004 à 23:43:40

---------------
Toufik
Reply

Marsh Posté le 13-04-2004 à 10:55:20    

pas besoin de remonter un vieux sujet pour donner un truc qui ne marchera pas :o
(ça bloquera sur le showmodal)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed