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 :

Bloquer une form pendant un chargement


Sujet :

Delphi

  1. #1
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut Bloquer une form pendant un chargement
    Bonjour,

    Lors du OnShow de certaines forms, j'aouvre des connections à des tables. Cela mets parfois du temps. Pour faire patientez les utilisateurs, j'affiche une autre form avec un mesage 'veuillez patientez' et un progressBar qui affiche un pourcentage.

    Mais comme le fenêtre à message est non modale (pour que je puisse faire avancer les progressBar), les boutons sont activables ce qui déclanche des catastrophes.

    Comment faire pour bloquer une fenêtre (les controles)?

    Merci

  2. #2
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    le fait d'ouvir une fenêtre par ShowModal ne devrait pas empêcher l'avancement de ta progressBar...

    Où est le problème?
    Au pire, tu dois pouvoir passer la feuille arrière à enabled = false, ce qui la désactive intégralement.
    Mais c'est un peu dangereux, parce que si ca plante, tu ne pourras même plus la fermer... (sauf ctrl+alt+suppr )

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    J'utilise cette fonction

    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
     
    procedure TCustomChildFrm.GesControls(Control: TControl;
      Enabled: boolean);
    var
      i: integer;
    begin
      for i := 0 to Control.ComponentCount - 1 do
      begin
        if Control.Components[i].ComponentCount > 0 then
          GesControls(TControl(Control.Components[i]), Enabled);
     
        if Control.Components[i] is TControl then
          TControl(Control.Components[i]).Enabled := Enabled;
      end;
    end;
    et pour l'apeller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    begin
      GesControls(Self, false);
      ....
      GesControls(Self, true);
    end;
    A+

  4. #4
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par Alyx²
    le fait d'ouvir une fenêtre par ShowModal ne devrait pas empêcher l'avancement de ta progressBar...

    Où est le problème?
    Parce que j'avance la progression du progressBar dans la fenêtre appelante car c'est elle qui fait le OnShow, et donc c'est la où je sais où j'en suis. Si je fais un showModal dans le OnShow, il va s'arrêter. Donc inutile.

  5. #5
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    paye ton usine à gaz cadetill...

    (ok, je sors...)

  6. #6
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par eponette
    Parce que j'avance la progression du progressBar dans la fenêtre appelante car c'est elle qui fait le OnShow, et donc c'est la où je sais où j'en suis. Si je fais un showModal dans le OnShow, il va s'arrêter. Donc inutile.
    ah oui... forcément...
    Ca serait pas plus simple à ce moment là de mettre la progression dans une petite fenetre à part?

    Elle te sera surement utile par la suite en plus. (réutilisable).
    C'est vrai que sinon, à par se faire les composants 1 par 1, je vois pas trop...
    Ou alors faire un test dans chaque OnClick qui vérifie si le traitement est terminé ou non (à l'aide d'un booleen ou de ta progress bar). Si c'est pas encore terminé, tu jette l'utilisateur!

  7. #7
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Avec un Try ... Finally, pas besoin de ctrl+Alt+Supprime.

    C'est pas très beau, mais cela fonctionne

  8. #8
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par Alyx²
    ah oui... forcément...
    Ca serait pas plus simple à ce moment là de mettre la progression dans une petite fenetre à part?
    La fenêtre est une fenêtre à part... J'ai juste besoin de savoir où je suis pour faire avancer le progress. Le enabled = false fonctionne mais n'est pas très beau. Mais à défaut...

    Merci quand même (et à Cadetill aussi, malgrès les propos limite de Alyx²)

Discussions similaires

  1. Bloquer une fiche pendant son chargement
    Par dim07 dans le forum Langage
    Réponses: 8
    Dernier message: 08/07/2008, 10h57
  2. Bloquer une fenètre pendant chargement
    Par donnadieujulien dans le forum Débuter
    Réponses: 1
    Dernier message: 22/06/2008, 15h36
  3. affichage d'une page pendant son chargement
    Par boss_gama dans le forum ASP
    Réponses: 3
    Dernier message: 17/08/2006, 18h04
  4. [Conception] Comment faire pour bloquer une valeur pendant 24H
    Par lolodelp dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/07/2006, 15h46
  5. [C#][Débutant] Peux t'on empecher le clignotement de la form pendant le chargement
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/05/2006, 17h00

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