Gambas-it

Gambas3 => Programmazione => Topic aperto da: Gilby - 20 Febbraio 2018, 16:02:52

Titolo: Aprire un nuovo form caricando alcuni elementi di quello precedente
Inserito da: Gilby - 20 Febbraio 2018, 16:02:52
Salve ragazzi, vi espongo il mio problema, nel momento in cui clicco su un bottone chiudo il form attuale ed apro un nuovo form, vorrei che alcuni elementi di quello precedente venissero copiati con le stesse proprietà in quello nuovo, con "copy at the same place" copio solo l'oggetto con alcune caratteristiche, ad esempio l'orologio dovrei riscrivere la funzione, conoscete qualche metodo?
Titolo: Re:Aprire un nuovo form caricando alcuni elementi di quello precedente
Inserito da: vuott - 20 Febbraio 2018, 16:47:26
... chiudo il form attuale ...

Devi partire dalla consapevolezza che chiudendo un Form (ma più in generale chiudendo un Oggetto) con la riga di comando
Codice: [Seleziona]
Me.Close()
tu deallochi (ossia liberi, rendi disponibile alla sovrascrittura da parte del sistema) tutte le risorse (cioè la porzione di memoria) precedentemente allocate per creare/istanziare quel Form.

Quindi, prima di chiuderlo tu devi.............
Titolo: Re:Aprire un nuovo form caricando alcuni elementi di quello precedente
Inserito da: Gilby - 20 Febbraio 2018, 17:45:08
Mi salvo l'indirizzo a cui punta?  :-\  :hatecomputer:  :hard: :hatecomputer: :hard:
Titolo: Re:Aprire un nuovo form caricando alcuni elementi di quello precedente
Inserito da: vuott - 20 Febbraio 2018, 18:55:26
Ma quando avrai chiuso il Form, quell'indirizzo sarà divenuto inutile.

indirizzo_Form : dopo_chiusura_Form = recarsi_a_Hiroshima : dopo_il_6_agosto_1945   (http://i885.photobucket.com/albums/ac52/bangkitagustian/emoticons/AddEmoticons02713.gif)


Guarda infatti questo semplice esempio in ambiente grafico; sul Form va posto preliminarmente un Oggetto "Button".
Codice: [Seleziona]
Private butt As Button   ' Dichiariamo una variabile globale di tipo "Button"


Public Sub Form_Open()

  Button1.Background = Color.Red   ' Coloriamo il "Button", già presente sul Form, di rosso
 
  butt = Button1   ' Assegnamo l'indirizzo di "Button1" alla variabile globale "butt" di tipo "Button" (quindi ora "butt" punta a "Button1" !)
 
  Print Hex(butt.Background, 6)   ' Vediamo il valore identificativo esadecimale del colore dei Button

End


Public Sub Button1_Click()
   
  Button1.Delete   ' Distruggiamo l'Oggetto "Button1"

  Print butt   ' Andiamo a leggere il valore dell'indirizzo di memoria a cui faceva e fa riferimento la variabile "butt"
 
  Print butt.Background   ' Torniamo a leggere il valore identificativo del colore dei Button

End

....cosa succede quando premi il tasto posto sul Form ?   


Titolo: Re:Aprire un nuovo form caricando alcuni elementi di quello precedente
Inserito da: Gianluigi - 20 Febbraio 2018, 19:55:58
Piccolo, piccolo indizio, come già detto da vuott, tu non puoi passare nulla dopo aver chiuso il tuo form pertanto o passi prima o fai finta di chiudere il form e passi dopo o usi un terzo incomodo o...

 :ciao:
Titolo: Re:Aprire un nuovo form caricando alcuni elementi di quello precedente
Inserito da: vuott - 20 Febbraio 2018, 20:12:10
Piccolo, piccolo indizio..............o passi prima o fai finta di chiudere il form e passi dopo o usi un terzo incomodo....

Praticamente gli hai detto tutto !      :rotfl:
Titolo: Re:Aprire un nuovo form caricando alcuni elementi di quello precedente
Inserito da: allegfede - 09 Marzo 2018, 18:38:10
scusa la curiosita', ma perche lo devi chiudere il form precedente?
un esempio pratico per vedere se posso aiutarti a trovare un "walkaround"