[VB6] Come visualizzare in run-time i metodi pubblici di una classe?

mercoledì 24 gennaio 2007 - 15.04

shark986 Profilo | Junior Member

Ciao a tutti....
C'è un modo per sapere i metodi pubblici di una classe o di un controllo legato al progetto (così come avviene ad esempio nell'ActiveX Test Container)?
Preciso che ho bisogno di avere queste informazioni in fase di run-time e non in design-time!

Ho già visto che con la CallByName posso chiamare funzioni sapendo il loro nome (avendolo ad esempio in una stringa)... Però mi manca sapere quali funzioni sono disponibili in una classe!!!!

Per favore datemi una mano!!!
Thankz!

Brainkiller Profilo | Guru

>Ho già visto che con la CallByName posso chiamare funzioni sapendo
>il loro nome (avendolo ad esempio in una stringa)... Però mi
>manca sapere quali funzioni sono disponibili in una classe!!!!

Ciao,
in VB6.0 la vedo un po' dura. L'ho abbandonato da tempo, ma non mi pare di ricordare che ci fossero questi meccanismi tipici di .NET, dove le classi contengono dei metadati che le auto-descrivono e poi queste informazioni possono essere lette tramite la Reflection e le classi del namespace Reflection. In .NET infatti tramite le reflection puoi enumerare tutti i metodi, le proprietà, ecc.ecc. di qualsiasi classe.

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

shark986 Profilo | Junior Member

A dirti la verità ho visto che con TypeLib Information si riesce a capire qualcosa di un oggetto o di una classe.
Ho fatto un progettino e riesco a capire quali metodi e quali proprietà espone... Teoricamente dovrebbe dirmi anche quali sono gli eventi ma non è così!...

Questo è più o meno il codice:
Dim s As String s = "" Dim objText As TextBox Dim objTLI As TLI.TLIApplication Dim objTypeInfo As TLI.TypeInfo Dim objMember As TLI.MemberInfo Set objTLI = New TLI.TLIApplication Set objText = Text1 Set objTypeInfo = objTLI.InterfaceInfoFromObject(objText) For Each objMember In objTypeInfo.Members If objMember.InvokeKind = INVOKE_EVENT Then If s <> "" Then s = s & vbCrLf s = s & objMember.MemberId & " - " & objMember.Name End If Next MsgBox s

In questo caso dovrebbe mostrarmi gli eventi visto il filtro InvokeKind che metto nel ciclo... però non funziona!!
Ho provato anche con un ocx creato da me... nada........

Brainkiller Profilo | Guru

>A dirti la verità ho visto che con TypeLib Information si riesce
>a capire qualcosa di un oggetto o di una classe.
>Ho fatto un progettino e riesco a capire quali metodi e quali
>proprietà espone... Teoricamente dovrebbe dirmi anche quali sono

Insisto, se non hai codice da migliaia di righe, ti consiglio di migrarlo a .NET in questo modo puoi usare la Reflection e fare ciò che ti pare. Dimenticavo, perchè hai la necessità di scoprire a runtime proprietà e metodi ?
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

shark986 Profilo | Junior Member

L'idea è quella di creare un programma capace, presi ad esempio due controlli, di collegare gli eventi del primo controllo con alcune funzioni pubbliche dell'altro.
Tutto ciò al fine di automatizzare il processo di comunicazione fra oggetti...
Questo detto in due righe... Ovviamente il ragionamento che c'è dietro e il funzionamento di tutto il meccanismo è abbastanza articolato!

Spero di essermi spiegato!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5