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 :

Ribbon Invalidate instable [AC-2007]


Sujet :

IHM

  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut Ribbon Invalidate instable
    Bonsoir à tous,

    Je suis toujours dans mes migrations 2003/2007 et je viens de constater un problème dont je ne trouve pas la solution.

    Lorsque j'ouvre le Form1, mon ruban s'actualise grace à Form_Current (oRibbon.Invalidate).
    A partir de ce Form1, j'ouvre Form2 tout en fermant Form1.
    Lorsque je ferme Form2, pour revenir à Form1, le ruban ne s'actualise plus.
    J'ai également essayé avec InvalidateControl, mais rien n'y fait.
    A savoir également, que mes rubans changent en focntion du formulaire ouvert.

    Quelqu'un aurait il une réponse à ce problème car çà fait 3 jours que je planche dessus et je désespère.

    Cordialement

    Christophe

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir à tous,

    A force de recherche et de tests, je commence à avoir quelques éléments de réponses sans pour autant résoudre mon problème.

    Donc :
    Lorsque je charge mes rubans par fichiers xml, il n'y a plus de problèmes.
    Alors que ces mêmes codes xml, qui sont dans ma table UsysRibbons, eux ne fonctionnent qu'à une première ouverture de formulaire.

    Je me dis donc que finalement je ne charge pas correctement mes rubans.

    Dans le doute voici mes codes :
    Un macro AutoExec qui appelle LoadRibbons
    Ensuite :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Public oRibbon As IRibbonUI
     
    'Objet ruban
    Public Sub Ribbon_onLoad(ribbon As IRibbonUI)
        Set oRibbon = ribbon
    End Sub
     
    'Chargement du ruban
    Public Function LoadRibbons()
        On Error Resume Next
        Dim Rs As DAO.Recordset
        Set Rs = CurrentDb.OpenRecordset("Select * from USysRibbons")
        If Not Rs.EOF Then
            Do Until Rs.EOF
                Application.LoadCustomUI Rs!RibbonName, Rs!RibbonXml
                Rs.MoveNext
            Loop
        End If
        Set Rs = Nothing
    End Function
     
    'Chargement des images personnalisée dans le ruban en utilisant GDi+
    ' en mettant le fond transparent
    ' Favoriser les image *.gif
    Public Sub Ribbon_getImage(ByVal control As IRibbonControl, ByRef image)
    '- pTable : Nom de la table qui contient les images.
    '- pField : Nom du champ pièce-jointe.
    '- pWhere : Clause Where pour rechercher une image en particulier.
    Dim loGdi As New clRibbonImage
        Set image = loGdi.LoadFromAttachment("USysRibbonImg", "img", "id='" & control.Tag & "'")
    End Sub
     
    'Appel sur Form_Current()
    'Rafraichit le ruban
    Public Sub RefreshRibbon()
    If Not (oRibbon Is Nothing) Then
        oRibbon.Invalidate
    End If
    End Sub
     
    'Appel sur Form_Current()
    'Rafraichit un control de ruban
    Public Sub RefreshRibbonControl(ControlName As String)
    If Not (oRibbon Is Nothing) Then
        oRibbon.InvalidateControl ControlName
    End If
    End Sub
    J'associe ensuite chaque ruban à chaque formulaire.

    Merci de vos remarques

    Cordialement

    Christophe

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Je ne sais pas si c'est la cause de ton soucis, mais il faut autant de variables ruban (IRibbonUI) qu'il y a de fichiers xml avec onLoad="procedure".

    Sinon, si j'ai trois fichiers xml faisant appel à la même procédure onLoad, mais une seule variable ruban (IRibbonUI), cette variable ne pourra agir que le ruban ayant déclenché le dernier onLoad.

    Il me faudra, trois variables ruban, trois procédures onLoad.
    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
    Public oRibbon1 As IRibbonUI
    Public oRibbon2 As IRibbonUI
    Public oRibbon3 As IRibbonUI
     
    'Objet ruban 1
    Public Sub Ribbon1_onLoad(ribbon As IRibbonUI)
        Set oRibbon1 = ribbon
    End Sub
     
    'Objet ruban 2
    Public Sub Ribbon2_onLoad(ribbon As IRibbonUI)
        Set oRibbon2 = ribbon
    End Sub
     
    'Objet ruban 3
    Public Sub Ribbon3_onLoad(ribbon As IRibbonUI)
        Set oRibbon3 = ribbon
    End Sub
    Il faudra aussi tripler les procédures qui utilisent la variable ruban.
    RefreshRibbon() et RefreshRibbonControl(..) par exemple.

    A+

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Haaaaaaaaaa, ben çà marche mieux.

    Une fois de plus, tu me sors de la panade.
    Je commençais à désespérer de ne pas pouvoir avancer à migrer mes applications.

    En revanche pour Invalidate et InvalidateControl, j'ai pu éviter de répéter les codes comme suit (pour ceux que çà interresse) :
    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
    'Appel sur Form_Current()
    'Rafraichit le ruban
    Public Sub RefreshRibbon(pRibbon As IRibbonUI)
    If Not (pRibbon Is Nothing) Then
        pRibbon.Invalidate
    End If
    End Sub
     
    'Appel sur Form_Current()
    'Rafraichit un control de ruban
    Public Sub RefreshRibbonControl(pRibbon As IRibbonUI, ControlName As String)
    If Not (pRibbon Is Nothing) Then
        pRibbon.InvalidateControl ControlName
    End If
    End Sub
    Un grand merci pour ces conseils.

    Si je peux me permettre, une petite précision concernant ce sujet, dans le tutoriel de Christophe WARRIN, serait le bien venu.

    Bonne soirée

    Cordialement

    Christophe

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

Discussions similaires

  1. [RAVE] (invalid)
    Par dudux dans le forum Rave
    Réponses: 3
    Dernier message: 07/09/2004, 09h45
  2. [struts] invalidation de session
    Par rocco dans le forum Struts 1
    Réponses: 16
    Dernier message: 25/06/2004, 15h40
  3. [JSP] probleme d'invalidation de session
    Par Jovial dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 04/06/2004, 15h27
  4. Requête invalide
    Par hubble dans le forum Outils
    Réponses: 4
    Dernier message: 16/02/2004, 16h48
  5. [XMLRAD] invalid character type
    Par Sylvain James dans le forum XMLRAD
    Réponses: 4
    Dernier message: 10/12/2002, 07h47

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