Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    <GESTIONE FORM> Sostituzione operatore me

    Scusate qual'è la sintassi che sostituisce il me, per recuperare l'istanzia dell'oggetto?

    Non posso usare il me, perchè il form principale non è aperto in quel momento..
    Tony

  2. #2
    .NET?

  3. #3
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    Originariamente inviato da Luciano79
    .NET?
    yes
    Tony

  4. #4
    se si tratta del 2003 devi ragionare a classi
    codice:
    Dim AltraForm As New Form2
    MsgBox(AltraForm.Text)
    AltraForm=Nothing
    Dal 2005 si ragiona come col VB6, direttamente col nome della form
    codice:
    MsgBox(Form2.Text)

  5. #5
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179

    operatore me e this...

    mi spiego meglio..

    dato questo codice

    Sub apriFrm_film()
    If pr_frm_film Is Nothing Then
    pr_frm_film = New frm_film()
    pr_frm_film.MdiParent = me
    End If
    pr_frm_film.Show()
    pr_frm_film.Focus()
    End Sub

    devo sostituire il me con..... il form frm_index di cui ho istanziato cosi

    dim obj_frm_index as new frm_index

    ma facendo cosi:

    Sub apriFrm_film()
    If pr_frm_film Is Nothing Then
    pr_frm_film = New frm_film()
    pr_frm_film.MdiParent = obj_frm_index
    End If
    pr_frm_film.Show()
    pr_frm_film.Focus()
    End Sub

    non funziona :master:
    Tony

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da tony83
    non funziona
    Cosa significa "non funziona"?? Spiega... :rollo:

    P.S.: per quanto riguarda l'approccio "a-la-VB6", io eviterei di usarlo se possibile, privilegiando l'uso della classe (che poi è ciò che avviene dietro le quinte quando si adopera la classe in quel modo).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Originariamente inviato da alka
    P.S.: per quanto riguarda l'approccio "a-la-VB6", io eviterei di usarlo se possibile, privilegiando l'uso della classe (che poi è ciò che avviene dietro le quinte quando si adopera la classe in quel modo).
    Ciao, ma è solo per una questione di "forma" o altro?
    Jupy

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da Jupy64
    Ciao, ma è solo per una questione di "forma" o altro?
    La questione è che, essendo VB.NET un linguaggio orientato agli oggetti, si dovrebbe avere la cura e l'impegno di carpirne il funzionamento secondo quest'ottica, limitando l'uso di espedienti come questo che potrebbero generare confusione e sono introdotti al solo scopo di "ammorbidire" il passaggio da VB6 a VB.NET.

    In un linguaggio orientato agli oggetti, trovare la chiamata ad un metodo di istanza che segue l'identificatore di una classe non è proprio una cosa comune.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    errore durante la creazione dell'handle!
    Tony

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Avrai senz'altro attribuito qualche impostazione errata ad uno o entrambi i due form che entra in conflitto con il meccanismo MDI.

    Io ho creato un nuovo progetto, ho inserito due form, ho impostato la proprietà IsMdiContainer a True nel principale e aggiunto questo codice da eseguire alla pressione di un pulsante:

    codice:
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim frm As New ChildForm
            frm.MdiParent = Me
            frm.Show()
        End Sub
    Il codice funziona perfettamente: crea un'istanza del form e la visualizza all'interno del contenitore. Premendo ripetutamente il pulsante, essendo presente un'istruzione New, viene creata ogni volta una nuova istanza della classe; ci saranno, quindi, tanti form quante sono le volte che il pulsante viene premuto, e ciascun form si comporterà così come definito nel codice della classe che lo rappresenta e che ne definisce inoltre le caratteristiche (aspetto, posizione, ecc.).

    Usando la scrittura simile a VB6, viene creata automaticamente un'istanza del form e si lavora sempre su quella implicitamente:

    codice:
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ChildForm.MdiParent = Me
            ChildForm.Show()
        End Sub
    Ecco perché è importante avere ben presente la differenza nelle due scritture, e conviene utilizzare la prima forma in modo da abituarsi al metodo di lavoro imposto dal .NET Framework, evitando poi di trovarsi in difficoltà non appena si incontra un blocco di codice che tratta le classi "come si deve".

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.