OK.Originariamente inviato da matt_vb6
Va bene ... ci provo , ma credo di aver già bisogno di una mano ...
Assolutamente falso.Originariamente inviato da matt_vb6
Ad esempio , voglio l'elenco di tutti i forms presenti nell'applicazione (per valutare se ci siano o meno i controlli da cambiare )... e qui sorge il primo problema: pare che VB non ti dia i nomi dei forms a meno che non siano caricati .![]()
Tieni sempre a mente questo concetto:
L'Extensibility2 (che è l' 'ambiente' in cui opera un add-in) è come avere un programmatore che fa in automatico TUTTO quello che puoi fare manualmente.
Anzi lo fa meglio, perchè lui ha accesso a qualsiasi oggetto, proprietà metodo, ecc. del progetto.
Quindi, in concreto, qualsiasi cosa tu riesca a fare manualmente a design-time, l'add-in la può fare automaticamente, basta dargli le istruzioni corrette.
Puoi creare, distruggere, gestire: Form, metodi (Sub o Function), proprietà, menu, aggiungere qualsiasi file, componente, riferimento, ecc. al progetto, rimuoverli, ecc.
Già solo da questo è intuibile la potenza di un add-in!
Per contro, un'add-in NON può essere eseguito a run-time. Ma ovviamente se lo facesse sarebbe un controsenso, perchè non è questo il suo scopo.
Si riesce, si riesce...Originariamente inviato da matt_vb6
Allora bisognerebbe caricare i forms e valutare se ci siano controlli da cambiare.. secondo problema : non si riesce ad elencare i forms presenti in un progetto (possibile?) .![]()
Consentimi di fermarti: niente di tutto questo.Originariamente inviato da matt_vb6
Allora son riuscito a fare l'elenco dei form di un progetto (in un file esterno.txt) che hanno dei controlli che voglio sostituire (cercando direttamente nei.frm) ma ... terzo problema : non puoi caricare un form usando una variabile .
Cioè se tu sai che il form è frmElencoRiba.frm .... non puoi (possibile?) caricare il form usando :
dim Myfrm as Form ,NomeForm as string
NomeForm ="FrmElencoRiba" (stringa)
set Myfrm = NomeForm ( o settaggi simili.. niente da fare)![]()
Intuisco che non conosci molto questo 'ambiente'...
L'Extensibility2 è un'ambiente a sé stante (dal nome stesso si evince: è un'estensione del linguaggio VB) che possiede propri Metodi e Proprietà i quali funzionano ed interagiscono con tutti gli oggetti dell'IDE di VB6, incluso il progetto caricato.
Quindi devi prendere prima confidenza con questo linguaggio che, come dicevo è potentissimo.
Ti darò di più, ti fornirò il sorgente di un'add-in e ti spiego cosa fa, così capirai meglio:Originariamente inviato da matt_vb6
Se hai qualche idea sulla soluzione dei primi due problemi potrebbe essere un grosso passo in avanti ...
Il mio primo add-in che (sviluppai per prova) aveva l'obiettivo di analizzare il progetto caricato ed aggiungervi la gestione multi-lingua, perchè volevo implementarla nei miei progetti. Ovviamente farlo a mano.... e torniamo al discorso già fatto.
Hai presente come vengono gestite le traduzioni in lingua di molti programmi freeware/sharewere?
Per ogni lingua esiste un file (di solito in formato INI) ed il programma mostra la lingua scelta dall'utente prelevando le stringhe localizzate dal relativo file INI (english.ini, italian.ini, france.ini, ecc...).
Qualsiasi utente può quindi prendere il file di riferimento (di solito english.ini) e crearsi il proprio file con le stringhe tradotte.
Bene, implementare la gestione in lingua è relativamente semplice in un NUOVO progetto perchè è sufficiente impostarne la gestione in modo adeguato.
Ma aggiungerla in un progetto esistente richiede un lavoro immane, perchè occorre andare a modificare tutte le stringhe del progetto a mano!
Quindi è un po' quello che ti prefiggi tu...
Per sommi capi, il mio add-in esegue quanto segue:
- aggiunge al progetto un modulo BAS che contiene le routine già preposte alla gestione della lingua
- cerca le stringhe all'interno di tutti i file (scelti dallo sviluppatore) e le sostituisce con un chiamata alla routine apposita che va a leggere la stringa tradotta
- salva le stringhe in un file INI
Vengono creati 2 file INI speculari: ITA.ini e ENG.ini, così che lo sviluppatore può andare a tardurre qualche stringa nel file ENG.ini e testare immediatamente il suo progetto.
- esiste anche un filtro per determinare quali stringhe vanno elaborate
- aggiunge un nuovo form che contiene un'ImageList con tutte le bandiere di ogni lingua
- crea anche un menu (nel form indicato dallo sviluppatore) per la selezione della lingua
(con qualche modifica si può usare un ImageCombo ed allora mostrare anche le bandiere)
- etc, etc, etc...
Credo che solo da queste caratteristiche tu riesca a renderti conto delle reali potenzialità di un'add-in!
Tra l'altro credo che tu conosca uno dei più famosi ed imperdibili (nonchè gratuito) add-in per VB6 come MZ-Tools 3 (www.mztools.com).
L'articolo ed il codice sorgente dell'add-in li trovi qui:
Aggiungere il supporto multi-lingue ai progetti VB
a cura di Giorgio Brausi (pubblicato il 17/10/2002)
Livello:Intermedio
Come fornire i vostri progetti (e programmi) di supporto multi-lingue per consentire all'utente finale di utilizzare il vostro programma localizzato. (completo di add-in)
http://www.visual-basic.it/articoli/gbMLS.htm
E se vuoi dare un'occhiata ad un'altro mio add-in SaveToFolder
http://nuke.vbcorner.net/Tools/Savet...2/Default.aspx
E, per curiosità, a MenuCreator
http://nuke.vbcorner.net/Tools/MenuC...1/Default.aspx
![]()
P.S.
Non so se sarà il caso di aprire una nuova discussione, visto che entriamo in un campo leggermente diverso