Apertura di un form figlio di form mdi dal login

di il
20 risposte

Apertura di un form figlio di form mdi dal login

Salve,

dal form login apro il form1.mdi nel contempo vorrei che il form1.mdi

apra il form frmPlanner e lo metta davanti

il form frmPlanner viene aperto ma resta indietro

qualcuno sa come fare ? grazie

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        FrmPlanner.Show()
        FrmPlanner.BringToFront()
    End Sub

20 Risposte

  • Re: Apertura di un form figlio di form mdi dal login

    19/04/2024 - Zeusmax ha scritto:


    dal form login apro il form1.mdi nel contempo vorrei che il form1.mdi

    apra il form frmPlanner e lo metta davanti

    il form frmPlanner viene aperto ma resta indietro

    Il mio suggerimento, che non è un soluzione diretta ma una strada per schivarsi un sacco di problemi, è quella di evitare l'approccio MDI.

    Le interfacce MDI sono “deprecate” da svariato tempo, per tanti buoni motivi (esistono molteplici soluzioni per realizzare interfacce altrettanto funzionali senza ricorrere a questo meccanismo, che ormai è largamente inutilizzato salvo poche applicazioni).

    Il motivo di questo consiglio è che, esistendo finestre “tradizionali”, finestre “master” e finestre “figlie”, non è possibile gestirle tutte sullo stesso piano, ad esempio mostrare una “figlia” su una “tradizionale”, perché la loro appartenenza o meno al contenitore MDI falsa la gerarchia (giustamente).

    Ad ogni modo, spiega meglio di che tipo sono queste finestre e qual è la sequenza con cui vengono mostrate (riportando magari dei pezzi di codice).

  • Re: Apertura di un form figlio di form mdi dal login

    Ciao Alka,

    tu cosa useresti al posto dell'MDI ?

  • Re: Apertura di un form figlio di form mdi dal login

    Ti ha chiesto di spiegare meglio

  • Re: Apertura di un form figlio di form mdi dal login

    19/04/2024 - Zeusmax ha scritto:


    Ciao Alka,

    tu cosa useresti al posto dell'MDI ?

    Se isi l'approccio form madre e figlia non puoi mettere il planner indipendente.

    Per quello che vuoi fare, almeno come faccio io con delphi, devi creare un progetto a parte anche se attinge allo stesso database e richiamarlo all'avvio o da un pulsante come se stessi avviando un programma a parte (exe).

    Confermo l'obsolescenza di questa architettura come ha detto alka.

  • Re: Apertura di un form figlio di form mdi dal login

    19/04/2024 - Zeusmax ha scritto:


    tu cosa useresti al posto dell'MDI ?

    Creerei degli User Control da ereditare, e li andrei a istanziare dinamicamente all'interno di un Panel dedicato nel Form principale, oppure li organizzerei in “schede” (tab).

    Mi sono ripromesso più volte di farci sopra una live di coding per una “dimostrazione”, ma l'ho fatta solo in Delphi e non in .NET.
    Prima o poi la farò, giuro. :)

  • Re: Apertura di un form figlio di form mdi dal login

    A mio parere, se si sconsiglia un tipo di soluzione o approccio che dir si voglia, sarebbe opportuno spiegarne il motivo.

    Dire che porta un sacco di problemi e che si tratta di un metodo obsoleto, ammesso anche che sia vero, non mi sembra una risposta di cui resterei soddisfatto.

  • Re: Apertura di un form figlio di form mdi dal login

    19/04/2024 - grumpy ha scritto:


    A mio parere, se si sconsiglia un tipo di soluzione o approccio che dir si voglia, sarebbe opportuno spiegarne il motivo.

    Concordo. Proprio per questo, nella mia risposta, c'è una frase che inizia testualmente con “Il motivo di questo consiglio è che…”.

    19/04/2024 - grumpy ha scritto:


    Dire che porta un sacco di problemi e che si tratta di un metodo obsoleto, ammesso anche che sia vero, non mi sembra una risposta di cui resterei soddisfatto.

    Qualche dettaglio mi pare di averlo indicato. Per il resto, se non soddisfa la risposta, mi spiace molto ma essendo che non ho firmato da nessuna parte un contratto in cui sono definiti dei livelli minimi di dettagli a cui devo sottostare, né clausole “soddisfatti o rimborsati” (in tal caso, sono disponibile al rimborso della cifra pagatami per la risposta), mi limito a indicare quello che conosco e a lasciare che sia l'autore della discussione e/o gli altri partecipanti ad approfondire con una veloce, rapida banale ricerca su Google.

    Ma proprio perché è venerdì e ho giusto un minuto di tempo da dedicare, aggiungerò qualche dettaglio in più, sperando di non essere troppo sintetico per evitarmi delle “penali”.

    L'approccio MDI è deprecabile per i seguenti motivi (non esaustivi, ma sono i primi che mi vengono in mente, e non sono in ordine di importanza):

    • Look & Feel datato: la maggior parte degli utenti potrebbe considerare la UI “superata” in ottica commerciale, appartenendo di fatto solo a software per la maggior parte obsoleto e non essendo più “in voga” già dopo il 2004 (parliamo di 20 anni); il fatto poi che l'applicazione non assomigli a nulla di già in uso da parte degli utenti, crea ulteriore disorientamento (a parte alcune app legacy molto vecchie, sono pochissime quelle che adottano MDI).
    • Gestione limitata dei documenti: la visualizzazione delle “finestre figlie” non è personalizzabile poiché i meccanismi che la gestiscono sono delegati a Windows con una API limitata che impedisce di personalizzare ad hoc il posizionamento o l'organizzazione delle finestre, salvo i meccanismi di default (es. “a cascata”, “minimizzati”, “sovrapposte”, ecc.); ad esempio, non posso decidere di passare a una visualizzazione diversa, tipo “a tab”, se non facendo salti mortali.
    • API di Windows buggate: nelle versioni più recenti di Windows, spesso si riscontrano dei difetti di visualizzazione o dei “glitch” grafici legati a bug fondamentalmente dovuti al fatto che Microsoft non aggiorna l'API di gestione delle finestre MDI per tenere conto delle “novità” che introduce a livello grafico per le finestre di primo piano; in breve, non sarebbero bug in sé, ma lo diventano in quanto l'aspetto delle finestre non è più in sincronia con quello della altre, e del resto del SO.
    • Problemi di accessibilità: per chi ha a cuore questo aspetto, molti tool in uso da persone affette da una qualche disabilità hanno difficoltà a svolgere le proprie “funzioni assistive” su finestre MDI.
    • Consumo di risorse: utilizzare finestre al posto di più comodi controlli (ossia UserControl in .NET) occupa più memoria (le finestre sono più complesse dei controlli).

    Probabilmente vi sono tanti altri motivi che al momento ignoro, ma come ho già detto, una ricerca rapida e si trova tutto questo e molto di più.
    Esistono una marea di alternative migliori, più “user friendly”, graficamente gradevoli, applicativamente gestibili.

    Allegherei qualche screenshot per far capire cosa intendo per bug e glitch grafici, ma non riesco a fare upload di immagini.

    Spero che questa risposta soddisfi gli SLA. :)

  • Re: Apertura di un form figlio di form mdi dal login

    A corredo del messaggio precedente, forse riesco ad allegare anche qualche screenshot.

  • Re: Apertura di un form figlio di form mdi dal login

    Io stavo per scrivere che è un form per win 3.1…

    Beh, il primo ostacolo lo ha trovato nel volerettere un form figlio in primo piano…

    Per fare capire: prendi un pannello (A), ci metti dentro un altro pannello (B). B prende il parent da A… la stessa cosa vale per il form (il figlio è parent del padre).

    Vuoi prendere il pannello B e metterlo al di fuori di A?

    Come vedi dalle immagini postate da alka, ridurre ad icona mostra la finestra ridotta (come se form A fosse un desktop rispetto a form B).

    Essendo un tutt'uno con A l'eseguibile si porta dietro tutte le figlie generando un unico file pesantissimo (almeno sono i ricordi dai tempi di win 95…

    Considerando che l'evoluzione informatica si sta spostando su ultrabook e tablet, l'uso fi un form contenitore di altri n form vale quanto il due di spade con la briscola a denari in una mano a coppe…

    Comunque la soluzione ti è stata data: per mettere un pannello al pari di A devi usare un pannello pari ad A, ergo, se vuoi un form non subordinato al padre devi usare un form indipendente complicandoti la vita ma a questo punto crei un planner indipendente che attinge agli stessi dati ma non interagisce col form A.

  • Re: Apertura di un form figlio di form mdi dal login

    19/04/2024 - Alka ha scritto:

    Per il resto, se non soddisfa la risposta, mi spiace molto ma essendo che non ho firmato da nessuna parte un contratto in cui sono definiti dei livelli minimi di dettagli a cui devo sottostare, né clausole “soddisfatti o rimborsati” (in tal caso, sono disponibile al rimborso della cifra pagatami per la risposta), mi limito a indicare quello che conosco e a lasciare che sia l'autore della discussione e/o gli altri partecipanti ad approfondire con una veloce, rapida banale ricerca su Google.

    Ehi calma! La mia era solo un'osservazione innocente di tipo generico. Apprezzo comunque la tua ironia. Spero che la tua esauriente serie di motivazioni sia risultata utile al richiedente. Dal mio personale punto di vista, per quel poco che possa valere, mi pare che la principale obiezione all'uso dei form MDI sia… che sono passati di moda e quindi, essendo per natura contrario alle mode, io continuo ad usarli con soddisfazione apprezzandone soprattutto due aspetti:

    • il form MDI, se si vuole, circoscrive l'area di lavoro dell'intera applicazione a una porzione dello schermo, evitando interferenze con finestre estranee all'applicazione. Anche con una struttura “a tab” si può ottenere questo risultato, ma la fase di design è più complicata non potendo visualizzare separatamente i singoli tab.
    • nel form MDI di solito è presente una toolbar e/o una barra dei menu da cui si attivano azioni relative all'intera applicazione, mentre una toolbar di una finestra figlia consente azioni solo verso quella finestra.

    Il possibile problema evidenziato nelle immagini che hai postato mi sembra che si possa evitare facilmente con le proprietà relative ai pulsanti Minimize e Maximize e al tipo di bordo o, al limite, con l'evento Resize.

    Tornando alla domanda iniziale di Zeusmax, nel caso volesse ancora usare l'approccio parent/child, non capisco per che frmPlanner non possa essere anch'esso di tipo child.

  • Re: Apertura di un form figlio di form mdi dal login

    20/04/2024 - grumpy ha scritto:


    Tornando alla domanda iniziale di Zeusmax, nel caso volesse ancora usare l'approccio parent/child, non capisco per che frmPlanner non possa essere anch'esso di tipo child.

    Perché vuole che abbia le caratteristiche del form padre… praticamente il contenuto dovrebbe essere il suo contenitore.

  • Re: Apertura di un form figlio di form mdi dal login

    20/04/2024 - sihsandrea ha scritto:


    20/04/2024 - grumpy ha scritto:


    Tornando alla domanda iniziale di Zeusmax, nel caso volesse ancora usare l'approccio parent/child, non capisco per che frmPlanner non possa essere anch'esso di tipo child.

    Perché vuole che abbia le caratteristiche del form padre… praticamente il contenuto dovrebbe essere il suo contenitore.

    Non capisco cosa intendi dire. Lasciamo che, se vuole, ce lo dica lui.

  • Re: Apertura di un form figlio di form mdi dal login

    20/04/2024 - grumpy ha scritto:


    Non capisco cosa intendi dire. Lasciamo che, se vuole, ce lo dica lui.

    Mi sembra di aver capito che lo ha detto

    19/04/2024 - Zeusmax ha scritto:


    vorrei che il form1.mdi

    apra il form frmPlanner e lo metta davanti

    il form frmPlanner viene aperto ma resta indietro

  • Re: Apertura di un form figlio di form mdi dal login

    Salve ragazzi,

    grazie di tutto , ho risolto usando “Toolstrip” 

Devi accedere o registrarti per scrivere nel forum
20 risposte