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

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 26 juin 2008 à 23:03
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 29 juin 2008 à 15:43
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 juin 2008 à 23:06
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 juin 2008 à 23:19
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
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
27 juin 2008 à 02:45
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.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 juin 2008 à 09:12
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 juin 2008 à 22:53
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
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
28 juin 2008 à 17:41
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...
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 juin 2008 à 18:00
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
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
28 juin 2008 à 21:13
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 juin 2008 à 21:22
ç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
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
29 juin 2008 à 15:43
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
0
Rejoignez-nous