Autore Topic: Due form che devono interagire  (Letto 4252 volte)

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Due form che devono interagire
« Risposta #30 il: 14 Gennaio 2012, 13:16:48 »
Riprendo questa vecchia discussione, in quanto non avendo a portata di mano il mio pc con i miei appunti a riguardo non riesco ad implementare lo stesso esempio che md9327 allora mi indicò in questo post.

Come suggerito per le proprietà PUBLIC di un oggetto, puoi tranquillamente scriverci sopra dalla form madre, ovvero puoi crearti l'oggetto form figlio e poi popolare i controlli di questa form con i dati che vuoi, direttamente dalla form madre, quindi apri la form figlia.
Un'altra alternativa, che uso di norma, è passare un oggetto (tipo Collection o Object[] o Variant[], insomma un array) con i dati che popoli preventivamente dalla form madre; in questo caso, ad inizio codice della form figlia, devi aggiungere il metodo:

PUBLIC SUB _new(var as Object[])
END

la variabile "var" contiene tutti i dati necessari al popolamento della form figlia, che ti crei prima della sua creazione dalla form madre e li passi in questo modo:

SUB Apri_Form_Child()
  DIM f as FormChild 'la tua form figlia
  DIM data as NEW Collection
  data.Add(var_dato1, 'dato1') 'valore, id
  data.Add(var_dato2, 'dato2') 'valore, id
  f = NEW FormChild(data)
  f.ShowModal()
END

Come vedi, "data" è un oggetto Collection, in cui inserisci i valori che ti servono per popolare la FormChild; il valore è identificabile dal relativo id. Dopodiche crei la FormChild e gli passi "data"; all'interno di FormChild ti prendi data e ci fai quello che ti pare, inoltre puoi anche utilizzare "data" per ritornare alla form madre altri dati... insomma come ti pare...


E' chiaro ?

Bye
Ho creato un piccolo esempio che allego ma mi dà questo errore:
Type mismatch: wanted Obiject[], got Collection instead

non ricordo se allora avevo avuto lo stesso problema e in che modo avessi risolto, cosa sto sbagliando?
mi serve il vostro aiuto
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Due form che devono interagire
« Risposta #31 il: 14 Gennaio 2012, 16:03:23 »
in form1 modifica così

Codice: [Seleziona]
PUBLIC SUB _new(dati AS Collection)
  TextBox1.Text = dati[0]
  TextBox2.Text = dati[1]
END
to hai passato una collection, mentre il form1 si aspettava una object[]

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re: Due form che devono interagire
« Risposta #32 il: 14 Gennaio 2012, 18:10:24 »
Grazie fsurfing  :ok: :ok:
....
a suo tempo il gendarme (Cescko) non chiedeva di inserire [Risolto].... ;D
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)