Bonjour,
j'utilise des ponteur de temps en temps, mais la je ne sais pas si on peut utiliser un pointeur sur une interface COM de la même façon.
Ma référence est VB.Net. Il y a une ListView dans laquelle chaque SubItems stocke dans sa propriété Tag une propriété OID :
En Delphi j'ai utilisé dans le ListView :Code:Me.LvContact.Items(i).Tag = Me.TiersContact.OID
pour stocker OID comme un objet associé, mais peut-être que je ne peux pas faire çà avec une interface COM ?Code:LvContact.AddItem(Nom, TObject(OID) );
OID est défini dans VB par :
En Delphi l'extrait de la librairie de type correspondant est :Code:
1
2 ReadOnly Property OID() As Objets100Lib.IBIObjectID Membre de Objets100Lib.IBIContact2
Ensuite cette propriété est utilisée en VB :Code:
1
2
3
4
5
6
7
8
9
10 / *********************************************************************// // Interface : IBIPersistObject // Indicateurs : (4544) Dual NonExtensible OleAutomation Dispatchable // GUID : {667450D7-D2B9-45FE-BDB0-CAA1B137A243} // *********************************************************************// IBIPersistObject = interface(IDispatch) ['{667450D7-D2B9-45FE-BDB0-CAA1B137A243}'] function Get_OID: IBIObjectID; safecall; property OID: IBIObjectID read Get_OID; end;
En Delphi j'ai fais :Code:Me.ContactCourant = BaseCpta.FactoryTiers.ReadNumero(Me.TiersCourant.CT_Num).FactoryTiersContact.Read(Me.LvContact.SelectedItems(0).Tag)
et la j'ai invariablement :Code:
1
2
3 ObjectID := IBIObjectID(lvContact.Selected.Data); FContactCourant := FBaseCpta.FactoryTiers.ReadNumero(FTiersCourant.CT_Num) .FactoryTiersContact.Read(ObjectID) as IBIContact2;
Exception déclenchée à $7C812AEB. Classe d'exception EAccessViolation avec message 'Violation d'accès à l'adresse 00407BAD dans le module 'Annuaire.exe'. Lecture de l'adresse FEEEFEF2'. Processus Annuaire.exe (3168)
Donc ma question est-ce qu'on peut associer une propriété d'une Interface COM à un objet ou faut-il procéder autrement ?