Accueil > Forum > > > > Liaison Module de classe pour DLL
Liaison Module de classe pour DLL
lundi 13 août 2007 à 17:38:38 |
Liaison Module de classe pour DLL

drouault
|
Bonjour,
J'ai un souci que je n'arrive pas à résoudre mais qui doit pourtant être assez simple. Je débute dans la programmation avec les modules de classes et je souhaite pouvoir utiliser une collection.
J'ai donc créer mon type dans un module de classe :
Private strrefdoc As String Private strlink As String Private strlibelle As String Private strctype As String Property Let refdoc(ByVal data As String) strrefdoc = data End Property Property Let link(ByVal data As String) strlink = data End Property Property Let libelle(ByVal data As String) strlibelle = data End Property Property Let letype(ByVal data As String) strctype = data End Property Property Get refdoc() As String refdoc = strrefdoc End Property Property Get link() As String link = strlink End Property Property Get libelle() As String libelle = strlibelle End Property Property Get letype() As String letype = strctype End Property
Dans un autre module de classe, j'ai mis le code qui permet d'ajouter, de supprimer ou d'accéder à un item de la collection :
Private macoll As Collection 'innitialisation Private Sub class_initialize() Set macoll = New Collection End Sub 'méthode add Public Function add(ByVal refdoc As String, ByVal link As String, ByVal libelle As String, ByVal letype As String) Dim myObj As New Type_gcou '-------------------- myObj.refdoc = refdoc myObj.link = link myObj.libelle = libelle myObj.letype = letype '-------------------- macoll.add myObj Set add = myObj Set myObj = Nothing '-------------------- End Function 'méthode remove Public Sub remove(vntIndexKey As Variant) macoll.remove vntIndexKey End Sub 'propriété item Public Property Get item(vntIndexKey As Variant) As Type_gcou Set item = macoll(vntIndexKey) End Property 'propriété count Public Property Get count() As Long count = macoll.count End Property 'fin 'destruction de la collection Private Sub class_terminate() Set macoll = Nothing End Sub
Ce que je souhaite, c'est pouvoir ensuite accéder aux informations de ma collection à partir d'une propriété de mon module de classe principale, et c'est là que je bloque. Et la je n'arrive pas à accéder à mes différents Item, je pense que j'ai un souci dans ma déclaration des ces deux modules de classe dans mon module de classe principale.
J'ai essayé avec ça mais ça ne fonctionne pas : Public Property Set Type_Courrier(ByVal type_cou As Type_gcou) If type_cou Is Nothing Then Set type_cou = New Type_gcou End If 'Dans un cas comme dans l'autre l'objet est valide donc Set Mes_Courriers = type_cou End Property
Public Property Set Mes_Courriers(ByVal mescourriers As Coll_cou)
If mescouriers Is Nothing Then 'Si la collection n'existe pas Err.Raise vbObjectError + 2, "mescouriers", "Il faut lire le fichier avant de consulter la collection" Else Set Mes_Courriers = mescouriers 'on donne acces à la collection End If End Property
Si quelqu'un voit une solution ou peut m'orienter vers une source bien expliquée ...
En espérant avoir été à peu prés clair (j'en suis pas sur :-))
Merci d'avance
Pierre
|
|
lundi 13 août 2007 à 18:43:14 |
Re : Liaison Module de classe pour DLL

mortalino
|
salut, je t'ai mis deux commentaires dans la première partie, la seconde c'est ce que je te propose, je fais un peu différemment, pas sûr que ce soit la meilleure méthode, mais bon :  Option Explicit
Private macoll As Collection 'innitialisation Private Sub class_initialize() Set macoll = New Collection End Sub 'méthode
add
' **** Pas function, mais Sub :
**** Public Sub add(ByVal refdoc As String, ByVal link
As String, ByVal libelle As String, ByVal letype As String) Dim myObj As New Type_gcou '-------------------- myObj.refdoc = refdoc myObj.link = link myObj.libelle = libelle myObj.letype = letype '-------------------- macoll.add myObj ' ****
inutile : **** 'Set add =
myObj Set myObj = Nothing '-------------------- End Sub 'méthode
remove Public Sub remove(vntIndexKey As Variant) macoll.remove vntIndexKey End Sub
'propriété
count Public Property Get count() As Long count = macoll.count End Property 'fin 'destruction de la collection Private Sub class_terminate() Set macoll = Nothing End Sub
'=================================================================================
'propriété item
'*** moi je fais
différement : 'Public Property Get
item(vntIndexKey As Variant) As Type_gcou ' Set
item = macoll.item(vntIndexKey) 'End
Property
' Comme ceci :
Public Sub Item(ByRef oObject As Type_gcou, ByVal lID As
Long) Set oObject = macoll.Item(lID) End Sub
' et pour
l'utiliser : ' t'as une classe qui s'appelle
Type_gcou, l'autre, _ ne la connaissant pas je vais l'appeler MyColObj
:
Dim TEMP_Type_gcou As New Type_gcou, MyColObj As New MyColObj Dim i As Long
For i = 1 To MyColObj.count Call MyColObj.lngItem(TEMP_Type_gcou, i) MsgBox TEMP_Type_gcou.refdoc MsgBox TEMP_Type_gcou.link MsgBox TEMP_Type_gcou.libelle MsgBox TEMP_Type_gcou.letype Set TEMP_Type_gcou = Nothing Next i
 ~
Mortalino ~
Colorisation automatique@++ ( Nouveau forum : Exclusivement Office & VBA
|
|
lundi 13 août 2007 à 18:44:35 |
Re : Liaison Module de classe pour DLL
|
mardi 14 août 2007 à 08:39:41 |
Re : Liaison Module de classe pour DLL

drouault
|
Merci beaucoup de ton aide ...
J'ai modifier un peu le code suivant tes exemples et si ça te dérange pas j'aurais quelques questions à te poser vu que ça ne fonctionne pas trés bien encore :-) :
-> J'ai un souci avec mon count, j'ai mis un msgbox dans ma dll qui me renvoie le bon nombre d'enregistrements de la table, et quand j'appelle ensuite ma propriété Count dans un projet (comme avec ta méthode), il me renvoit zéro ... Je pense que j'ai du faire une boulette en laissant trainer un nothing quelque part peut être ?! Du coup, j'accéde pas à l'item, même si maintenant, grâce à ta méthode, je pense que ça va fonctionner car j'ai la saisie assistée que j'avais pas avant ...
-> Est'il possible de ne déclarer qu'un seul objet dans la dll pour accéder à tous les autres. Dans mon exemple :
gcourriers : module de classe "principale" coll_cou : module de classe avec Add, Remove, Item type_gcou : module de classe avec mon type
Est 'il possible d'arriver à ça dans l'application, au travers d'une propriété que je déclarerais dans le module de classe gcourriers et qui ferait référence aux autres modules de classe (gcour par exemple pour le nom de la propriété) :
Dim toto as New gcourriers Dim unevaleurcollection as string
unevaleurcollection = toto.gcour.item(i).letype
Ce n'est peut être pas possible ...
Merci déjà pour les réponses apportées ...
A+
Pierre
|
|
Cette discussion est classée dans : set, string, type, classe, myobj
Répondre à ce message
Sujets en rapport avec ce message
Récursivité... Classe auto-référenciable [ par MarcoBrunelle ]
Je devais simuler un arbre à l'aide de Type personnalisé, il s'avère qu'en VB, un type de ne pas avoir comme propriété, un objet de ce même type.Ex.:'
Type de base, type "user" et reflection [ par bigflo93 ]
Salut à tous :) Je suis en plein reflection en ce moment et je rencontre un problème concernant la classe Type. En effet, je cherche à instancier une
Type, string et reflection [ par bigflo93 ]
Salut à tous :) Je suis en pleine reflection en ce moment :) et je cherche à instancier une classe à partir d'une string. Enfin, plus précisement avo
Type, string et reflection [ par bigflo93 ]
Salut à tous :) Je suis en pleine reflection en ce moment :) et je cherche à instancier une classe à partir d'une string. Enfin, plus précisement
Convertion de string en decimal [ par tiwolfette ]
Bonjour à tous,Je stocke dans un tableau de type string une grande quantité d'info et notamment des chiffres a virgules. Chiffres dont je dois me serv
Trie tableau dynamique avec type [ par pcpunch ]
Slt j'ai un tableau "ARTICLE" dynamique avec un type :Type ArticleVCode As StringNom As StringFamille As StringTVA As StringTTC As StringEnd TypePubl
pb avec des connections dans une classe [ par stipe ]
bonjour,j'ai créé un usercontrol qui contient une datacombo (DtcKeyboard)+ un ADO (ADOKeyboard)dans ma classe, j'ai le code suivant : Public Property
type Utilisateur [ par keopsk ]
Bonjour,Y-a-il un moyen pour lire le nom et le type des différents élements d'un type utilisateur.Par exemple:Type mon_type element1 As String e
Access 2000, Problème d'Incompatibilité de type alors que je n'ai que des Strings [ par dannywilde ]
J'ai écrit une macro qui dès que l'on saisie le nom et le prénom, la macro rempli tout les champs du formulaires.Le problème c'est que j'ai un soucis
problème de casting [ par jesusonline ]
j'ai un problème de casting. j'ai un control qui est définit en tant que control simple dim c as control j'ai une string qui contient le type de ce co
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|