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

    Fare riferimento a tutti i controlli della form

    Ciao scusate volevo sapere qual'è il metodo piu facile per rimettere tutti i controlli di una form allo stesso colore all'interno di un evento
    Tony

  2. #2
    codice:
    On error resume next 'Non tutti i controlli potrebbero avere la proprietà backcolor
    Dim ctrl As Control
    for each ctrl in Me.Controls
    ctrl.BackColor='colore
    next
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    Piuttosto che intercettare l'errore usando un costrutto che è un vecchio retaggio del VB6, non sarebbe meglio verificare la classe di appartenenza dei controlli su cui si vuole agire e, tramite un "cast" (trattamento come classe ben determinata), accedere in sicurezza alle proprietà?

    Per esemplificare tramite codice (anche se non uso abitualmente VB.NET):

    codice:
    Dim aControl As Control
    For Each aControl In Me.Controls
      If aControl Is TextBox Then
        CType(aControl, TextBox).Text = "Hello!"
      End If
    Next
    (non ho verificato il codice con il compilatore)

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

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

  4. #4
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    ok grazie, un'ultima cosa anche se non so se è interente alla discussione:

    La situzione è questa (motlo semplicemente ridotto all'osso quello che dovrei fare):
    entrando nel form mi metto tutte le textbox a enabled, ovviamente il colore è quello di sistema.
    Ho creato un pulsante che mi rende enabled a true tutti i controlli textbox e combobox etc.. e prende il colore da me dato cioè bianco
    Il problema che il programma consente di fare diverse cose per cui posso tranquillamente chiudere il form che in questo caso lo metto a invisible.
    Quando rientro lo rimetto a enabled false ma stranamente rimane con il colore bianco, anche se effettivamente è disabilitato. Come potrei risolvere il problema? dovrebbe avere il colore che aveva quando sono entrato la prima volta a enabled false!!

    Sapete darmi una dritta?

    ps. la sintassi di prima mi dice che textbox è un tipo e non può essere utilizzata come espressione però per il resto è perfetto a quello che devo fare io! l'ho cambiato cosi:
    codice:
            Dim aControl As Control
            For Each aControl In Me.Controls
                If TypeName(aControl) = "TextBox" Or TypeName(aControl) = "ComboBox" Then
                    aControl.BackColor = SystemColors.Window
                End If
            Next
    Tony

  5. #5
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    Originariamente inviato da tony83
    ok grazie, un'ultima cosa anche se non so se è interente alla discussione:

    La situzione è questa (motlo semplicemente ridotto all'osso quello che dovrei fare):
    entrando nel form mi metto tutte le textbox a enabled, ovviamente il colore è quello di sistema.
    Ho creato un pulsante che mi rende enabled a true tutti i controlli textbox e combobox etc.. e prende il colore da me dato cioè bianco
    Il problema che il programma consente di fare diverse cose per cui posso tranquillamente chiudere il form che in questo caso lo metto a invisible.
    Quando rientro lo rimetto a enabled false ma stranamente rimane con il colore bianco, anche se effettivamente è disabilitato. Come potrei risolvere il problema? dovrebbe avere il colore che aveva quando sono entrato la prima volta a enabled false!!

    Sapete darmi una dritta?

    ps. la sintassi di prima mi dice che textbox è un tipo e non può essere utilizzata come espressione però per il resto è perfetto a quello che devo fare io! l'ho cambiato cosi:
    codice:
            Dim aControl As Control
            For Each aControl In Me.Controls
                If TypeName(aControl) = "TextBox" Or TypeName(aControl) = "ComboBox" Then
                    aControl.BackColor = SystemColors.Window
                End If
            Next
    forse ho risolto mettendolo a systemcolors.control
    Tony

  6. #6
    Utente di HTML.it L'avatar di tony83
    Registrato dal
    Feb 2005
    Messaggi
    3,179
    sfortunatamente non mi modifica il colore anche perchè era da un'altro form(principale) che operavo quindo dopo aver fatto tanti e tanti tentativi ho fatto questo ultimo:

    codice:
    Dim contatore As Short = 0
                For Each aControl In FormContratti.CustomerForm.Controls
                    If TypeName(aControl) = "TextBox" Or TypeName(aControl) = "ComboBox" Then
                        aControl.BackColor = SystemColors.Control
                        FormContratti.CustomerForm.Controls(contatore).BackColor = aControl.BackColor
                    End If
                    contatore += 1
                Next
    ...non funzionante, per poi scrivere tutti e 20 i campi a mano..
    Tony

  7. #7
    Originariamente inviato da alka
    Piuttosto che intercettare l'errore usando un costrutto che è un vecchio retaggio del VB6, non sarebbe meglio verificare la classe di appartenenza dei controlli su cui si vuole agire e, tramite un "cast" (trattamento come classe ben determinata), accedere in sicurezza alle proprietà?

    Per esemplificare tramite codice (anche se non uso abitualmente VB.NET):

    codice:
    Dim aControl As Control
    For Each aControl In Me.Controls
      If aControl Is TextBox Then
        CType(aControl, TextBox).Text = "Hello!"
      End If
    Next
    (non ho verificato il codice con il compilatore)

    Ciao!
    Pardon, non avevo notato che si trattava di VB.NET.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.