Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Varibili in una FOrm con UserControl

    Ciao a tutti, ho questo problemino, vorrei definire delle variabili all'apertura di una form, la quale contiene (una alla volta) diversi UserControl.
    La finestra in questione serve per modificare le Opzioni del progetto, quindi per intenderci la finestra classica di 'Opzioni' presente nel 99% dei programmi al mondo!

    Le Opzioni sono quindi contenute in un file setting!
    Per evitare che ogni Opzione cambi appena modificata, ho pensato di abbinare in apertura ogni opzione a delle variabili, poi ogni oggetto presente nelle varie pagine (usercontrol) le potranno modificare, poi avranno effetto nel momento in cui verranno salvate nuovamente nel file setting quando viene premuto il bottone OK della form in questione.

    Spero di essere stato chiaro, poichè qualsiasi altro metodo per fare quello che sto facendo è molto ben gradito!

    Torno al mio problema!

    All'apertura della Form, all'interno della Class ho inserito:
    codice:
    Public Class FormOpzioni
        '
        'Creazione Variabili per il Setting
        '
        Protected Shared OPZIONE_NomeSocieta As String
        Protected Shared OPZIONE_NomeSocietaBreve As String
        Protected Shared OPZIONE_NomeSocietaFont As System.Drawing.Font
        Protected Shared OPZIONE_LogoSocieta As String
        Protected Shared OPZIONE_LimiteGiovanile As Integer
    ....
    ma poi se richiamo la ognuna della sopraindicate variabili mi dice che NON è DICHIARATA!

    Grazie!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: Varibili in una FOrm con UserControl

    Originariamente inviato da lelo
    All'apertura della Form, all'interno della Class ho inserito:
    [...]
    ma poi se richiamo la ognuna della sopraindicate variabili mi dice che NON è DICHIARATA!
    Per quale motivo le hai dichiarate Protected?
    Conosci il significato della parola chiave?

    Se non hai la padronanza completa delle parole chiave del linguaggio e le utilizzi senza conoscerne gli effetti, difficilmente otterrai qualcosa che funziona.

    A parte tutto, io creerei una classe separata, che contenga le opzioni, accessibili a tutte le altre classi del progetto senza dover creare istanze della classe, quindi Shared, senza incorporarle direttamente nel form che le modifica, che dovrebbe solamente contenere il necessario per supportare il funzionamento della maschera di modifica in quanto tale.

    Ad ogni classe, il proprio compito...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    In effetti mi sono sbagliato, guardando la guida definisce:
    Protected: Specifica che uno o più elementi di programmazione dichiarati sono accessibili solo dall'interno delle rispettive classi o da una classe derivata.

    e la chiave + corretta credo sia: :maLOL:
    Public .
    Cmq mi serve che le variabili abbiano validità solo nella finestra FormOpzioni.

    Mi ero fatto confondere che per utilizzare la variabile dovevo prefissare col nome della class, cioè:
    FormOpzioni .OPZIONE_....

    vabbè!!!

    A parte tutto, io creerei una classe separata, che contenga le opzioni, accessibili a tutte le altre classi del progetto senza dover creare istanze della classe, quindi Shared, senza incorporarle direttamente nel form che le modifica, che dovrebbe solamente contenere il necessario per supportare il funzionamento della maschera di modifica in quanto tale.
    Non mi è chiaro subito come fare...per me è la prima esperienza in Vb.net. Capisco abbastanza da esempi...se hai pillole (di saggezza) da segnalarmi...MOLTO BENE, altrimenti ci provo da solo poi al massimo POSTO!!!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da lelo
    In effetti mi sono sbagliato, guardando la guida definisce [...]
    Infatti, non ho scritto la soluzione in quanto immaginavo che, con poco sforzo, saresti giunto all'errore.

    Originariamente inviato da lelo
    Cmq mi serve che le variabili abbiano validità solo nella finestra FormOpzioni.
    Se hanno validità solo nella finestra delle opzioni, come è possibile che le altre finestre, o pagine che dir si voglia, possano accedere a tali impostazioni?

    Originariamente inviato da lelo
    Mi ero fatto confondere che per utilizzare la variabile dovevo prefissare col nome della class, cioè:
    FormOpzioni .OPZIONE_....
    Quando le variabili appartengono ad una classe, è necessario riferirsi ad esse usando il nome della classe, il punto (.) e a seguire il nome della variabile, quindi la scrittura è giusta.

    Originariamente inviato da lelo
    Non mi è chiaro subito come fare...per me è la prima esperienza in Vb.net. Capisco abbastanza da esempi...se hai pillole (di saggezza) da segnalarmi...MOLTO BENE, altrimenti ci provo da solo poi al massimo POSTO!!!
    Se il tuo problema è quello di costruire una classe per contenere le impostazioni dell'applicazione in modo che tutti i form possano accedervi per sapere come comportarsi, ti basta creare una nuova classe all'interno di un file esistente o di un nuovo file e inserire al suo interno le variabili che conterranno i valori, rendendole Shared se vuoi poterle utilizzare senza dover necessariamente creare un'istanza della classe:

    codice:
    Public Class MyPreferences
        Public Shared MyIntegerSetting As Integer
        Public Shared MyStringSetting As String
        ' ...
    End Class
    In qualsiasi punto della tua applicazione potrai scrivere MyPreferences.MyIntegerSetting (sostituendo gli identificatori con nomi opportuni) per accedere in lettura o scrittura al valore della variabile stessa che sarà identico per tutte le classi (memorizzato in una locazione unica creata nel momento in cui la classe viene caricata, in quanto Shared).

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

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

  5. #5
    Se hanno validità solo nella finestra delle opzioni, come è possibile che le altre finestre, o pagine che dir si voglia, possano accedere a tali impostazioni?
    Uso direttamente quello che arriva dal setting:
    Global.......Default.StingaSetting

    Infatti nel mio progetto, se e quando mi serve prendo direttamente il valore nel suddetto modo.

    Al momento ho fatto:
    codice:
    Public Class FormOpzioni
        '
        'Creazione Variabili per il Setting
        '
        Public Shared OPZIONE_NomeSocieta As String = Global.Scouting_Notes.ScoutingNotes.Default.NomeSocieta
        Public Shared OPZIONE_NomeSocietaBreve As String = Global.Scouting_Notes.ScoutingNotes.Default.NomeSocietaBreve
        Public Shared OPZIONE_NomeSocietaFont As System.Drawing.Font = Global.Scouting_Notes.ScoutingNotes.Default.NomeSocietaFont
        Public Shared OPZIONE_LogoSocieta As String = Global.Scouting_Notes.ScoutingNotes.Default.LogoSocieta
        Public Shared OPZIONE_LimiteGiovanile As Integer = Global.Scouting_Notes.ScoutingNotes.Default.LimiteGiovanile
    poi nei vari modi che esistono per modificarla la riassegno al nuovo valore.

    poi all'evento di Click del bottone OK:
    codice:
            Private Sub ButtonSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSalva.Click
            '
            'Aggiorna i Settaggi con i valori assegnatigli
            '
            Global.Scouting_Notes.ScoutingNotes.Default.NomeSocieta = OPZIONE_NomeSocieta
            Global.Scouting_Notes.ScoutingNotes.Default.NomeSocietaBreve = OPZIONE_NomeSocietaBreve
            Global.Scouting_Notes.ScoutingNotes.Default.NomeSocietaFont = OPZIONE_NomeSocietaFont
            Global.Scouting_Notes.ScoutingNotes.Default.LogoSocieta = OPZIONE_LogoSocieta
            Global.Scouting_Notes.ScoutingNotes.Default.LimiteGiovanile = OPZIONE_LimiteGiovanile
            '
            'Salva i settaggi
            '
            Global.Scouting_Notes.ScoutingNotes.Default.Save()
            '
            'Chiude Finestra
            '
            Me.Close()
        End Sub

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.