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

C++Builder Discussion :

Chargement propre du visuel d'une fenetre


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut Chargement propre du visuel d'une fenetre
    bonjour à tous,

    Mon application est multi form et en passant d'une fenêtre à une autre, il existe un certain effet de "rémanence" de la fenêtre précédente.
    Cad que pendant un certain laps de temps certains composants (des boutons par exemple) sont recouverts par l'aspect de la fenêtre précédente avant d'être rafraichit.

    Pour passer d'une fenêtre à une autre j'utilise du form->Show et Form->Hide.

    Mais le point que je ne comprends pas est que si on navigue entre les fenêtre (succession de hide/show), cette rémanence diminue fortement si la fenêtre a déjà été affichée une fois au cours de la navigation.

    Quelle est selon vous la meilleur méthode pour avoir une transition "propre" entre 2 fenêtres?

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    utilise ShowModal pour un mode SDI, cela guide l'utilisateur
    Show\Hide c'est souvent dans un MDI, on laisse l'utilisateur afficher ce qu'il veut, c'est rare que l'on cache automatiquement

    A part C++ Builder 1 à 6, il y a peu d'application multi-form disjointe
    Même CodeGear a céder à la mode du tout intégré (même si la première chose que je fais c'est de repasser en mode flottant et désintégré)

    Tu avais Winamp qui proposait un mode multi-form avec ancrage pour faciliter son utilisation !

    On peut penser que tu as beaucoup de traitement dans les constructeurs ou OnCreate qui consomme du temps processeur comme du SQL
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    Mais je croyais que le OnCreate n'était appelé qu'à la création de la form? Si je crée toutes mes form au démarrage et que je navigue entre elles par la suite (je n'ai quasiment pas de code dans le Show)
    la rémanence persiste...

    Le showmodal ne va pas réglé mon problème. En effet, puisqu'il faut rechargé l'ensemble à chaque nouveau showmodal, le problème de rémanence est toujours là...

    l'idéal serait de pouvoir chargé le visuel dans un cache ou qqchose du genre avant de l'afficher.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Oui OnCreate n'est lancé qu'une fois par Instance !
    Je ne pensais pas que tu créais tes fenêtres dès le démarrage, moi en général, je n'ai que le Main qui est automatique !
    Le reste étant instancier à la volée !

    J'ai fait de grosses applications, je n'ai jamais eu ce genre de problème, j'ignore les traitements que tu fais, mais ils doivent être conséquent !
    Quel est le fonctionnel applicatif de ton logiciel ?

    J'ai eu quelques écrans un peu lourd, j'ai ajouté une Fenêtre de Progression durant l'execution du Constructeur, mais comme j'utilise énormément du ShowModal (ou un MDI géré de façon à ce que la navigation soit totalement maitrisé par le programme adapté au fonctionnel utilisateur)

    Ensuite pour ShowModal, c'est n'est un pas une solution pour régler ton problème, c'est plutôt un choix d'ergonomie et de "scénariser" ton application avec des comportements prédéfinies !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    Bon effectivement je travaille en MDI. Mais un MDI particulier puisque chaque fenetre est "principale". En effet, l'opérateur ne doit pas avoir accès à windows. C'est pourquoi mes fenêtres prennent tout l'écran et que chaque fenêtre correspond à une action :
    la première pour le log in
    la suivante est mon menu principale
    les autres découlent des actions opérateurs.

    Mais je pense en fait avoir trouvé le problème, j'avais une bande récurrente qui comportait les logos des 2 entreprises (jpg). J'avais fait une bande pour chaque fenêtre. J'ai finalement fait une fenetre "Mask" comportant les éléments récurrent et j'affiche les autres fenêtres au milieu de cette fenêtres. La propriété "sans bord" donne l'impression de n'avoir qu'une fenêtre.

    Le temps de chargement est considérablement réduit du fait que les images ne sont plus à charger à chaque fois.

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Salut,

    Tu peux aussi avoir ces effets de "rémanence" lorsque ton application fait de longs calculs qui ne laissent pas le temps au thread graphique de rafraîchir l'écran.

    Si tu as de telles calculs, il peut être bon d'exécuter un "Application->ProcessMessages();" de temps à autre.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Par défaut
    le process message est qqchose que j'utilise régulièrement et j'ai tenté de régler le problème avec cela mais cela n'a eu que peu d'impact car justement je ne faisait que très peu de calculs "lourds".

    Il n'avait dons pas vraiment d'utilité.

    Je pense vraiment que mon problème venait du chargement de l'image dans les TImage.

    Le complément à ce sujet serait donc plutôt :

    Comment optimiser le chargement des images dans les TImages?

Discussions similaires

  1. [WM19] Probleme de lenteur au chargement d'une fenetre
    Par lololebricoleur dans le forum Windev Mobile
    Réponses: 3
    Dernier message: 08/05/2014, 19h34
  2. Réponses: 1
    Dernier message: 08/12/2011, 17h02
  3. Réponses: 4
    Dernier message: 26/10/2011, 21h16
  4. Faire une fenetre de chargement ?
    Par juliensmarties dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 10/09/2010, 19h20
  5. Réponses: 11
    Dernier message: 27/08/2009, 22h18

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