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

Composants VCL Delphi Discussion :

[D2007 Win32] Problème de refresh du Canvas avec un TTimer


Sujet :

Composants VCL Delphi

  1. #1
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut [D2007 Win32] Problème de refresh du Canvas avec un TTimer
    Bonjour,


    Dans une appli MDI, j'ai une barre de statut avec un TLabel qui affiche la date et l'heure courante. Ce TLabel est rafraîchi via un TTimer toutes les secondes. La fiche contient un logo (bitmap) au niveau du canvas.
    Mon problème, c'est que quand le TTimer est actif, le logo à un effet de "flash". Comment remédier à ce problème ?
    Merci.

    Dans le OnTimer, j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LblDateHeure.Caption := DateTimeToStr(now);
    et dans le OnPaint de la fiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not FondBmp.Empty then self.Canvas.Draw(200,200,FondBmp);

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 875
    Points : 11 364
    Points
    11 364
    Billets dans le blog
    6
    Par défaut
    essaye de mettre Form.DoubleBuffered:=True ?

  3. #3
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Ca ne change pas grand chose... Il y a une très légère amélioration, mais ça scintille toujours...

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 673
    Points : 7 052
    Points
    7 052
    Par défaut
    Citation Envoyé par SLE Voir le message
    Ca ne change pas grand chose... Il y a une très légère amélioration, mais ça scintille toujours...
    Ton image est dirrectement posée sur ta Form ?
    Il n'y a pas un Panel intermédiaire ?

  5. #5
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    A la création de la fiche, je charge un fichier dans un TBitmap

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Fondbmp:=TBitmap.Create;
      FondBmp.Transparent := True;
      FondBmp.TransparentColor := clWhite;
      if FileExists(Memvar.m_pathlogo) then Fondbmp.LoadFromFile(Memvar.m_pathlogo) else ShowMessage('Erreur Config Logo - Non trouvé !');
    et dans le OnPaint je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if not FondBmp.Empty then self.Canvas.Draw(200,200,FondBmp);

  6. #6
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Il n'y a pas un Panel intermédiaire ?
    Et oui... il suffit de placer un TPanel en Align 'alClient' sur la fiche et le scintillement disparaît... Merveilleux !!! Merci.

  7. #7
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Citation Envoyé par SLE Voir le message
    Et oui... il suffit de placer un TPanel en Align 'alClient' sur la fiche et le scintillement disparaît... Merveilleux !!! Merci.
    Bon ben j'ai parlé un peu vite... Oui le scintillement disparaît, mais il n'est pas le seul !!! Les filles MDI aussi ne s'affichent plus, puisqu'elles sont en arrière plan et donc masquées par le panel

    J'ai quand même trouvé une autre solution, qui elle, fonctionne parfaitement. Plus besoin d'un panel en fond de fiche. Il suffit de mettre la propriété AlphaBlend à True et AlphaBlendValue à 255 et le scintillement disparaît.

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/07/2009, 09h37
  2. [D7/Win32] Problème de traduction avec dxGetText
    Par _Alain_ dans le forum Débuter
    Réponses: 3
    Dernier message: 30/03/2008, 22h03
  3. Réponses: 1
    Dernier message: 24/08/2007, 09h29
  4. [Win32] Problème avec les sockets
    Par mickael777 dans le forum MFC
    Réponses: 3
    Dernier message: 12/08/2005, 11h15
  5. [D6] Problème de canvas avec MessageDlg
    Par dridri86 dans le forum Langage
    Réponses: 9
    Dernier message: 12/07/2005, 13h44

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