begin process at 2010 02 10 15:06:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VB.NET

 > EXEMPLE DE PROPRIÉTÉ D'OBJET AVEC UN PETIT PLUS DANS LA FENETRE PROPRIETE (STYLE CE QUE L'ON TROUVE DEVANT LA PROPRIETE FONT DE L'OBJET TEXTBOX) (VERSION VB.NET)

EXEMPLE DE PROPRIÉTÉ D'OBJET AVEC UN PETIT PLUS DANS LA FENETRE PROPRIETE (STYLE CE QUE L'ON TROUVE DEVANT LA PROPRIETE FONT DE L'OBJET TEXTBOX) (VERSION VB.NET)


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VB.NET Source .NET ( DotNet ) Niveau :Initié Date de création :04/09/2004 Date de mise à jour :06/09/2004 22:57:34 Vu :6 869

Auteur : jesusonline

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


 Description

Voici un moyen d'afficher une propriete qui regroupe plusieurs valeurs, par exemple dans un Textbox vous avez une propriete font qui regroupe la taille de la font, le nom etc....

voici un code qui permet de faire ca avec ces propres objets...

Ce code est la traduction en VB.net du code C# de Arthenius --> http://www.csharpfr.com/code.aspx?ID=25912

Source

  • 'VOICI LA CLASSE QUI DOIT DEFINIR MES PROPRIETES DEVANT APPARAITRE DANS LA FENETRE PROPRIETE AVEC LE PETIT PLUS...
  • <TypeConverter(GetType(Mon_ensemble_de_propriete_Converter))> _
  • Public Class Mon_ensemble_de_propriete
  • Private _Nom As String
  • Private _Prenom As String
  • Public Property Nom() As String
  • Get
  • Return _Nom
  • End Get
  • Set(ByVal value As String)
  • _Nom = value
  • End Set
  • End Property
  • Public Property Prenom() As String
  • Get
  • Return _Prenom
  • End Get
  • Set(ByVal value As String)
  • _Prenom = value
  • End Set
  • End Property
  • End Class
  • 'ICI LE CONVERTER PERMETTANT D'AFFICHER LE PLUS DANS LA FENETRE PROPRIETE
  • Public Class Mon_ensemble_de_propriete_Converter
  • Inherits ExpandableObjectConverter
  • Public Overrides Function CanConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal destinationType As System.Type) As Boolean
  • If Not destinationType.GetType().Equals(New System.ComponentModel.Design.Serialization.InstanceDescriptor(Nothing, Nothing).GetType()) Then
  • Return True
  • End If
  • End Function
  • Public Overrides Function ConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object, ByVal destinationType As System.Type) As Object
  • Dim instancedescripteur As New System.ComponentModel.Design.Serialization.InstanceDescriptor(Nothing, Nothing)
  • If Not destinationType.GetType() Is instancedescripteur.GetType() Then
  • Return Me.ConvertTo(context, culture, value, destinationType)
  • End If
  • Dim ci As System.Reflection.ConstructorInfo = GetType(Mon_ensemble_de_propriete).GetConstructor(Nothing)
  • Return New System.ComponentModel.Design.Serialization.InstanceDescriptor(ci, Nothing, False)
  • End Function
  • End Class
  • 'AU FINAL DANS MON OBJET J'AURAI UNE PROPRIETE DEFINIT COMME CA :
  • Private Arthenius As New Mon_ensemble_de_propriete()
  • <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
  • Public Property Mais_qui_est_Arthenius() As Mon_ensemble_de_propriete
  • Get
  • Return Arthenius
  • End Get
  • Set(ByVal value As Mon_ensemble_de_propriete)
  • Arthenius = Value
  • End Set
  • End Property
    'VOICI LA CLASSE QUI DOIT DEFINIR MES PROPRIETES DEVANT APPARAITRE DANS LA FENETRE PROPRIETE AVEC LE PETIT PLUS...
    <TypeConverter(GetType(Mon_ensemble_de_propriete_Converter))> _
    Public Class Mon_ensemble_de_propriete
        Private _Nom As String
        Private _Prenom As String
        Public Property Nom() As String
            Get
                Return _Nom
            End Get
            Set(ByVal value As String)
                _Nom = value
            End Set
        End Property
        Public Property Prenom() As String
            Get
                Return _Prenom
            End Get
            Set(ByVal value As String)
                _Prenom = value
            End Set
        End Property
    End Class

    'ICI LE CONVERTER PERMETTANT D'AFFICHER LE PLUS DANS LA FENETRE PROPRIETE
    Public Class Mon_ensemble_de_propriete_Converter
        Inherits ExpandableObjectConverter

        Public Overrides Function CanConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal destinationType As System.Type) As Boolean

            If Not destinationType.GetType().Equals(New System.ComponentModel.Design.Serialization.InstanceDescriptor(Nothing, Nothing).GetType()) Then
                Return True
            End If

        End Function

        Public Overrides Function ConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object, ByVal destinationType As System.Type) As Object
            Dim instancedescripteur As New System.ComponentModel.Design.Serialization.InstanceDescriptor(Nothing, Nothing)

            If Not destinationType.GetType() Is instancedescripteur.GetType() Then
                Return Me.ConvertTo(context, culture, value, destinationType)
            End If

            Dim ci As System.Reflection.ConstructorInfo = GetType(Mon_ensemble_de_propriete).GetConstructor(Nothing)
            Return New System.ComponentModel.Design.Serialization.InstanceDescriptor(ci, Nothing, False)

        End Function

    End Class


               'AU FINAL DANS MON OBJET J'AURAI UNE PROPRIETE DEFINIT COMME CA :
        Private Arthenius As New Mon_ensemble_de_propriete()
        <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
        Public Property Mais_qui_est_Arthenius() As Mon_ensemble_de_propriete
            Get
                Return Arthenius
            End Get
            Set(ByVal value As Mon_ensemble_de_propriete)
                Arthenius = Value
            End Set
        End Property

 Conclusion

Voila...maintenant vous aussi vous pourrez faire des propriétés "groupés" ca evitera a tout le monde de scroller pendant trois heures la fenetre des propriétés des objets...

Si vous avez des Interrogations des appréciations n'hesitez pas...POSTER :o)))

Ce code n'est pas de moi mais de Arthenius --> http://www.csharpfr.com/code.aspx?ID=25912  


 Historique

06 septembre 2004 22:57:36 :
voir http://www.csharpfr.com/code.aspx?ID=25912

 Sources du même auteur

Source .NET (Dotnet) ZIPPER UN REPERTOIRE EN CONSERVANT LA HIERARCHIE DES DOSSIER...
Source .NET (Dotnet) LOGER LES ERREURS DANS UN FICHIER XML
Source .NET (Dotnet) CREATION D'UN FICHIER XML EN .NET
Source .NET (Dotnet) OBJET AU HASARD D'UNE COLLECTION
Source .NET (Dotnet) LEVER UNE EXCEPTION PERSONNALISÉ

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) INSERER TOUT TYPE DE FICHIERS DANS ORACLE EN VB.NET par SKY32
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOYER DES EMAILS AVEC PIECES JOINTES EN EXÉCUTANT BLAT par mays
Source avec Zip Source avec une capture Source .NET (Dotnet) PILOTER DES AFFICHEURS 7 SEGMENTS À PARTIR DU PORT SÉRIE OU ... par mays
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLER LE WEBBROWSER ET IDENTIFIER LES LIENS PAR LEUR NUM... par george02
Source avec Zip Source .NET (Dotnet) LOGIN AVEC FICHIER XML par DanMor498

Commentaires et avis

Commentaire de claudetom le 14/01/2005 05:08:47

J'ai utilisé ce code pour un groupage, mais ça plante au design de la form un StackOverFlow

Voici ce que j'ai mis :

Class principale du compo :

Private Interpolation As New ProprieteInterpolation
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
    Public Property Prop_Interpolation() As ProprieteInterpolation
        Get
            Return Interpolation
        End Get
        Set(ByVal value As ProprieteInterpolation)
            Interpolation = value
            If Me.DesignMode = True Then
                Me.Invalidate()
            End If
        End Set
    End Property

ensuite l'autre class

<TypeConverter(GetType(ProprietesInterpolation_Converter))> _
   Public Class ProprieteInterpolation
    Private _InterpoTxt As Boolean
    Private _ColorBlendp As Single()
    Private _ColorBlendc As Color()

    Public Property interpolationTxt() As Boolean
        Get
            Return Me._InterpoTxt
        End Get
        Set(ByVal Value As Boolean)
            Me._InterpoTxt = Value
        End Set
    End Property

    Public Property Positions() As Single()
        Get
            Return Me._ColorBlendp
        End Get
        Set(ByVal Value As Single())
            Me._ColorBlendp = Value
        End Set
    End Property

    Public Property Colors() As System.Drawing.Color()
        Get
            Return Me._ColorBlendc
        End Get
        Set(ByVal Value As System.Drawing.Color())
            Me._ColorBlendc = Value
        End Set
    End Property
End Class

'ICI LE CONVERTER PERMETTANT D'AFFICHER LE PLUS DANS LA FENETRE PROPRIETE
Public Class ProprietesInterpolation_Converter
    Inherits ExpandableObjectConverter

    Public Overloads Overrides Function CanConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal destinationType As System.Type) As Boolean

        If Not destinationType.GetType().Equals(New System.ComponentModel.Design.Serialization.InstanceDescriptor(Nothing, Nothing).GetType()) Then
            Return True
        End If

    End Function

    Public Overloads Overrides Function ConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object, ByVal destinationType As System.Type) As Object
        Dim instancedescripteur As New System.ComponentModel.Design.Serialization.InstanceDescriptor(Nothing, Nothing)

        If Not destinationType.GetType() Is instancedescripteur.GetType() Then
            Return Me.ConvertTo(context, culture, value, destinationType)
        End If

        Dim ci As System.Reflection.ConstructorInfo = GetType(ProprieteInterpolation).GetConstructor(Nothing)
        Return New System.ComponentModel.Design.Serialization.InstanceDescriptor(ci, Nothing, False)

    End Function

End Class

Pourquoi ça plante sous VB v2003 ?
Merci

Commentaire de BXM44 le 07/11/2007 06:49:37

Bonjour,
j'ai essayé de mettre le code dans un controle utilisateur
quand on insère le controle dans une forme, cela plante VB2005 express.
Ai-je oublié quelqu chose ?

Merci.

Imports System.ComponentModel

Public Class UserControl1
    Private Arthenius As New Mon_ensemble_de_propriete()
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
    Public Property Mais_qui_est_Arthenius() As Mon_ensemble_de_propriete
        Get
            Return Arthenius
        End Get
        Set(ByVal value As Mon_ensemble_de_propriete)
            Arthenius = Value
        End Set
    End Property

End Class

'VOICI LA CLASSE QUI DOIT DEFINIR MES PROPRIETES DEVANT APPARAITRE DANS LA FENETRE PROPRIETE AVEC LE PETIT PLUS...

<TypeConverter(GetType(Mon_ensemble_de_propriete_Converter))> _
Public Class Mon_ensemble_de_propriete
    Private _Nom As String
    Private _Prenom As String
    Public Property Nom() As String
        Get
            Return _Nom
        End Get
        Set(ByVal value As String)
            _Nom = value
        End Set
    End Property
    Public Property Prenom() As String
        Get
            Return _Prenom
        End Get
        Set(ByVal value As String)
            _Prenom = value
        End Set
    End Property
End Class

'ICI LE CONVERTER PERMETTANT D'AFFICHER LE PLUS DANS LA FENETRE PROPRIETE

Public Class Mon_ensemble_de_propriete_Converter
    Inherits ExpandableObjectConverter
    Public Overrides Function CanConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal destinationType As System.Type) As Boolean
        If Not destinationType.GetType().Equals(New System.ComponentModel.Design.Serialization.InstanceDescriptor(Nothing, Nothing).GetType()) Then
            Return True
        End If
    End Function
    Public Overrides Function ConvertTo(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal culture As System.Globalization.CultureInfo, ByVal value As Object, ByVal destinationType As System.Type) As Object
        Dim instancedescripteur As New System.ComponentModel.Design.Serialization.InstanceDescriptor(Nothing, Nothing)
        If Not destinationType.GetType() Is instancedescripteur.GetType() Then
            Return Me.ConvertTo(context, culture, value, destinationType)
        End If
        Dim ci As System.Reflection.ConstructorInfo = GetType(Mon_ensemble_de_propriete).GetConstructor(Nothing)
        Return New System.ComponentModel.Design.Serialization.InstanceDescriptor(ci, Nothing, False)
    End Function
End Class

Commentaire de TigerFab le 29/11/2007 15:36:15 10/10

super !!! voilà ce que je recherchais depuis 1 semaine !

Je mets 10/10 car j'ai galéré pour trouver la solution sur le web....

Commentaire de TigerFab le 29/11/2007 18:12:47

En effet ca plante dans le designer même en 2005

Si on définit son composant par le code pas de problème
Si on affiche pas le designer, pas de problème non plus. Pour preuve on peut compiler et l'exe fonctionnera
Mais dès qu'on affiche le mode design du formulaire contenant le composant à l'écran paf plantage visual studio

Commentaire de TigerFab le 29/11/2007 18:45:35

Ok j'ai trouvé ! ouf !

l'auteur en code C# a fait quelque modifications, aller effectivement voir sur  http://www.csharpfr.com/code.aspx?ID=25912  

En fait vous devez laisser tomber la classe Mon_ensemble_de_propriete_Converter
C'est elle la source du problème.
Pour définir le type de Mon_ensemble_de_propriete, il suffit directement de convertir le type ExpandableObjectConverter : <TypeConverter(GetType(ExpandableObjectConverter
))>

et là plus de soucis !

A+

Commentaire de BXM44 le 01/12/2007 13:48:31

Et maintenant la totale avec des valeurs par défaut, y compris pour des types un peu plus compliqués comme les couleurs et les polices de caractères.
Bon courage à tous.

Imports System.ComponentModel


Public Class UserControl1

    Private Arthenius As New Mon_ensemble_de_propriete()

    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
    Public Property Mais_qui_est_Arthenius() As Mon_ensemble_de_propriete
        Get
            Return Arthenius
        End Get
        Set(ByVal value As Mon_ensemble_de_propriete)
            Arthenius = value
        End Set
    End Property

End Class

' VOICI LA CLASSE QUI DOIT DEFINIR MES PROPRIETES DEVANT APPARAITRE DANS LA FENETRE PROPRIETE
' AVEC LE PETIT PLUS...

<TypeConverter(GetType(ExpandableObjectConverter))> _
Public Class Mon_ensemble_de_propriete
    '
    ' objets privés initialisés avec les valeurs par défaut
    '
    Private _Nom As String = "Dupont"
    Private _Prenom As String = "Robert"
    Private _Couleur As Color = Color.Red
    Private _Police As Font = New Font("Microsoft Sans Serif", 8.25!, FontStyle.Bold, GraphicsUnit.Point, CType(0, Byte))
    '
    ' objet privé pour la comparaison par le designer dans ShouldSerialize...
    '
    Private _PoliceParDefaut As Font = New Font("Microsoft Sans Serif", 8.25!, FontStyle.Bold, GraphicsUnit.Point, CType(0, Byte))
    '
    ' propriétés
    '
    ' <summary> sera rangé dans le fichier XML créé avec la DLL
    ' un développeur ayant uniquement la DLL et le fichier XML aura à l'écran la description de la propriété
    ' dès qu'il entrera dans son code objet.propriété
    '
    ' <Description> pour que la description s'affiche dans la fenêtre des propriétés en mode Design
    '
    ' <DefaultValue> pour permettre au Designer de faire apparaître la valeur de la propriété en caractères normaux
    ' lorsque la valeur est celle par défaut
    ' pour les autres valeurs que la valeur par défaut, la valeur est affichée en gras dans la fenêtre des propriétés
    ' Ceci ne s'applique qu'aux types simples : string , boolean , integer , etc...
    ' Pour les objets compliqués commeles couleurs et les polices de caractères <DefaultValue> ne marche pas
    ' et doir être remplacé par une fonction ShouldSerialize, voir plus loin.


    ''' <summary>
    ''' Nom de l'individu
    ''' (Valeur par défaut : Dupont)
    ''' </summary>
    <DefaultValue("Dupont")> _
    <Description("Nom de l'individu")> _
    Public Property Nom() As String
        Get
            Return _Nom
        End Get
        Set(ByVal value As String)
            _Nom = value
        End Set
    End Property


    ''' <summary>
    ''' Prénom de l'individu
    ''' (Valeur par défaut : Robert)
    ''' </summary>
    <DefaultValue("Robert")> _
    <Description("Prénom de l'individu")> _
    Public Property Prenom() As String
        Get
            Return _Prenom
        End Get
        Set(ByVal value As String)
            _Prenom = value
        End Set
    End Property


    ''' <summary>
    ''' Couleur préférée
    ''' (Valeur par défaut : Color.Red)
    ''' </summary>
    <Description("Couleur préférée")> _
    Public Property Couleur() As Color
        Get
            Return _Couleur
        End Get
        Set(ByVal value As Color)
            _Couleur = value
        End Set
    End Property

    Private Function ShouldSerializeCouleur() As Boolean
        Return Me.Couleur <> Color.Red
    End Function


    ''' <summary>
    ''' Police préférée
    ''' (Valeur par défaut : Microsoft Sans Serif 8,25pt Bold)
    ''' </summary>
    <Description("Police préférée")> _
    Public Property Police() As Font
        Get
            Return _Police
        End Get
        Set(ByVal value As Font)
            _Police = value
        End Set
    End Property

    Private Function ShouldSerializePolice() As Boolean
        Return Not Me.Police.Equals(_PoliceParDefaut)
    End Function

End Class

Commentaire de Kelpan le 30/06/2008 00:20:27

Bonjour,
Comme je l'ai indiqué sur la source en c#, j'ai un problème de serialisation lorsqu'on hérite d'un écran sur lequel se trouve le control qui contient ce genre de propriété.
Je n'ai toujours pas trouvé de solution à mon problème

Cependant, je peux apporter ma contribution à ce source en ce qui concerne la classe Converter.
il y avait quelques erreurs ...

If Not destinationType.GetType().Equals(New System.ComponentModel.Design.Serialization.InstanceDescriptor(Nothing, Nothing).GetType()
=> destinationType est déjà un type
=> Inutile de créer une instance de InstanceDescriptor pour obtenir le type
GetType(InstanceDescriptor suffit)

Dim ci As System.Reflection.ConstructorInfo = GetType(Mon_ensemble_de_propriete).GetConstructor(Nothing)
=> Dans getConstructor, il faut passer une liste de type, même si c'est vide
(New Type(){} = Tableau de type vide)

Return New System.ComponentModel.Design.Serialization.InstanceDescriptor(ci, Nothing, False)
=> Idem dans instance descriptor
(New Object(){} = Tableau d'objet vide)
=> Pourquoi False pour le dernier argument ?

N.B:
Si on a un constructeur avec en paramètre Nom et Prenom, on peut appeler ce constructeur

Dim ci As System.Reflection.ConstructorInfo = GetType(Mon_ensemble_de_propriete).GetConstructor(New Type(){GetType(String), GetType(String)})

With CType(value, Mon_ensemble_de_propriete)
  Return New System.ComponentModel.Design.Serialization.InstanceDescriptor(ci, New Object(){.Nom, .Prenom)
End With

Voilà la classe corrigé :

Public Class Mon_ensemble_de_proprieteConverter
        Inherits ExpandableObjectConverter

    Public Overloads Overrides Function CanConvertTo( _
        ByVal context As System.ComponentModel.ITypeDescriptorContext, _
        ByVal destinationType As System.Type _
    ) As Boolean

        If destinationType Is GetType(System.ComponentModel.Design.Serialization.InstanceDescriptor) Then
            Return True
        End If

        Return MyBase.CanConvertTo(context, destinationType)
    End Function

    Public Overloads Overrides Function ConvertTo( _
        ByVal context As System.ComponentModel.ITypeDescriptorContext, _
        ByVal culture As System.Globalization.CultureInfo, _
        ByVal value As Object, _
        ByVal destinationType As System.Type _
    ) As Object

        If _
            destinationType Is GetType(String) AndAlso _
            TypeOf value Is Mon_ensemble_de_propriete Then

            ' Permet d'affiche blanc sur le propertyGRid
            Return ""
        End If

        If _
            destinationType Is GetType(System.ComponentModel.Design.Serialization.InstanceDescriptor) AndAlso _
            TypeOf value Is Mon_ensemble_de_propriete Then

            Dim ci As System.Reflection.ConstructorInfo = GetType(Mon_ensemble_de_propriete).GetConstructor(New Type() {})
            Return New System.ComponentModel.Design.Serialization.InstanceDescriptor(ci, New Object() {})
        End If

        Return Me.ConvertTo(context, culture, value, destinationType)
    End Function
End Class

Commentaire de Kelpan le 30/06/2008 00:33:07

Attention dans le code précédent dans la méthode ConvertTo, la dernière ligne est :

=> MyBase
Return MyBase.ConvertTo(context, culture, value, destinationType)

et non

=> Me
Return Me.ConvertTo(context, culture, value, destinationType)

qui provoque une boucle récursive infinie !!

Commentaire de Kelpan le 30/06/2008 01:10:23

Bon, j'ai trouvé une solution pour mon problème de serialisation.
Je n'ai pas vraiment d'explication sur le pourquoi du comment et ça m'agace un peu.

Je vais garder cette solution pour le moment car c'est la seule que j'ai :-)
En fait, en reprenant l'exemple qu'on a dans ce source, je vais créer dans ma classe Mon_ensemble_de_propriete une variable défaut pour chaque variable

Private NomDefaut As String = ""
Private PrenomDefaut As String = ""

Je vire les attributs DefaultValue au dessus des propriétés et j'ajoute mes méthodes ShouldSerialize(Property) et Reset(Property) dans lesquels je vais tester mes valeurs par défaut.

-----------------------
Public Property Nom As String
Get
  Return _Nom
End Get
Set(ByVal Value As String)
  _Nom = Value
End Set

Private Function ShouldSerializeNom As Boolean
  Return _Nom <> _NomDefaut
End Function

Private Sub ResetNom
  _Nom = _NomDefaut
End Sub

'... Idem pour prénom
--------------------

Vous me direz, ça ne change pas grand chose.
Et bien voici la subtilité.

En implémentant ICloneable à la classe, on remarque que la méthode Clone est appelé au moment du design, lorsqu'on affecte la propriété.
Pourquoi ? je ne sais pas encore.

Voilà ce que j'ai fait pour le moment

'*** Clone de la classe
Public Function Clone() As Object _
Implements System.ICloneable.Clone

    Me._NomDefaut = Me._Nom
    Me._PrenomDefaut = Me._Prenom
    Return Me.MemberwiseClone
End Function

Je m'en vais essayer de trouver une explication.
Cela fait quand même une semaine que je trime à trouver une solution et maintenant que j'en ai une, j'aimerais bien être sur que c'est fiable.

Si quelqu'un à une idée, je suis preneur...

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales