Report

Ok Martin. Now I take a look at your project. Thanks.

Well done, Martin! Your example works perfectly!
The difference with my code is how I declare the report:

Dim rpt As Report
rpt = New ElencoClienti

In this way rpt doesn’t show me anything that is defined in the report.
You declare the report

Dim rpt As New Report1

and this is the right way (I think) if you want have access to the report objects.

I’ll modify my project following your example.
Thank you so much!!

[quote=405618:@Nedi Freguglia]

Dim rpt As Report rpt = New ElencoClienti[/quote]
Just change this into

Dim rpt As New ElencoClienti

and you should also get access to the Properties.

Hi Martin! I have done the changes following your code and everything works fine!!

Thank you very much!!

Max, che differenza c’è tra utilizzare direttamente il nome della window (avendo impostato ad ON la proprietà Implicit Instance), ed invece fare come fai tu

dim wclienti as new clienti

Perché dici che è più pratico? Non riesco a capirne la differenza…come non capisco tutta la storia del chiamante, weakref ecc.
Perdonami, ma ho ancora molto da imparare di Xojo!

Allora, ti faccio un esempio semplice.
Mettiamo che stai scrivendo un’applicazione grande.
Hai un’elenco di clienti, dove poi richiami la scheda del singolo cliente.
Dall’altra parte hai un elenco documenti, dove apri la scheda del documento, dove all’interno della scheda documento devi selezionare un cliente aprendo la lista dei clienti, e siccome il cliente non lo hai trovato lo devi inserire nella sua scheda, quindi aprirai la scheda del cliente.
per l’elenco clienti gi aperto cos come la scheda del cliente.

Come nel video qui!

Adesso mi chiaro: col tuo metodo puoi istanziare una window tutte le volte che vuoi, con il mio solo una.

Quando avrai tempo e voglia mi chiarisci anche il concetto di WeakRef?

Grazie Max!

Buon weekend!

Allora weakref il riferimento assoluto di un oggetto aperto.
Io per utilizzarlo ho creato una nuova classe di tipo finestra ( chiamata finestrabase ), dove ho inserito una propriet che ho chiamato ‘chiamante’ di tipo weakref appunto.

Quando creo una nuova finestra, invece di utilizzare l’oggetto di tipo ‘window’ utilizzo ‘finestrabase’ in modo abbia all’interno la propriet che ho chiamato ‘chiamante’ e anche il codice per salvare la posizione e la dimensione della finestra.
E il controllo per la sicurezza, ovvero la chiamata ad una procedura che verifica se l’utente abilitato a vedere, modificare, cancellare, inserire i dati di quella finestra, ma questo un altro discorso.
Ho una nuova finestra che un oggetto di tipo finestrabase

quando chiamo questa windows, non la chiamo direttamente ma istanzio un nuovo oggetto di quel tipo.

dim wclienti as new clienti // clienti un oggetto finestrabase
wclienti.chiamante = new weakref(self) // inserisco nella propriet di tipo weakref il codice univoco della finestra, men o quello che che ha chiamato la finestra.

La finestra clienti potr aggiornare l’oggetto che l’ha chiamata attraverso la propriet ‘chiamante’

if Chiamante<>nil and Chiamante.Value<>nil and Chiamante.Value isA elencoclienti then
clienti(Chiamante.Value).Aggiorna // chiamo il metodo aggiorna della finestra che ha aperto clienti
end if

Grazie mille. Adesso ci devo riflettere su un po’, perch per il momento faccio un po’ di fatica.ma conto di arrivarci!

Grazie ancora, e buon weekend.

Anche io ho fatto fatica, ma il Magico Antonio mi ha aiutato parecchio…

Siamo tutti debitori con il Magico Antonio !!!