Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

CreatorRibbonX ImageMso 2023 V4.9.X V 5.0

patricktoulon

XLDnaute Barbatruc
pour ceux que ca intéresse
le projet calendar
et les callback a coller dans le classeur sample produit
alors oui j'aurais pu faire plus simple mais il me manque des callback
VB:
'callback created by [[''creatorRibbonX'']]
'[createRibbonX Application] created by (''patricktoulon'')
'Version 2023  4.9.XX
'POUR MEMO 4 fonctions importantes à connaitre pour les controls dynamiques
'L 'objet IRibbonUI possède 4 méthodes :
'1° myribbon.Invalidate() qui actualise en une seule fois tous les contrôles personnalisés du classeur.
'2° myribbon.InvalidateControl("Id du control") qui actualise un contrôle particulier (ControlID correspond à l'identificateur unique du contrôle).
'3° myRibbon.ActivateTab ("id de l'onglet à activer")qui active l'onglet désigné par son ID dans les parenthèses
'4° myRibbonInvalidateControlMso ("Id de l'element"(onglet/group/control) )qui actualise  l'element désigné par son ID dans les parenthèses



'Nom du projet:[C:\Users\patrick1\Desktop\creator demo\Project_Calandrier\exemple.xml]
'créé le:[01/07/2023]
'l'event ribbon onLoad
Public myRibbon As IRibbonUI    ' {Variable pour l'object ribbon}
Public an&
Public mois&
Public minItem&
Public maxItem&
'Callback for customUI.onLoad
Sub CustomUIOnLoad(ribbon As IRibbonUI)
    Set myRibbon = ribbon
an = Year(Date)
mois = Month(Date)
End Sub

'procedure {onAction}de l'elementgallery [ID:''gallery_1''  ]'dans le parent [group_0''  Label:''Groupe N° 1'']
Sub gallery_1_Click(control As IRibbonControl, id As String, index As Integer)
Dim d As Date, WkD
d = DateSerial(an, mois, 1)
WkD = Weekday(d, vbUseSystemDayOfWeek)
d = d + index - 7 - WkD + 1
ActiveCell = d

End Sub

'procedure  {getItemCount} de l'element gallery dynamique[ID:''gallery_1''  ]'dans le parent [group_0''  Label:''Groupe N° 1'']
Sub gallery_1_getItemCount(control As IRibbonControl, ByRef returnedVal)
    returnedVal = 49
End Sub

'procedure  {getItemLabel}  de l'element(gallery)[ID:''gallery_1''  ]'dans le parent [group_0''  Label:''Groupe N° 1'']
Sub gallery_1_getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
    Dim dat As Date, lastDay, WkD&
    If (an = 0 Or mois = 0) Then: Exit Sub
    If index + 1 <= 7 Then
        returnedVal = Left(WeekdayName(index + 1), 3)
    Else
        dat = DateSerial(an, mois, 1)
        lastDay = Day(DateSerial(an, mois + 1, 0))
        WkD = Weekday(dat, vbUseSystemDayOfWeek)
        dat = (dat - WkD) + 1
        If index + 1 >= WkD + 7 Then minItem = index + 1 = WkD + 7 - 1
       
        If index + 1 >= WkD + 7 Then
            If Month(dat + index - 7) = mois Then
                returnedVal = Day(dat + index - 7)
            End If
        End If
    End If
End Sub

'procedure {onChange} de l'element[ID:''comboBox_1''  Label:''Annee'']'dans le parent [comboBox_1''  Label:''Groupe N° 1'']
Sub comboBox_1_onChange(control As IRibbonControl, text As String)
    an = Val(text)
myRibbon.InvalidateControl ("gallery_1")
End Sub

'procedure  {getItemCount} de l'element comboBox dynamique[ID:''comboBox_1''  Label:''Annee'']'dans le parent [group_0''  Label:''Groupe N° 1'']
Sub comboBox_1_GetItemCount(control As IRibbonControl, ByRef returnedVal)
    returnedVal = 10
End Sub

'procedure  {getItemLabel}  de l'element(gallery)[ID:''comboBox_1''  Label:''Annee'']'dans le parent [group_0''  Label:''Groupe N° 1'']
Sub comboBox_1_GetItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
    returnedVal = Year(Date) - 5 + index
End Sub

'procedure {onChange} de l'element[ID:''comboBox_2''  Label:''Mois'']'dans le parent [comboBox_2''  Label:''Groupe N° 1'']
Sub comboBox_2_onChange(control As IRibbonControl, text As String)
    mois = Month(DateValue("1 / " & text & " /  " & an))
myRibbon.InvalidateControl ("gallery_1")
End Sub

'procedure  {getItemCount} de l'element comboBox dynamique[ID:''comboBox_2''  Label:''Mois'']'dans le parent [group_0''  Label:''Groupe N° 1'']
Sub comboBox_2_GetItemCount(control As IRibbonControl, ByRef returnedVal)
    returnedVal = 12
End Sub

'procedure  {getItemLabel}  de l'element(gallery)[ID:''comboBox_2''  Label:''Mois'']'dans le parent [group_0''  Label:''Groupe N° 1'']
Sub comboBox_2_GetItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
    returnedVal = MonthName(index + 1)
End Sub

la future version les callback seront dans un frame
je suis en train d'ajouter le getItemId (qui m'aurait bien servi pour le calendar)
 

Pièces jointes

  • Project_calendar.zip
    774 bytes · Affichages: 13
Dernière édition:

Zon

XLDnaute Impliqué
Je cherche mais le galery click 1 ne me donne rien pour le moment, donc le calendos ne m'affiche rien alors que les combo fonctionnent.
 
Dernière édition:

Zon

XLDnaute Impliqué

Le calendos du Fichier Calendrier fonctionne ..mais est ce que tu es sûr que c'est le bon ????




La blague me fait rire tout seul, désolé ...
Plus sérierusement,
J'ai chargé example.xml , j'ai créé le sample depuis ton appli. Pas de calendos . J'ai supprimé modulecallback, importer le tien depuis Calendrier.xlsm , fermer sample en enregistrant les modifs, ouverture sample calendos n'affiche rien.

A+++
 

Zon

XLDnaute Impliqué
RE @patricktoulon ,

Je cherchais pas au bon endroit, ton fichier exemple.xml du post 122 ne contenait pas ni getItemCount ni getItemLabel . en les rajoutant c'est bon ça fonctionne.
 

patricktoulon

XLDnaute Barbatruc
Bonjour @Zon
oui j"ai du faire une erreur en glissant le fichier dans le post
en tout cas c'est un bon exemple pour montrer tout ce que l'on peu faire en dynamique
et encore les méthode employées sont un peu a rallonge vu qu'il me manque des callbacks comme le getItemID par exemple
 

patricktoulon

XLDnaute Barbatruc
tiens regarde comme c'est plus facile avec les callbacks qu'il faut
tout d'un coup ça devient moins compliqué de coder le calendrier
 

Pièces jointes

  • calendar2.XLSM
    22 KB · Affichages: 11

patricktoulon

XLDnaute Barbatruc
le control calendrier Version 3
dans cet exemple je met en application les deux callbacks que j'ai ajouté a mon app
a savoir le getItemID et et le getSelectedItemIndex
et là le code pour gerer le calendar en devient un jeu d'enfant
je démontre aussi par la même occasion (j'en parlais précédemment ) que selon le besoins
on utilisera des comboBox ou des dropDowns

à ranger dans les exemples dynamique
 

Pièces jointes

  • calendar 3.xlsm
    21.3 KB · Affichages: 10
Dernière édition:

patricktoulon

XLDnaute Barbatruc
allez bonjour à tous
de bon matin en début de semaine, quelques petites annonces
on va certainement passer à la version 4.9.7
en effet j'en parles dans la video qui suit
petite dédicace a @Zon
 
Dernière édition:

Zon

XLDnaute Impliqué
Salut le forum, Patrick

Merci pour la dédicace...

Je te fais une proposition : j'ai remarqué que tes proptétés top de BtxComboTabInsertBefore , en descendant n'avait pas le même écart. on part de 68 , on pourrait gratter à 64
J'incrémente de 16 le top de chaque controle , donc pour tbxgroupautoscale, label75, et BtxgroupAutoScale.
je mets à la main 84 pour la propriété Top ainsi de suite on gagne un peu de place tout en harmonisant les écarts. Là j'ai fait jusqu'à Title.

Ensuite , je réduis la FRame1 en bas , et j'y ajoute la suppression de l'item et l'ascenseur qui ne fait que monter. qu'on peut mettre aussi sous EditBox.. aprés tout c'est bien un élément.

Sinon , j'avais pensé à un truc facile à dire mais pas à faire, se servir de ta fonction GetXElementsById pour n'afficher que les atributs suivant l'élément sélectionné en les repositionnant à chaque fois ou pas ...
Quand j'ai le temps je te regarde ça si tu veux.

Fini les discours, tiens voici une image .


 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…