Type de donnée Utilisateur

Le
Jean Saint Jalmes
Bonjour,

Sous VB6.0, est'il possible de parcourir l'aide d'une
boucle,tous les champs d'une donne utilisateur dfinie
par Type End Type et de connatre le type de chacun
d'eux ?

Private Type Test
Data1 as Long
Data2 as Integer
.
End Type

public sub List_Data(RefData as Test)
do
msgbox (contenu et type du champ) ????
while ..
end sub

Merci d'avance.

Jean
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
François Picalausa
Le #14820411
Hello,

ce n'est possible que pour les propriétés d'une classe qui contiendrait une
typelib.
Sinon, il est possible de demander une entrée Descripteur dans le type qui
permettrait de décrire entièrement un type (et qui devrait être initialisée
avant de passer le type à la fonction)

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Jean Saint Jalmes" le message de news:9f1201c43452$765ee670$
Bonjour,

Sous VB6.0, est'il possible de parcourir à l'aide d'une
boucle,tous les champs d'une donnée utilisateur définie
par Type ... End Type et de connaître le type de chacun
d'eux ?

Private Type Test
Data1 as Long
Data2 as Integer
....
End Type

public sub List_Data(RefData as Test)
do
msgbox (contenu et type du champ) ????
while .....
end sub

Merci d'avance.

Jean


Zoury
Le #14820401
Salut Jean! :O)

C'est possible, mais la librairie contenant l'enumération doit être compilé.

exemple énumérant les valeur des Enums de DAO 3.6:
'***
' Ajouter la référence TypeLib Information
' Module1
Option Explicit

Private Sub Main()

Dim f As CFile
Dim tl As tli.TypeLibInfo

Dim i As Long
Dim j As Long

Set f = New CFile
Set tl = New tli.TypeLibInfo
Set tl = tli.TypeLibInfoFromFile("C:program filesCommon
FilesMicrosoft SharedDAOdao360.dll")

Debug.Print "Library Name : " & tl.Name
Debug.Print "Library Path : " & "C:program filesCommon FilesMicrosoft
SharedDAOdao360.dll"

f.AppendLine "Constants (" & tl.Constants.Count & ")"
For i = 1 To tl.Constants.Count
Debug.Print vbTab & tl.Constants(i).Name
If (tl.Constants(i).Members.Count > 0) Then
For j = 1 To tl.Constants(i).Members.Count
Debug.Print vbTab & vbTab &
PadLeft(tl.Constants(i).Members(j).Name, 30) & " = " &
tl.Constants(i).Members(j).Value
Next j
End If
Next i

End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Zoury
Le #14820391
j'ai oublié de posté la fonction PafLeft()

'***
Private Function PadLeft(ByRef sText As String, ByRef lLenght As Long) As
String
PadLeft = Left$(sText & Space$(lLenght), lLenght)
End Function
'***
Publicité
Poster une réponse
Anonyme