VStudio-2022 - VB - Apertura di un form (figlio) in modale

di il
9 risposte

VStudio-2022 - VB - Apertura di un form (figlio) in modale

Salve a tutti,

Provengo ed ancora utilizzo su di un PC dedicato (XP da utilizzatore quasi finale) il VB6.

Ho iniziato a studiare (libro, filmati vari) il VStudio 2022 VB da pochissimo rendendomi conto che la sintassi è al 95,7% diversa ma la logica base di utilizzo che adopero è simile.

Da un form padre (definito come avvio e tipo MDI) dove si trova il menù generale, vorrei attivare un form con proprietà in modale;

tipo il MsgBox() in cui col mouse non puoi andare al di fuori dei comandi della finestra.

Esempio pratico: da un form (padre), da un evento di un menu strip voglio attivare un form chiamato frmCalcolo (ho ancora la notazione ungherese che non se ne vuole andare).

in VB6 era (ed è)  : Load frmCalcolo  e poi frmCalcolo.Show 1 (è questo 1 che fa la differenza)

in VS2022, La riga di comando:

frmCalcolo.MdiParent.Show()

Il compilatore me la passa. In esecuzione mi da errore.

l'istruzione: frmCalcolo.Show() funziona senza problemi.

Fatto varie combinazioni e tentato di capire i vari errori.

La logica di funzionamento è quella di definire la caratteristica modale nel momento che si chiama il form cioè da padre o

quella di definirla sul form figlio una volta attivo (all'interno dell'evento form.load() ad esempio)?

Grazie della disponibità.

Saluti.

9 Risposte

  • Re: VStudio-2022 - VB - Apertura di un form (figlio) in modale

    Non ho compreso benissimo ma non ti basta il metodo

    ShowDialog()

    ?

    P.S.il 95,7%? Era ironico o lo hai misurato?

    P.P.S. devi postare nella sezione per VB.NET 

  • Re: VStudio-2022 - VB - Apertura di un form (figlio) in modale

    19/08/2023 - oregon ha scritto:


    P.P.S. devi postare nella sezione per VB.NET 

    Ci ho pensato io, l'ho spostato.

  • Re: VStudio-2022 - VB - Apertura di un form (figlio) in modale

    Salve,
    provengo da VB3 con tutti i passaggi successivi... E: la mitica Deborah Kurata, negli anni 90, scriveva che "una classe e' il blue print da utilizzare", mia traduzione da Visual Basic Journal degli anni 90... ci ho messo un po' a capire cosa fosse un "blue print", perche' in italiano non ha molto senso... ma quando vidi in un film americano un "progetto edile", vidi che da loro le planimetrie, a quanto pare, sono su foglio blu con matita bianca... ecco il "blue print"...

    ora, VB Classic (perdona l'eufemismo) ti ha sempre risparmiato, per le form, il fatto di dover utilizzare "il progetto", quindi scrivevi tranquillamente
    FormPrincipale.Show

    MA, e questo e' il concetto vero, cosa avresti invece dovuto fare, e' l'istanziamento di un oggeto di tipo FormXXX.vb, quindi

    Dim myFrmInstance As FrmXXXX
    Set myFrmInstance = New FrmXXXX
    With myFrmInstance
        .Stuff() = ...
        .Show vbModal, Me
    End With
    Unload myFrmInstance
    Set myFrmInstance = Nothing
    

    salutoni romagnoli
    – 
    Andrea

  • Re: VStudio-2022 - VB - Apertura di un form (figlio) in modale

    19/08/2023 - asql ha scritto:


       .Show vbModal, Me

    No, questa è una sintassi VB6. Come diceva Oregon una finestra modale si apre con ShowDialog().

  • Re: VStudio-2022 - VB - Apertura di un form (figlio) in modale

    20/08/2023 - grumpy ha scritto:


    No, questa è una sintassi VB6. Come diceva Oregon una finestra modale si apre con ShowDialog().

    Credo che l'utente volesse esprimere in linguaggio VB6 ciò che il programmatore avrebbe dovuto scrivere a suo tempo se VB fosse stato “orientato agli oggetti”.

  • Re: VStudio-2022 - VB - Apertura di un form (figlio) in modale

    Se è così ritiro l'obiezione, ma allora l'indicazione fornita non mi sembra molto utile .

  • Re: VStudio-2022 - VB - Apertura di un form (figlio) in modale

    20/08/2023 - grumpy ha scritto:


    Se è così ritiro l'obiezione, ma allora l'indicazione fornita non mi sembra molto utile .

    In pratica, ritiri l'obiezione per sostituirla con una nuova, che tra l'altro non è molto diversa dalla prima. :)

    L'obiettivo che ho inteso io leggendo il messaggio è quello di sottolineare qual è la differenza nella gestione del Form come avrebbe dovuto essere, spiegando il concetto di “blueprint” impersonato dalla classe, che è uno dei concetti più ignorati (per esperienza personale in più di 20 anni di forum posso dirlo tranquillamente) da chi passa da linguaggi come VBA/VB6 a VB.NET o a qualsivoglia linguaggio basato su OOP, sottolineando qual era la facilitazione e qual è invece lo “stato delle cose”.

    In questi termini, ritengo la chiarificazione molto utile.

    Se poi si vogliono fare delle aggiunte con ulteriori approfondimenti, ciascuno credo sia libero di farlo.

    Da un po' di tempo a questa parte, come impressione e parere del tutto personale, si preferisce scrivere per sottolineare i deficit di chi risponde piuttosto che riprendere ed estendere i concetti.

  • Re: VStudio-2022 - VB - Apertura di un form (figlio) in modale

    Salve a tutti,

    grazie @Alka, hai ben compreso il senso del mio post.

    salutoni romagnoli
    – 
    Andrea

  • Re: VStudio-2022 - VB - Apertura di un form (figlio) in modale

    Salve,

    ringrazio della disponibilità di tutti.

    Preciso: Il 95,5% è molto ironico; d'ora in poi i miei interventi saranno unicamente diretti su VB.NET visto che intendo approfondire la conoscenza di VS2022 x VB; non è mia intenzione fomentare ne discussioni e/o conflitti interni;

    Semplicemente ho un problema; finchè non lo risolvo ho un piano B: niente form base MDI nè chiamate in modale; solo un form di lancio con un menù e ogni volta che chiamo un form metto in Hide il base (ne apro sempre uno alla volta). Quando ho finito, chiudo quello in uso e faccio riapparire quello base.

    Non è elegante, ortodosso, teoricamente corretto ma per quello che serve a me funziona.

    Nel frattempo continua nella rice3rca di una soluzione pratica e semplice (a prova di tonto) del problema. 

     Grazie a tutti.

Devi accedere o registrarti per scrivere nel forum
9 risposte