Documento associato alla videata in Foundation

,

Quando si crea una videata a partire da un documento su Instant Developer Foundation mediante il drag & drop il documento viene associato alla videata ed e accessibile mediante la proprietà document della stessa.

Cosa serve avere un documento associato ad una videata?
Generalmente la prima videata creata mediante il drag & drop è quella associata al documento e può essere utilizzata per visualizzare il documento a partire dalla sua istanza con il metodo show() del documento.

Supponiamo di avere il documento Orders dal quale è stata creata la videata VideataOrders e per visualizzare l’istanza di documento nella videata è possibile scrivere il codice:

Orders o = new()
o.OrderID = 10248
o.loadFromDB([NumeroLivelli])
IDForm form = (IDForm)p.show([openas])

Creo un’istanza di Orders, imposto la chiave primaria e carico i dati, poi eseguo la show dell’istanza.
Il metodo show() ritorna l’oggetto IDForm creato e quindi potrei utilizzare la variabile form per mandare un messaggio con il metodo sendMessage() per passare dei dati di configurazione.

Interessante è guardare anche l’help del metodo OnShow() che posso utilizzare per specificare la classe della videata da richiamare.

Nota: perché la show della videata vada a buon fine essa deve essere nella stessa applicazione/componente in cui è presente il documento.

Tutto questo è molto utile ma nella normale gestione delle videate c’è un caso in cui può dare fastidio perché innesca un comportamento automatico del frame work sui master-detail realizzati in modalità tabbed-view.

Se ho questa videata:

Quando passo al tab Order Details il titolo della form diventa Orders Vins et alcools Chevalier (il nome del documento e il campo descrittivo che lo identifica).

Come ovviare a questa cosa?
Occorre implementare l’evento di videata OnChangeDocument() nel quale se si imposta la proprietà document della form a null si disabilità questo comportamento.

Naturalmente la cosa è generalizzabile rendendo globale l’evento:

event WebApp.GlobalFormChangeDocument(
  IDForm Form            // Oggetto che notifica questo evento
  IDDocument OldDocument // È un oggetto di tipo IDDocument, rappresenta il vecchio documento appena sostituito. È un documento nullo se è la prima volta che viene collegato un documento al form.
)
{
  Form.document = null
}

Allego un semplice esempio:
Master Detail In Tab.zip (1,6 MB)

1 Mi Piace