Affecter une valeur automatique à une structure (comme Color = xxx)

Signaler
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
Salut à tous,

Comment fait-on pour pouvoir proposer des valeurs (par IntelliSense) à affecter à une structure lorsque on édite du code? Je voudrais faire comme c'est fait avec la structure Color:
On tape "MyColor As Color =" et toute une liste de couleurs est affiché par IntelliSense, de la même façon que les valeurs d'un enum.

Qqun à une idée?

Merci d'avance...

10 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
En utilisant justement les enums

tu déclare ta propiété ou variable de type de ton enum au lie de ire que c'est un integer ou autre.

Enfin, j'ai ensore eu l'occasion d'essayer en .Net, mais en VB6, c'est comme cela que je faisais.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Visiblement ça marche aussi en .net :

Imports WindowsApplication4.test

Public Class Form1
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
MyBase.Load
    Dim tclasse As New test
    tclasse.marsu =  tstlist.nul
  End Sub
End Class

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Public Class test
  Private _marsu As Integer

  Public Enum tstlist As Integer
    nul = 0
    premier = 1
    second = 2
    ainee = 3
  End Enum

  Public Property marsu() As tstlist
    Get
      Return _marsu
    End Get
    Set(ByVal value As tstlist)
      _marsu = value
    End Set
  End Property
End Class

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Mouais pour faire ça avec l'enum pas de soucis, je connais. Mais dans ce cas il ne s'agit pas d'un membre du type de l'enum, mais d'une strucure. Color est une structure, et il n'est pas possible de créer un enum ayant des strucutre comme valeurs.

Dim myColor As Color = Color.Blue

Color.Blue ne retourne donc pas une valeur qu'il est possible de mettre dans un enum (Byte, Integer...) mais d'une structure Color.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Si tu connais un peu le C#, tu peux toujours regarder dans les sources de la classe Color pour trouver une solution.
Les différentes couleurs semblent etre définie comme des propriétés.

je pourrait te transmettre le fichier si tu veux.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
As-tu trouver une solution à ton problème ?
Si tu en as une, claire, je sius interessé.

Perso, je n'avais rien à faire ce soir, je viens de me traduire la source de la classe Color en VB (bon ok, avec l'aide du convertisseur de codes-sources )
Je regarderais ça à tete reposer pour essayer de comprendre

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Excuse mon ignorance, mais où trouves-tu le code source des objets du framework?

Effectivement, les différentes couleurs sont des propriétés statiques (Shared en VB)
Si j'avais su qu'on pouvait avoir le code source du framework, bon nombre de mes questions auraient déjà eu des réponses

La source d'un contrôle liste comme la ListBox m'intéresserait beaucoup aussi d'ailleur...
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Microsoft à rendu disponible le code source du Framework depuis mi-Janvier à peu près.

J'avais intercepté la nouvelle sur les blogs de CodeS-SourceS.

Si tu as VS2008, tu peux apparement l'integrer directement dans l'ide et ainsi debugger aussi le framework.
Tu trouveras plus d'infos dans ce blog --> [http://blogs.codes-sources.com/tom/archive/2008/01/17/net-le-code-source-du-framework-net-est-maintenant-disponible.aspx [.NET] Le code source du Framework .NET est maintenant disponible !]

Sinon, tu peux faire comme moi, le télécharger au complet avec un outil prévu pour
Plus d'infos ici --> .NET Reference Source Code : outil NetMassDownloader

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Merci pour cette info, elle est le bienvenue

J'ai donc téléchargé le code source de System.Drawing.DLL, et j'ai regardé la classe Color et ColorConverter. Mais je n'ai rien trouvé pour l'instant, je vais encore voir ça plus en détail dès que j'ai le temps.

Par contre, lorsque j'essaie de convertir le code avec le convertisseur de codes-sources, il me donne une erreur:
Erreur rencontrée par le parseur: Line 1852 col 1: EOF expected

Je ne sais pas de quoi ça vient...

Je te tient au courant si je trouve quelque-chose.
Encore merci pour tes réponses
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
ça viens du fait que le code est trop long, je pense.

Moi aussi je l'ai eu, mais découpant en plusieurs c'est passé (à part les #IF que le convertisseur ne comprend pas apparement)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
J'ai trouvé. La solution se trouve dans le TypeConverter:

Public Class UnitConverter
    Inherits TypeConverter

Public Overrides Function GetStandardValuesSupported(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
    Return True
End Function

Public Overrides Function GetStandardValues(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
    Return New StandardValuesCollection([Enum].GetNames(GetType(AllUnits)))
End Function

End Class

Sauf que pour l'instant, ça ne marche pas encore dans mon cas