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 :

[D5] Création d'une fenêtre d'attente


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut [D5] Création d'une fenêtre d'attente
    Bonsoir!
    Dans l'appli que je suis en train de bâtir, j'ai un chargement de fichier qui dure assez longtemps en cours de fonctionnement (après que l'utilisateur ait choisi une option).
    Je souhaite faire apparaître une fenêtre d'attente (pour éviter aux impatients de cliquer partout en disant « ça marche pas ! »).
    Pour l’appel de la fenêtre en question je pense à : Mais je me demande comment la masquer au bon moment, lorsque le chargement sera terminé.
    Je suis un novice autodidacte et j’ai eu beau tenter des recherches dans la FAQ ou les tutoriels avec : « Veuille patienter » ou « fenêtre d’attente », je n’ai rien trouvé de concluant.
    Quelqu’un voudra-t-il me guider ?
    Merci.

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 197
    Points : 54
    Points
    54
    Par défaut
    Tu peux utilise JVProgressBar de la librarie JVCL.
    je l'utilise lorsque j'ecris dans un fichier.

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonsoir,

    Si tu ne dois plus ouvrir cette fenêtre : Ma Fenetre.Free, sinon Ma fenetre.Close

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    EN fait ce que tu veux faire s'appelle plutôt un Splash screen. Donc tu trouves bien dans la FAQ : http://delphi.developpez.com/faq/?pa...n#splashscreen

  5. #5
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Euh..désolé j'avais mal lu le côté 'en cours d'execution de l'appli'...ce n'est donc pas vraiment un Splash.

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Je t'invite à lire ici...
    [Résolu] Boîte de message sans bouton "Veuillez patienter..."
    Je crois que c'est ce que tu cherche a faire...
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  7. #7
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    Merci à tous les deux.
    je viens d'essayer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      MaFenetre.Show;
      MaFenetre.BringToFront;
      MaFenetre.Refresh;
       try
    …..
    mon traitement
    ….
    Finally
        MaFenetre.close;
        ….
    End ;
    mais j'ai un message d'erreur sur le .close (et .free aussi):
    EInvalidOperation 'Impossible de focaliser une fenêtre désactivée ou invisible
    alors que la femêtre est visible et au premier plan.
    Je viens de voir le post de PhilNext.
    Effectivement on peut l'appeler ainsi mais comment le fermer?
    J'ai trouvé des choses sur le splash screen, mais toujours pour le lancer au démarrage (appelé dans le .dpr) et pas en cours d'application comme j'ai besoin de le faire.
    merci quand même.

  8. #8
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    Citation Envoyé par Eric Boisvert
    Je t'invite à lire ici...
    [Résolu] Boîte de message sans bouton "Veuillez patienter..."
    Je crois que c'est ce que tu cherche a faire...
    C'est exactement ce que je cherche à faire, Eric Boisvert.Je viens de tester ce code, mais j'ai toujours la même exception:
    EInvalidOperation 'Impossible de focaliser une fenêtre désactivée ou invisible
    sur leMerci

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Citation Envoyé par MelkInarian
    Je viens de tester ce code, mais j'ai toujours la même exception:
    sur leMerci
    T'a essayer ce code dans une nouvelle application?
    Juste pour essayer de cerné le problème?
    Quelle version de delphi?
    Quelle version de OS?
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  10. #10
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    Je viens de me rendre compte (en mode pas à pas) qu'à l'exécution du
    Diag.Hide();
    , ça saute dans mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TForm1.FormActivate(Sender: TObject);
    dans lequel j'ai une instruction: et c'est la que surgit l'erreur:
    EInvalidOperation 'Impossible de focaliser une fenêtre désactivée ou invisible
    J'utilise [D5] avec [XP].
    Melk

  11. #11
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    Je viens de modifier mon prog pour qu'il n'y ait plus de dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TForm1.FormActivate(Sender: TObject);
    Cela fonctionne, même si ça passe plusieurs fois dedans,
    une fois quand il faut c'est à dire au début puis à chaque appel deComme je ne fais qu'y charger mes combobox avec loadfromfile,
    çà recharge à chaque passage mais ce n'est pas plus gênant que çà.
    C'est bizarre tout de même.
    Merci à tous
    Melk

  12. #12
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Comme c'est toujours agaçant, tant pour le concepteur que l'utilisateur', de poireauter devant un écran d'attente cela vaudrait également le coup de chercher à réduire la durée de chargement. Non ?

    Exemple : Charger le fichier depuis le disque-dur d'abord via un Stream (réputés très rapides ), soit un TFileStream ou un TMemoryStream selon les besoins, et ceci en une seule rafale ininterrompue par tout traitement secondaire dont l'exécution peut être faite après chargement des données. (
    Autrement dit : charger d'abord toutes les données et attendre la fin du chargement pour traiter les données. Les streams pour la vitesse de chargement et le traitement différé pour éviter de sanctionner cette vitesse par des appels répétitifs au disque-dur qui est toujours plus lent que ce qui se passe en mem-vive et dont l'inertie le rend encore plus lent si on lui demande de bosser par saccades au lieu de faire son boulot en continu sur sa lancée.

    ... Et si vous remplacez par exemple des "file of byte" extrèmements lents, par des Stream le gain de rapidité sera ancore plus conséquent.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

Discussions similaires

  1. Création d'une fenêtre de chargement
    Par mattyeux dans le forum AWT/Swing
    Réponses: 12
    Dernier message: 11/02/2007, 01h34
  2. [C# 2]Affichage d'une fenêtre d'attente
    Par sarapis dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/06/2006, 00h18
  3. création d'une fenêtre d'identification
    Par ghyosmik dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/11/2005, 15h29
  4. Destruction automatique d'une fenêtre d'attente
    Par Depteam1 dans le forum MFC
    Réponses: 4
    Dernier message: 20/09/2005, 13h40

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