Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Add-In per i miei programmi

Vorrei aggiungere dei componenti addizionali ad un mio programma più o meno
come VB
Per esempio nel form principale c'è una ListView che visualizza dei calcoli e
ne dovro' aggiungere altri in seguito, come faccio senza ridistribuire tutto
il programma ?
Ci sono delle tecniche particolari oppure mi devo inventare tutto da zero?
--
Marco Camplese
WEB: 
http://space.tin.it/computer/macample
Sito Comune dei programmatori Visual Basic
http://members.xoom.com/it_lang_vb

La tua applicazione dovrà essere costituita da un file principale (Standard
exe oppure ActiveX exe) e da uno o più componenti addizionali (ActiveX Dll)
che rappresentano le varie funzionalità di calcolo che verranno ma mano
implementate.
Affinchè l'aggiunta di plug-in sia possibile è scontato il fatto che i
componenti addizionali siano polimorfici pena la ricompilazione del
programma principale con l'aggiunta di select case ,if in base al tipo di
componente da utilizzare.
Il file principale deve,allo startup,verificare la presenza di plug-in
installati nel sistema andandosi a leggere una chiave (da te predefinita)
nel registry e in base al numero di componenti installati configurarsi di
conseguenza.
Ovviamente il programma di setup dei vari plug-in oltre che registrare il
componenete dovrà aggiornare questa chiave nel registry inserendovi le
indicazioni che ti servono, ma sopratutto il Programmatic-ID del
componente,che è poi quello che l'applicazione principale utilizzerà per
creare il componente a run-time.
La creazione del componente avverrà mediante la funzione CreateObject.
Ovvero, (in ipotectico pseudo-codice)
Dim oMyPlugIn as CPlug-In
sPrgID=GetPlugInProgIDFromRegistry()
oMyPlugIn=CreateObject(sPrgID)
oMyPlugIn.Show
..
..
..
Set oMyPlug-In=Nothing
Ho parlato di utilizzare il registry,ma puoi utilizzare anche un altro file
comune a tua scelta,la scelta del registry mi sembra però più pulita.
Spero di essere stato chiaro
Ciao
Corrado

Io veramente avevo pensato di passare il controllo di questi calcoli ad un
OCX da aggiornare e distribuire periodicamente.
L'aggiornamento non mi riesce perche' devo ricompilare l'EXE ogni volta.
Se riesco ad aggiornare l'OCX posso fare una serie di file con lo stesso nome
da installare singolarmente in base alle esigenze del cliente.
l'OCX cambia solo internamente le funzioni rimangono le stesse.
Come facciamo ?


Perchè vuoi usare un ocx invece di una ActiveX Dll? (hai forse UI di
mezzo?).
Comunque se l'interfaccia del tuo ocx rimane la stessa, puoi ricompilare
l'ocx quante volte vuoi senza dovere ricompilare l'exe l'importante è che
setti la compatibilità binaria e imposti un reference all'ocx master.
Questo per preservare i GUIDS e IIDS memorizzati all'interno del client exe.
Ho postato una spiegazione al riguardo alcuni giorni fa.
Ciao
Corrao

Ho postato una spiegazione al riguardo alcuni giorni fa.
Seguendo la spiegazione che mi hai postato la situazione non e' cambiata.
Purtroppo, anche se programmo da molto tempo (dai tempi del Commodore 64, VB1
DOS, Bor C++3 DOS e via verso VB5), non ho mai pensato di portarmi verso la
programmazione "professionale" quindi mi trovo molto male con delle basi poco
solide che sto cercando di rinforzare. Il NG, che seguo da mesi tutti i
giorni, mi ha aiutato tantissimo.
Dopo questa premessa (piu' che altro una confessione) espongo le procedure
che eseguo, vediamo dove sbaglio:
Per prima cosa creo l'OCX (con UI o senza) con VBCCE
    Imposto le varie proprieta' del progetto:
        Nome
        Versione (con autoincremento)
        No compatibilita' (solo per il primo Make)
        Salvo tutto e chiudo (devo riavviare il PC?)
Faccio un altro progetto
    Sparo l'OCX in un form
    Imposto, come suggerito, un riferimento al file "mioctl.OCX"
STOP
1° problema: l'operazione non mi riesce perche' c'e' gia un riferimento al
file "mioctl.OCA" nella cartella principale di VBCCE. Perche' ?
PLAY
    Creo il file EXE
    Salvo tutto ed esco
Riprendo il progetto dell'OCX
    Aggiungo una virgola in un commento(praticamente non cambio niente!)
    Imposto Binary comp. e gli specifico il nome del file OCX
    Compilo di nuovo l'OCX
    salvo tutto ed esco
 Eseguo il l'EXE(senza ricompilarlo).
    Inesorabile il messaggio: "il componente "mioctl.OCX" non e' registrato
correttamente.....ecc ecc
Riprendo il progetto dell'EXE
    Mi avverte che e' cambiata la versione, oppure, a CASO non carica il
controllo.
    Rimetto tutto a posto
    Ricompilo
    Salvo ed esco
Eseguo l'EXE: Tutto OK
Ho fatto la stessa procedura installando il PRG su un'altro PC, poi copio la
nuova versione, la registro con regsvr32. Solito errore! :-<
La casella Upgrade ACTIVEX controls c'entra qualcosa?
Premetto che se la procedura e' esatta, Butto VB e passo al C++. :-)
Ringrazio sentitamente Corrado e chiunque mi aiuti.
Non firmo per la vergogna.