Autore Topic: Perchè mettere il contenitore di un form a Null?  (Letto 277 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Perchè mettere il contenitore di un form a Null?
« il: 17 Giugno 2016, 20:50:04 »
Qualcuno può essere così cortese di spiegarmi la differenza che c'è fra queste due finestre main (FMain).
Che cosa comporta mettere il parent (il contenitore?) a Null?

Codice: [Seleziona]
Public Sub Main() 
 
  Dim hFMain As FMain
 
  With hFMain = New FMain
    .Caption = "Pippo"
    .Show
  End With
 
End

e

Codice: [Seleziona]
Public Sub Main()
 
  Dim hFMain As FMain
 
  With hFMain = New FMain(Null)
    .Caption = "Pippo"
    .Show
  End With
 
End

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.395
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Perchè mettere il contenitore di un form a Null?
« Risposta #1 il: 17 Giugno 2016, 21:11:28 »
Posti così come scritti, i due codici innanzitutto mi restituiscono questo errore:

" Unknown identifier: FMain "







« Ultima modifica: 17 Giugno 2016, 21:15:58 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Perchè mettere il contenitore di un form a Null?
« Risposta #2 il: 17 Giugno 2016, 21:20:04 »
Posti così come scritti, i due codici innanzitutto mi restituiscono questo errore:

" Unknown identifier: FMain "

Si hai ragione non ho specificato che il programma contiene un modulo (classe di avvio) e una form (FMain), mi pareva sottinteso dal codice, chiedo scusa.

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.395
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Perchè mettere il contenitore di un form a Null?
« Risposta #3 il: 17 Giugno 2016, 21:27:50 »
Non mi pare che vi siano effetti diversi usando i due codici.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Perchè mettere il contenitore di un form a Null?
« Risposta #4 il: 17 Giugno 2016, 21:36:38 »
Qui e qui md9327 ne parla ma non mi è chiaro cosa intende nello specifico.
 :ciao: :ciao:

Dimenticavo la più importante: sotema, che non è certo uno sprovveduto, la usa in questo esempio e vorrei tanto capirne il motivo.
« Ultima modifica: 17 Giugno 2016, 21:46:23 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.395
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Perchè mettere il contenitore di un form a Null?
« Risposta #5 il: 18 Giugno 2016, 01:06:01 »
I ''Form'' sono finestre; perfino i Button sono finestre, alla base dei quali oggetti vi sono le risorse sistema grafico X11.

Io credo che, se non dichiari espressamente Null il Genitore del Form creato, è come se lo dichiarassi tale (ossia Null), ma implicitamente. Insomma o lo dichiari come Null, o non lo dichiari assolutamente... il Parent del Form sempre "Null" è !
In tali due casi il Form non assume, dunque, alcun Genitore.

Del resto se poni alla fine della routine Sub Main() questa linea:
Codice: [Seleziona]
Print MainForm.Parent.Name
lanciando il programma, otterrai l'errore di oggetto nullo, inesistente, sia esplicitando come Null il parametro del Contenitore "parent" sia omettendolo. Insomma il Form in entrambi i casi non ha Genitore.
"Superiorem non recognoscit !"
   :-X



« Ultima modifica: 19 Giugno 2016, 20:47:38 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Perchè mettere il contenitore di un form a Null?
« Risposta #6 il: 18 Giugno 2016, 17:48:12 »
 :ciao: Vuott,
scusa il ritardo nel ringraziarti per la risposta.
Avrei dovuto pensarci meglio...

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro