Newsgroup: it.comp.lang.visual-basic
Titolo: E chiedo ancora .........

Ho molti form da gestire, ognuno serve per una diversa dituazione. ma
tutti più o meno devono fare le stesse cose.
Dal momento che per gli oggetti ed i controlli, ho usato dei nomi comuni
a tutti i form, ho pensato che poteco "alleggerire" la struttura del
codice creando una routine generica per ogni evento comune, alla quale
tutti i form potessero fare riferimento.
Così ho provato a creare delle routine in un modulo, ma non funziona
perché ho scoperto solo dopo che il modulo non riconosce gli oggetti.
Poi ho creato un form di solo codice, ma viene fuori un grande casino
anche in questo caseo, perché dovrei fare riferimento a tutti i form
prima di lavorare con un oggetto.
Ma allora ditemi (ammesso che la mia spoegazione sia chiara), che cosa
posso fare?
AIUTATEMI VI PREGO.
CIAO.
ELISA.

...

La strada dei moduli è corretta ma devi passare alle funzion/sub il
riferimento agli oggetti.
Es.
 Nella form scrivi:
        ris=somma  (txt1, txt2)
txt1 e txt2 sono il nome di 2 campi testo di tipo TextBox sulla tua form
Nel modulo crei una funzione del genere
Function somma (v1 as textbox, v2 as textbox) as Long
    somma= clng(v1.text) + clng(v2.text)
end function
Spero di esserti stato di aiuto
Saluti
    Fabry

 prima di lavorare con un oggetto.
Soluzione 1:
Crei delle funzioni a cui passi direttamente i valori che usi, senza fare
riferimento, nella funzione,. agli oggetti.
es. Nel tuo Form, ad esempio premendo un CommandButton
    Call MiaFunzione(Text1.Text, Check1.Value, Text2.Text)
Nel Modulo:
Public Function MiaFunzione (Tessssto1 as String, ValoreBin as Boolean,
Tesssssto2 as String)
    '(Operazioni .... .... ..... ....... ....... ..........  .............)
End Function
Soluzione 2:
Definisci delle variabili Globali in cui ti memorizzi in che form sei,
nel modulo inserisci un Select Case e a seconda del form a cui dei fare
riferimento inserisci:
With Nome_Form
    .Text1.Text = "Mia Stringa"
    ....
End With
Comuqnue la piu' elegante, semplice e meno incasinata e' la prima, la
seconda io la utilizzo solo in alcuni casi in cui il programma e'
semplicissimo e non posso uniformare troppo le funzioni !!!
Ciaps
Stracca

ELISA.
Rispetto a quanto già detto da Fabry e Stracca aggiungo solo una cosa:
non so se può andare bene per il tuo programma però potresti creare un solo
form e caricarne poi più istanze.
Per poi distinguere in che form ti trovi puoi usare la proprietà Tag del
form.
L'esempio qui sotto crea semplicemente vari Form2 alla pressione di un
pulsante su Form1.
Nota che ad ogni form viene assegnata la propria Tag per poi poterlo
distinguere dagli altri.
Per provarlo basta che apri un progetto con due Form (Form1 e Form2) e metti
un pulsante di nome cmdNuovoForm nel Form1.
Poi, su Form1 inserisci:
Private Sub cmdNuovoForm_Click()
    Static i As Integer
    i = i + 1
    Dim x As New Form2
    Load x
    x.Tag = Trim(Str(i))
    x.Caption = x.Caption + " [" + Trim(Str(i)) + "]"
    x.Show
End Sub
Private Sub Form_Unload(Cancel As Integer)
    End
End Sub
Su Form2 inserisci:
Private Sub Form_Activate()
    Label1.Caption = "Il Tag di questo form è:" + Me.Tag
End Sub
Spero ti sia di aiuto.
Ciao
        Diego


MAI fare form se non usi la form!!!!
Ossia, MAI utilizzare delle form se ci metti dentro solo del codice (e la
form non verra' mai visualizzata nel programma). Usa un normale modulo BAS,
ci puoi fare le stesse cose.
--
Roal Zanazzi
z...@iol.it