DIW x_finestra AS NEW finestra

Un piccolo consiglio ;
Ho un oggetto window che si chiama finestra
chiamo finestra in questo modo :

dim x_finestra as new finestra
x_finestra.apri(“tabella”,“idrecord”,“azione”)

alla fine di tutto quello che far con x_finestra devo aggiornare una window
la window che devo aggiornare sempre una nuova istanza di un’altra window

come posso recuperare il nome della window che devo aggiornare ?
esiste qualcosa nell’oggetto della nuova istanza che identifica appunto questa ultima ?

cio se chiamo x_finestra un oggetto che si chiamava finestra come trovo nell’oggetto richiamato il nome che ho utilizzato ?
in questo modo basta che nella x_finestra che richiamo passo un paramentro con il nome dell’oggetto finestra chiamante in modo di poter eventualmente effettuare operazioni…

^^^^^^^^^^^^
A volte essere disabili comporta anche una invalidit di ragionamento.

Massimiliano,

fatico a capire cosa vuoi fare, ma mi sembra tu voglia richiamare un metodo di un oggetto B da un oggetto A (finestre, sempre oggetti sono).
Se ho capito bene, quindi tu devi memorizzare l’oggetto B da qualche parte che A lo possa recuperare.
Magari come propriet di A.
Oppure mantieni un array di finestre e cercala quando ti serve.

Esatto massimo, voglio chiamare un metodo di un oggetto finestra, da un’altro oggetto finestra e non so come reperire il nome dell’oggetto finestra chiamante ( visto che un nuovo oggetto finestra ).

Massimiliano, non chiarissimo quello che vuoi fare.
Vediamo se ho capito:
da un window qualsiasi richiami tramite il codice

dim x_finestra as new finestra x_finestra.apri("tabella","idrecord","azione")
Questa finestra ti permette di aggiornare i dati della window da cui hai effettuato la chiamata (da chiarire se alla chiusura, mentre li modifichi su finestra o in altro modo)

Ho capito?

Si hai capito bene …
ti mostro un video in modo riesca a farmi capire bene

emissionedocumenti la schermata principale
il campo che vedi evedenziato in verde ( un componente che si chiama dblookup ) attiva una finestra premendo F2 o F3 che si chiama lookupwindow, oppure inserisci il codice e premi INVIO, oppure ancora premi F4 e cerchi per descrizione il dato che ti serve con il completamento automatico.
Premendo F2 o F3 apro la schermata di LOOKUP dove posso selezionare il record che mi interessa, ma posso anche inserire nuovi record, duplicare, esportare etc …
Ovviamente se inserisco un nuovo record apro UNA NUOVA ISTANZA di una finesrtra…

La mia richiesta come posso utilizzare la finestra LOOKUPWINDOW come nuova istanza e fare in modo che la NUOVA ISTANZA della finestra chiamata aggiorni LA NUOVA ISTANZA di LOOKUPWINDOW e non la finestra LOOKUPWINDOW

Come posso ottenere il nome della nuova istanza ?
e se utilizzo ad esempio un’altra NUOVA ISTANZA, perch potrebbe succedere … nella finestra emissionedocumenti utilizzo il componente dblookup che utilizzo anche nella finestra di inserimento chiamata come NUOVA ISTANZA da LOOKUPWINDOW

Esempio …

Da quello che vedo (uso i nomi del video cos evitiamo fraintendimenti tra window , finestra etc)
Fai click su un campo di una finestra che pu essere “emissione documenti” ad esempio (ma anche un’altra finestra di input)

Viene mostrata la tua finestra di lookup (ma potendo chiamare da finestre di input diverse possono esserne chiamate diverse)

Questa a sua volta pu chiamarne altre per l’inserimento aggiornamento dati, ma alla fine selezionando un valore nella finestra di lookup vuoi aggiornare la tua finestra (“emissione documenti” nel tuo esempio) originale.

Hai diverse strade.
Io in genere preferisco usare lo showWithin in modo da mostrare la finestra “figlia” legata a quella principale (almeno su mac, ma su win il principio lo stesso) in modo da evitare problemi di chiusure di finestre non previste.
In questo caso la tua chiamata sar del tipo:
// ad esempio al click nel campo
//i valori sono presi dal tuo esempio
//meglio lavorare con il constructor in questi casi
dim w as new myLookUpWindow(“tabella”,“idrecord”,“azione”)
w.showModalWithin(self) //mostra la finestra come dialogo figlio e il codice di questa finestra qui si ferma
if w.selected then
//metti un flag boolean come propriet della finestra di lookup per verificare che l’utente ha selezionato qualcosa e non ha semplicemente chiuso la finestra
//ricordati che i valori di w disponibili sono solo le propriet in questo momento in quanto la finestra praticamente chiusa e quindi i controlli sono chiusi, devi pertanto riportare su propriet i valori importanti
end if

Alternativamente puoi indicare alla finestra figlio la finestra di origine. Pericoloso perch potresti chiudere la finestra principale nel frattempo. Per evitare problemi devi aggiungere la costruttore della finestra di lookup un parametro relativo alla finestra creando una interfaccia e dichiarando la tua finestra principale come appartenente a questa interfaccia.
in pratica:
dichiari una interfaccia tipo intf_chiamante con un metodo leggirisultati(w as myLookUpWindow)
dichiari la (o le) tua finestre chiamante come finestra che implementa questo metodo (ti verr aggiunto il metodo leggirisultati tra i metodi di questa finestra.
Nel costruttore di myLookUpWindow prevedi anche un parametro tipo w as intf_chiamante e lo memorizzi come weakref
quando fai la scelta (in pratica quando dovresti popolare la tua finestra chiamante) farai:
verifichi che la weakref non nil (ovvero che la finestra chiamante non stata chiusa nel frattempo)
crei un oggetto w as intf_chiamante basato su questa weakref e chiami w.leggirisultati(self)