Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: aulin - 12 Maggio 2010, 12:29:21

Titolo: [risolto]Passaggio dati tra form
Inserito da: aulin - 12 Maggio 2010, 12:29:21
Sono un nuovo utente, è la prima volta che scrivo su questo forum, e quindi vi chiedo di scusarmi se torno su un argomento discusso spesso.
Utilizzo 2 form una principale form1 e una secondaria form2 richiamata dalla form1. La form2 è attivata da un click su un campo e da questa form vorrei prendere un dato su un db e visualizzarlo su un campo (textbox). Ogni cosa sembra funzionare, ma non riesco a passare il dato sulla textbox ne passando da variabili publichene passando da variabili poste in un modulo. La chiusura della form2 non aggiorna i valori della variabile nel modulo, anzi sembra che questo avvenga successivamente. Se infatti riclicco sulla textbox( e quindi riapro la form2 e scelgo un nuovo dato) mi fa vedere il valore che avrebbe dovuto inserire nel passaggio precedente. Qual'è la parte errata ? Spero di essere stato chiaro.
Grazie.
Titolo: Re: Passaggio dati tra form
Inserito da: ealmuno - 12 Maggio 2010, 12:43:45
guarda qua: http://www.gambas-it.org/smf/index.php?topic=824.0 (http://www.gambas-it.org/smf/index.php?topic=824.0)
Titolo: Re: Passaggio dati tra form
Inserito da: aulin - 12 Maggio 2010, 13:02:27
grazie ealmuno per la velocità di risposta. L'esempio risolve le problematiche legate a show e hide. Il mio problema è come far risalire un dato dal form2 chiamato al form1 chiamante.
Titolo: Re: Passaggio dati tra form
Inserito da: fsurfing - 12 Maggio 2010, 13:11:27
credo che il tuo problema sia nella tempistica..
dovresti procedere sosì

1-  form2.load

2- form1 passa il valore a form2

3- form2.show

in alternativa:

1-form2.load
2-form2.show
3-form2 legge il valore dal form1

Titolo: Re: Passaggio dati tra form
Inserito da: aulin - 12 Maggio 2010, 13:32:56
Forse non riesco ad esporre correttamente il problema. Ci riprovo, sperando nella benevolenza di chi legge.
in una Form1 ho una textbox il cui contenuto viene preso da un batabase. Per fare ciò ho utilizzato un Panel, su cui c'è una gridview su cui metto i dati prelevati e sul clic passo i dati nella textbox. QUindi fin qui tutto ok. Per una migliore leggibilità volevo mettere in altro posto le ricerche sul db e quindi avevo pensato ad un'altro form form2 il quale si apre sul clic sulla textbox. Le ricerche le faccio sulla form2 , tutto ok, ma quando mi trovo a riportare il valore trovato sulla textbox del form1 questo non riesco a trovarlo. Per fare questo passaggio utilizzo una variabile in un modulo. Ho provato anche con lostfocus per vedere se riuscivo a prendere questo datao ... niente da fare. Non riesco a far risalire il dato dalla form2 alla form1 anche utilizzando una variabile in un modulo.
Scusate la prolissità.
Titolo: Re: Passaggio dati tra form
Inserito da: Pixel - 12 Maggio 2010, 13:58:48
...Non riesco a far risalire il dato dalla form2 alla form1 anche utilizzando una variabile in un modulo.
Benvenuto in famiglia :D

Domanda (probabilmente sciocca), la variabile nel modulo l'hai dichiarata come Public?

Module1
Codice: [Seleziona]
' Gambas module file

PUBLIC pippo AS String


Form1
Codice: [Seleziona]
PUBLIC SUB Form_Open()
 

END

PUBLIC SUB Button1_Click()
Module1.pippo = "Form1"
Form2.Show

END

Form2
Codice: [Seleziona]
PUBLIC SUB Form_Open()

  ME.Caption = Module1.pippo

END

Ma probabilmente non ho compreso io il problema :P
Titolo: Re: Passaggio dati tra form
Inserito da: Golia - 12 Maggio 2010, 13:59:47
Non sò se ho capito bene, prova così:
form1.miatextbox.text = form2.tuatextcox.text
però devi attivare, se non lo hai già fatto: Progetto/Proprietà/Opzioni/i controlli del form sono public  = SI
Titolo: Re: Passaggio dati tra form
Inserito da: Pixel - 12 Maggio 2010, 14:01:39
Non sò se ho capito bene, prova così:
form1.miatextbox.text = form2.tuatextcox.text
però devi attivare, se non lo hai già fatto: Progetto/Proprietà/Opzioni/i controlli del form sono public  = SI

Se vuole usare i dati dei controlli, ma se usa una variabile in un modulo non serve :) (o mi sbaglio?)
Titolo: Re: Passaggio dati tra form
Inserito da: Golia - 12 Maggio 2010, 14:04:16
Avevo capito passaggio tra due textbox di 2 form.

Aulin...ci fai già venire mal di testa ;D ;D ;D ;D

Scherzo, benvenuto e chiedi pure tranquillamente
Titolo: Re: Passaggio dati tra form
Inserito da: Pixel - 12 Maggio 2010, 14:05:53
Scherzo, benvenuto e chiedi pure tranquillamente
Che tanto noi di risposte non ne abbiamo ;D ;D
Titolo: Re: Passaggio dati tra form
Inserito da: aulin - 12 Maggio 2010, 14:09:33
Posto parti che interessano nel modulo comune, form1 e form2


' Gambas module file
'
' Modulo Comune per passaggio Dati
'
'
PUBLIC CodiceDirezione AS String
PUBLIC NomeDirezione AS String
 


'--------------------------------
' form1
'

PUBLIC SUB TB_NomeDirezione_DblClick()
      OBWinDirezioni.Show
       TB_CodDirezione.Text = ModCom.CodiceDirezione
        TB_NomeDirezione.Text = ModCom.NomeDirezione
END

PUBLIC SUB TB_NomeDirezione_LostFocus()
    TB_CodDirezione.Text = ModCom.CodiceDirezione
    TB_NomeDirezione.Text = ModCom.NomeDirezione
END


'-------------------------------------------
'
' Form2
'
PUBLIC SUB GridView1_Click()
DIM iRow AS String
DIM id AS Integer
DIM i AS Integer
 
 
  iRow = GridView1.Row 
   
     sql = "SELECT * FROM direzioni order by direz_cod" 
      hres = $hconn.Exec(sql)                              ' esegue la query
     
      IF iRow <> -1 THEN
            hres.MoveTo(iRow)
            id = hres!direz_ID
            hres = $hConn.edit("direzioni", "direz_id=" & id)
             
           ModCom.CodiceDirezione = hres!direz_cod
           ModCom.NomeDirezione = hres!direz_nome
      ENDIF

ME.CLOSE

END
Titolo: Re: Passaggio dati tra form
Inserito da: Pixel - 12 Maggio 2010, 14:17:27
OBWinDirezioni.Show che è?
O meglio.. che succede al suo interno?
Hai provato a mettere

Codice: [Seleziona]
TB_CodDirezione.Text = ModCom.CodiceDirezione
TB_NomeDirezione.Text = ModCom.NomeDirezione

all'apertura della form1?

Altra domanda: che versione di Gambas usi?
Titolo: Re: Passaggio dati tra form
Inserito da: Golia - 12 Maggio 2010, 14:22:37
PUBLIC SUB TB_NomeDirezione_DblClick()
      OBWinDirezioni.Show
       OBWinDirezioni.TB_CodDirezione.Text = ModCom.CodiceDirezione
        OBWinDirezioni.TB_NomeDirezione.Text = ModCom.NomeDirezione
END

Così?
Titolo: Re: Passaggio dati tra form
Inserito da: aulin - 12 Maggio 2010, 14:26:29
la versione è la 2.18
la OBWinDirezioni.Show  è la form2, dentro si accede ad un db e con la gridview scelgo CodDirezione e NomeDirezione.

Provato ... idem.

Avevo provato a gestirlo con il GotFocus al posto del click ... fa lo stesso
Titolo: Re: Passaggio dati tra form
Inserito da: Golia - 12 Maggio 2010, 14:32:20
Non so..magari prova a postare il progetto che possiamo vedere
Titolo: Re: Passaggio dati tra form
Inserito da: aulin - 12 Maggio 2010, 14:50:08
PUBLIC SUB TB_NomeDirezione_DblClick()
      OBWinDirezioni.Show
      TB_CodDirezione.Text = ModCom.CodiceDirezione
       TB_NomeDirezione.Text = ModCom.NomeDirezione
END

Le textbox TB_ sono nella Form1 e ci voglio mettere i dati presi dal modulo comune i cui dati sono stati modificati dalla  OBWinDirezioni.Show (form richiamata dalla form1)
Titolo: Re: Passaggio dati tra form
Inserito da: aulin - 12 Maggio 2010, 15:00:20
Grazie Golia.
Era piu semplice di quanto avessi immaginato.
Senza passare per le variabili nel modulo comune OBProgins.TB_CodDirezione = hres!direz_cod ( mancava il riferiomento alla form chiamanet ) .
E un grazie a tutti.
RISOLTO .... come e dove lo scrivo ????