Sous VB6.0, est'il possible de parcourir =E0 l'aide d'une=20
boucle,tous les champs d'une donn=E9e utilisateur d=E9finie=20
par Type ... End Type et de conna=EEtre le type de chacun=20
d'eux ?
Private Type Test
Data1 as Long
Data2 as Integer
....
End Type
public sub List_Data(RefData as Test)
do=20
msgbox (contenu et type du champ) ????
while .....
end sub=20
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
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" a écrit dans 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
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" <anonymous@discussions.microsoft.com> a écrit dans
le message de news:9f1201c43452$765ee670$a101280a@phx.gbl
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
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" a écrit dans 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
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")
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
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
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
'*** Private Function PadLeft(ByRef sText As String, ByRef lLenght As Long) As String PadLeft = Left$(sText & Space$(lLenght), lLenght) End Function '***
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
'***
'*** Private Function PadLeft(ByRef sText As String, ByRef lLenght As Long) As String PadLeft = Left$(sText & Space$(lLenght), lLenght) End Function '***