Form MDI

di il
5 risposte

Form MDI

Buongiorno

Ho preferito aprire un nuovo thread per questo argomento, ma tornerò al "VS 2026 generare report con reportviewer", quando affronterò i report.

Nell'applicazione Access che sto cercando di convertire(per ora in VB, capito il funzionamento degli strumenti vorrei passare a C#) sono presenti delle maschere che contengono delle sottomaschere.
Per essere più chiaro mostro una maschera per spiegare il funzionamento.

La parte cerchiata è la sottomaschera che ha la funzione di acquisire/mostrare i famigliari della persona. Il numero è naturalmente variabile da 0 a un numero non prevedibile. Per questo l'esigenza è di avere, come in Access, una maschera definita "maschere continue" con campi che vengono memorizzati.

Ho letto che l'uso delle maschere MDI è deprecato.
Nel forum non mi sembra ci siano degli interventi che possono aiutare.
Che soluzioni si possono trovare?

Grazie

5 Risposte

  • Re: Form MDI

    Ciao, ti parlo in termni generici, perchè VB sarà almeno 35 anni che non lo uso.

    Quella zona che tu identifichi come una MDI in realtà non è un MDI. Quando si parla di MDI si indica che la rappresentazione visuale è organizzata da più maschere (Form) distinte l'una dalle altre. Tipicamante c'è un Form principale (Main) e una o più Form secondarie (CHILD). Quando una Form secondaria viene visualizzata questa risiede all'interno dello stesso spazio grafico della Form principale e tutte le child possono essere organizzate in modalità predefinte (come affiancate, sovrapposte, etc ...) e visibili contemporaneamente.

    In questo caso quella parte che tu evidenzii è una parte che appare "logicamente distinta" ma non fisicamente separata (a meno di finezze grafiche) e quindi è probabilmente un controllo di tipo Frame che contiene al suo interno alcuni ulteriori controlli (tipo nei DB Master / Details) di dettaglio.

    I Frame vengono usati quando devi riportare la stessa grafica in diverse Form, in modo da non dever ridisegnare ogni volta le "stesse cose".

    I contenuti dei controlli possono ovviamente essere diversi, perchè ogni singolo oggetto viene istanziato separatamente per ogni frame.

  • Re: Form MDI

    18/04/2026 - Pensionato ha scritto:

    Che soluzioni si possono trovare?

    Bhè. hai in mano un linguaggio di programmazione, le soluzioni sono praticamente infinite, solo la tua fantasia pone limite allo soluzioni.

    Tipicamente l'inserimento, ma lo dico da non esperto del settore, viene effettuato in una Form / Dialog separata, che puoi spostare a tuo piacimento nello schermo per comodità (ad esempio perchè devi osservare un altro documento "abbinato" all'inserimento che devi effettuare).

    Una volta terminato l'inserimento la Form viene chiusa e i dati riproposti nella Form principale. Da notare che tipicamente nella pagina principale i dati sono solo visualizzati, senza possibilità di modifica ... neanche in caso di digitazioni errate (è per questo che normalmente si apre una diversa finestra per l'inserimento).

    Ma ripeto, questa è una mia libera interpretazione e ce ne sono mille altre disponibili e forse ben più attinenti della mia indicazione.

  • Re: Form MDI

    18/04/2026 - Delphinium ha scritto:

    Tipicamente l'inserimento, ma lo dico da non esperto del settore, viene effettuato in una Form / Dialog separata, che puoi spostare a tuo piacimento nello schermo per comodità (ad esempio perchè devi osservare un altro documento "abbinato" all'inserimento che devi effettuare).

    La soluzione presentata nella figura è stata sviluppata affinché l'operatore non dovesse aprire altre finestre sovrapposte al momento dell'inserimento o modifica dei dati. Nel senso che si apre una sola maschera è si hanno a disposizione tutti i dati identificativi della persona.

    Il mio riferimento alle maschere MDI è solo perché studiando VS(conoscendo VB riesco a fare similitudini e a capire il funzionamento degli strumenti) pensavo che fossero la soluzione alla mia necessità.

    Cercando di formulare una domanda chiara: si può e come replicare la maschera, che è in figura, sviluppata in Access?

  • Re: Form MDI

    Alcune critiche costruttive

    Migrare da una versione all'altra non è mai indolore, migrare da un linguaggio all'altro è meglio andare a nuoto in Asia.

    Su quello che hai fatto (e che hai mostrato) manca un tasto modifica seguito da conferma e annulla. Tu chiudendo applichi modifiche ma probabilmente l'utente sta vedendo la scheda dopo un doppio click su un form principale che mostra i record. Se disgraziatamente urto il mouse mi si modifica lo stato di famiglia.

    Per la maschera continua in dettaglio, credo che devi andare di codice. È la montagna che si trova di fronte chi passa dal coltellino svizzero alla valigetta degli attrezzi.

    18/04/2026 - Pensionato ha scritto:

    La soluzione presentata nella figura è stata sviluppata affinché l'operatore non dovesse aprire altre finestre sovrapposte al momento dell'inserimento o modifica dei dati.

    Questo permette la.scrittura accidentale dei dati. Prendi esempio dal.tuo.cellulare: hai un form che elenca i contatti col suo tasto modifica e un form che inserisce o modifica i dati della rubrica.

    18/04/2026 - Pensionato ha scritto:

    Il mio riferimento alle maschere MDI è solo perché studiando VS(conoscendo VB riesco a fare similitudini e a capire il funzionamento degli strumenti) pensavo che fossero la soluzione alla mia necessità.

    Anche da una release all'altra ci sono problemi, figurati quando cambi proprio scenario.

    18/04/2026 - Pensionato ha scritto:

    Cercando di formulare una domanda chiara: si può e come replicare la maschera, che è in figura, sviluppata in Access?

    Ni...

    O sostituisci la mini maschera continua con una bella griglia (anche colorata e con i cuoricini di terze parti) oppure ti crei la vista maschera continua.

    Come?

    1) Conti i record detail

    2 crei gli oggetti e ci schiaffi sopra il valore del campo

    3) indirizzi o nomini il componente con suffisso il numero id del record detail

    Perché questi passaggi?

    Il primo ti serve per un ciclo for anche se puoi usare la fine del file.

    Crei gli oggetti es.

    Crea(Nome12345) dove 12345 è l'id del record

    Nascita12345, eta12345 ecc...

    Associ ad ogni oggetto il valore

    Adesso veniamo al numero id

    Stai modificando un oggetto che contiene il campo età del record 1211 come fai a saperlo? Perché l'oggetto sì chiama nome oggetto+ID record

    Ogni modifica la passi quando si preme "salva" al rispettivo campo del rispettivo record.

    E ti sei creato la maschera continua.

  • Re: Form MDI

    Buongiorno Pensionato, la situazione che proponi si risolve "sostituendo" la maschera continua con un controllo DataGridView. Dovrai decidere come popolarlo, cioè cosa assegnare alla proprietà DataSource e come gestire le modifiche. C'è bisogno di studiarci un po' e di fare diverse prove, ma il risultato sarà ottimo, grazie alle molte funzionalità offerte da questo controllo.

    Riguardo alla questione "MDI deprecato" il consiglio (da pensionato a Pensionato) è di verificare sempre le motivazioni effettive delle cosiddette deprecazioni, che spesso non esistono, ma sono semplicemente delle questioni di moda. Comunque, in questo caso, effettivamente MDI non c'entra.

Devi accedere o registrarti per scrivere nel forum
5 risposte