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

IHM Discussion :

Empêcher le scintillement des contrôles quand MouseMove affiche une image.


Sujet :

IHM

  1. #1
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut Empêcher le scintillement des contrôles quand MouseMove affiche une image.
    Bonjour,
    Mes boutons de commande qui sont dans l'entête du formulaire scintillement 1 coup quand j'affiche une image par le survol du bouton Cmd1 ou Cmd2.
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Compare Database
    Option Explicit
     
    Dim m_Vue As Integer
     
    Private Sub Cmd1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If m_Vue = 1 Then 
            Exit Sub 
        Else
            If Me!ImgV.Visible = false Then Me!ImgV.Visible = True
            m_Vue = 1 ' pour exécuter le code qu'une fois
        End If
        Me!ImgV.Picture = Application.CurrentProject.path & "\Img1.png"
    End Sub
     
    Private Sub Cmd2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If m_Vue = 2 Then 
            Exit Sub 
        Else
            If Me!ImgV.Visible = false Then Me!ImgV.Visible = True 
            m_Vue = 2 ' pour exécuter le code qu'une fois
        End If
        Me!ImgV.Picture = Application.CurrentProject.path & "\Img2.png"
    End Sub
     
    Private Sub EntêteFormulaire_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Me!ImgV.Visible = True Then
            Me!ImgV.Visible = False
            m_Vue = 0 ' pour exécuter le code au survol de Cmd1 ou de Cmd2 
        End If
    End Sub
    Y aurait-il un moyen d'empêcher ce scintillement ?

    Merci d'avance pour vos suggestions.
    Un travail qui plait est à moitié fait.

  2. #2
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    N'est-ce pas l'effet au survol du bouton? As-tu essayé de modifier simplement les propriétés du bouton, voir aussi le format sur l'effet lumière.
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  3. #3
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour,
    Bertiny merci pour ta réponse, je ne sais pas ce que c'est l'effet lumière, alors j'ai réduit au strict minimum mon formulaire où les boutons scintillent et j'ai zippé la base, comme ça tu vois exactement ce que je veux dire, c'est les boutons vue(i) qu'il faut survoler et ce sont les autres boutons (factices car ils n'ont pas de code dans ce formulaire) qui scintillent.

    Fichier Zip : Db_Image.zip

    C'est pas le gros scintillement, mais dans mon vrai formulaire qui est plein écran et qui à trois fois plus de boutons, c'est désagréable.

    Bien cordialement
    Un travail qui plait est à moitié fait.

  4. #4
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour,
    J'ai remarqué que le scintillement se produit quand je change le Contrôle Source (.Picture) du contrôle image ImgVue dans les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me!ImgVue.Picture = Application.CurrentProject.Path & "\v1.png"
    'et
    Me!ImgVue.Picture = Application.CurrentProject.Path & "\v1.png"
    il m'est venu l'idée de créer 4 contrôles images superposés ImgVue1, ..., ImgVue4 avec chacun le chemin de l'image qu'ils doivent afficher dans leur Contrôle Source

    Puis rendre visible que le contrôle image désiré au survol de la souris (Sub AfficheVue)
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Option Compare Database
    Option Explicit
    '
    Dim m_Vue As Integer
     
    Private Sub bas_v1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If m_Vue <> 1 Then AfficheVue 1
    End Sub
    Private Sub bas_v2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If m_Vue <> 2 Then AfficheVue 2
    End Sub
    Private Sub bas_v3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If m_Vue <> 3 Then AfficheVue 3
    End Sub
    Private Sub bas_v4_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If m_Vue <> 4 Then AfficheVue 4
    End Sub
     
    Sub AfficheVue(Vx As Integer)
    Dim I As Integer
        For I = 1 To 4
            If I = Vx Then Me("ImgVue" & I).Visible = True Else Me("ImgVue" & I).Visible = False
        Next I
        m_Vue = Vx
    End Sub
     
    Private Sub EntêteFormulaire_Click()
        AfficheVue 0
    End Sub
    Pour 4 images cette bidouille fonctionne, je la déconseille pour 50 images !

    Ci joint dans la bd, les 2 formulaires, celui qui scintille et celui avec 4 images qui ne scintille plus.

    Je cherche une solution plus Pro, et comprendre pourquoi il y a scintillement dans le Formulaire 1 de la bd, merci par avance.
    Fichiers attachés Fichiers attachés
    Un travail qui plait est à moitié fait.

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonsoir, Tortille,
    Je me disais bien que du côté de la bibliotheque GDI+ d'Arkham, il y avait quelque chose à faire pour evtier le scintillement.
    Vois le formulaire tortille_2 dans la bd jointe.

    CDLT
    Fichiers attachés Fichiers attachés
    "Always look at the bright side of life." Monty Python.

  6. #6
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour Micniv,
    C'est super ta solution, la bibliotheque GDI+ d'Arkham est vraiment super aussi.
    Ah! c'est mieux que mon bidouillage.
    Pour essayer de comprendre ce qui cloche dans la solution de départ, c'est a dire un contrôle image dans l'entête du formulaire au quel j'affecte une image en survolant un bouton.
    Que fait le formulaire ? Quand je vois ce scintillement, je pense de suite à un Me.Requery.
    Et après pourquoi dans ta solution ne scintille pas ?
    Si j'examine les diffirences :

    On part tous les deux d'un contrôle image
    Je charge l'image dans le contrôle et je l'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!ImgVue.Picture = CurrentProject.Path & "\v1.png"
    Tu charges l'image dans le contrôle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     oGdi.OpenFile (CurrentProject.Path & "\v1.png")
    Puis tu l'affiches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oGdi.RepaintControl ImgVue, , , True
    la différence entre les 2 codes c'est que de mon côté, je suppose qu'Access recourt au Requery pour afficher l'image que je luis demande
    tandis que de ton côté Access est berné, il ne s'aperçoit pas que tu affiches une image différente dans le contrôle image.

    En tout cas je prends car ça ne rajoute qu'une ligne au code au lieu des 4 contrôles images (pour mon cas), et là ce sera difficile de faire mieux.

    1000 merci Micniv.
    Bien cordialement
    Un travail qui plait est à moitié fait.

  7. #7
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Merci de ton appréciation Tortille.

    Sur ce simple chargement d'image, on voit bien la puissance de GDI+ (et de master Arkham !), en effet.
    Bonne suite
    "Always look at the bright side of life." Monty Python.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 06/06/2009, 13h21
  2. Réponses: 2
    Dernier message: 07/05/2009, 09h47
  3. Scintillement des contrôles du à un redimensionnement
    Par Ju2Pom dans le forum C++Builder
    Réponses: 9
    Dernier message: 18/10/2007, 23h48
  4. [C#] Passer des contrôles comme parametre dans une fonction
    Par sara21 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/09/2006, 13h05
  5. Pb pour cacher des contrôles à l'ouverture d'une page
    Par Anne1969 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/01/2005, 15h16

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