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 :

Rafraichir le fond d'une Form


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 266
    Par défaut Rafraichir le fond d'une Form
    Bonjour,

    Voici mon problème: J'ai crée une application dont l'interface est partitionnée en différente partie. Il s'agit de Form ( qu'on appellera Form Fille) contenu dans une grande et même Form ( qu'on appellera form Mere). Mon problème est que lorsque je passe une fenêtre ( par exemple explorateur windows) au dessus de mon application mon interface est mal rafraichi et on observe de grosse trainée de la couleur de ma Form mere.
    J'ai tenté d'utilisé des Refresh(), des Repaint(), et des Update() à l’intérieur des Form fille mais ces trainée de couleur perdure toujours,

    De plus je ne veut pas utilisé trop la fonction Refresh() , car celle ci fait "scintillé" les éléments contenue dans les Forms.

    Voici exactement ce qu'on peut observer :

    http://www.hostingpics.net/viewer.ph...43263demo1.jpg

    ( je n'est pas réussi a glisser l'image dans le message)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 164
    Par défaut
    Bonjour,

    essaye de mettre la propriété de DoubleBuffered à true.

    selon l'aide:

    Si DoubleBuffered a la valeur false, le contrôle fenêtré se dessine directement dans la fenêtre. Si DoubleBuffered a la valeur true, le contrôle fenêtré se dessine dans un bitmap mémoire qui est ensuite utilisé pour dessiner la fenêtre. L'utilisation d'un double tampon réduit les "sautillements" quand le contrôle se redessine mais consomme davantage de mémoire.

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    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 081
    Par défaut
    C'est en général, un effet que l'on voit lorsqu'un programme ne répond pas !
    As-tu redéfini la WndProc pour l'image de Fond ?
    Ton GroupBox utilise des Anchors Left+Top+Right ?
    As-tu des composants qui se supperposent comme des Label ou StaticText ayant cette couleur
    Voir aussi ParentBackGround

    Sinon, comme le suggère Guyt54, le DoubleBuffered peut éviter ce problème
    Essaye aussi Invalidate
    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

  4. #4
    Membre éclairé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 266
    Par défaut
    Je vies de faire le test avec le DoubleBuffered il fonctionne pour certains éléments, mais cette solution ne fonctionne pas pour les labels et les SpeedButtons.


    Pour répondre à ShaiLeTroll

    Avec quoi redéfinit-on le WndProc?
    Mon groupBox utilise bien des anchors en Top, left et right

    Mes labels ont un fond transparent.

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    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 081
    Par défaut
    Citation Envoyé par flamme34 Voir le message
    Avec quoi redéfinit-on le WndProc?
    Oubli, c'était juste pour savoir, on peut facilement faire des erreurs avec la WndProc
    Tu as donc juste changer la couleur de Fond

    Citation Envoyé par flamme34 Voir le message
    Mes labels ont un fond transparent.
    On dirait que tu as un composant sous le GroupBox Energie qui a tenté de dessiner alors qu'il n'aurait pas du !

    Je n'ai jamais vu ce phénomène sur XP, sur Vista on peut voir un défaut d'affichage des Labels avec D7 (il y a un patch à ce sujet)

    As-tu tente Invalidate dans un OnActivate celui de TApplicationEvents ou de la TForm
    Les deux ne fonctionnent pas forcément de la même façon
    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

  6. #6
    Membre éclairé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2011
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 266
    Par défaut
    Je viens de tester le Invalidate dans le OnActivate de ma TForm

    Mais sans plus de resultat. Je me suis aperçu que le Refresh() ne supprimais pas forcement les trainée de couleur.

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/08/2013, 20h52
  2. [Lazarus] Image de fond dans une form
    Par camcam10 dans le forum Lazarus
    Réponses: 1
    Dernier message: 30/05/2011, 09h13
  3. [PPT-2002] macro pour colorier le fond d'une forme
    Par bubus31 dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 20/10/2009, 21h22
  4. Rafraichir l'affichage d'une form/progressbar
    Par bubulemaster dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/03/2008, 16h02
  5. [VB6] Rendre transparent le Fond d'une FORM
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 17/05/2006, 08h23

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