Newsgroup: it.comp.lang.visual-basic
Titolo: WithEvents nel modulo

Salve a tutti,
 volevo chiedere se era possibile definire un oggetto (per es. una
textbox) all'interno di un modulo standard e, assegnare a questo
oggetto la funzionalità di rispondere agli eventi.
Ho provato a dichiarla: Private WithEvents objTxt() as VB.Textbox ma
non funziona all'interno del modulo standard.
Non c'è un modo per assegnare gli eventi in un secondo momento dalla
definizione della textbox, magari dalla form? O devo per forza
dichiarare il tutto nella form?
Grazie mille.

 dichiarare il tutto nella form?
cosa vuoi fare esattamente?
Ciao,
Moreno
Inviato da 
www.mynewsgate.net

Moreno hai ragione ora cerco di spiegarmi meglio:
Io vorrei crearmi una procedura che sia visibile per tutti i form di
un progetto, che gestisca la creazione dinamica delle textbox in base
ai campi di una query passati come parametro a questa procedura. Per
esempio se passo una query del tipo "select * from tab_clienti",
voglio che dinamicamente la procedura mi crei sulla mia form le
textbox con tutti i campi selezionati nella tabella indicata. Vorrei
che nella proprietà Tag della textbox ci andasse a mettere il nome del
campo (es. nome,cognome,indirizzo) e vorrei che le textbox create
fossero parte di una matrice di controlli.
Vorrei creare le textbox in questo modo: 
mettendo questa istruzione nel ciclo che loopa i campi selezionati
dalla query pasasta
set objtxt() = form.controls("vb.textbox","idtext_" & n_array)
E fino a qui nessun problema.
Però io vorrei anche che queste caselle di testo rispondessero agli
eventi.
Il problema è che da un modulo standard non posso fare una
dichiarazione del tipo: Private WithEvents objTxt As VB.TextBox.
E tu sai che WithEvents serve per far sì che il controllo risponda
agli eventi.
Allora volevo sapere se si poteva dichiarare nel modulo con la
semplice dichiarazione: Private objTxt As VB.TextBox e poi, magari far
sì che questa casella di testo possa rispondere agli eventi (perché
così com'è dichiarata non lo può fare) in qualche modo richiamando il
riferimento alla textbox dal form che richiama la procedura e
assegnare a questo controllo gli eventi da lì.
Comunque lavorandoci sopra ho capito che comunque non posso dichiarare
nemmeno una matrice di controlli con la parola chiave WithEvents
quindi ora la mia domanda è un'altra: posso io creare degli eventi
(si, lo so che si può) e assegnarli poi alle textbox create
dinamicamente e far in modo che queste rispondano a questi eventi? Io
mi sto documentando e facendo prove con quello che ho a disposizione e
con la guida.
Grazie mille e scusate se magari mi sono spiegata male.

 ha scritto:
[CUT]
Allora, come dici tu, non mi risulta si possa definire a runtime un array 
di controli, poiché VB non ti permette di creare (con controls.add) due 
controlli con lo stesso nome e la proprietà .index è di sola lettura.
Come hai detto tu, withevents e modulo standard non vanno d'accordo, però 
questo è bybassabile con un modulo di classe (sempre che alla fine 
decidiamo sia necessario).
Venendo alle tue esigenze... hai detto di esser disposta a creare una 
matrice di controlli nel form: perché quindi non hai optato per questa 
soluzione?
Crei il primo controllo (indice 0 nella matrice) e gli altri li crei a 
runtime con Load nomecontrollo(indice).
Come avrai visto tutti i controlli appartenenti ad una matrice condividono 
la stessa procedura di gestione dell'evento e li puoi identificare tramite 
il parametro Index presente in ogni procedura evento.
Se poi vuoi far sì che l'implementazione di questi eventi sia la stessa per 
i controlli di ogni form, basta che ne deleghi l'implementazione (ad una 
funzione pubblica, ad un metodo di una classe... vedi tu come 
architetturare la tua applicazione).
Che ne dici? Oppure mi son perso qualcosa o non ho compreso qualche altro 
problema?



Crei il primo controllo (indice 0 nella matrice) e gli altri li crei a
runtime con Load nomecontrollo(indice).
Invece ora sto cercando di creare i controlli proprio in un modulo di
classe esattamente come hai detto tu. Ho scaricato un esempio (ma non
ricordo il nome del sito ho fatto una ricerca sul web) e ora me lo sto
studiando ed è esattamente quello che mi serviva! grazie mille
comunque.