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

    [VB6] - Enable di CommandButton

    Come posso abilitare un tasto solo e solo se tutti i textbox.text e combox.text sono diversi da "" ?
    Grazie in anticipo per il vostro aiuto.
    A Lucca si mangia,si beve e si cucca.

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Puoi facilmente richiamare una routine che esamini il valore di ogni
    controllo presente nel form ad ogni digitazione da tastiera.
    Ti riporto la routine.
    codice:
    Private Sub EseguiControllo()
        Dim controllo As Control
        Dim bEnabled As Boolean
        bEnabled = True
        For Each controllo In Controls
            If TypeOf controllo Is TextBox Then
                If Trim$(controllo.Text) = "" Then bEnabled = False
            End If
            If TypeOf controllo Is ComboBox Then
                If Trim$(controllo.Text) = "" Then bEnabled = False
            End If
        Next controllo
        Command1.Enabled = bEnabled
    End Sub
    Per funzionare devi settare la proprietà KeyPreview del form su True.

    Nell'evento Form_KeyUp, richiami la routine così:
    codice:
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
        Call EseguiControllo
    End Sub
    Ovviamente devi includere la routine nel form. Potresti, con piccole
    modifiche, generalizzare la routine e inserirla in un modulo.
    Avresti bisogno, in questo caso, di passare un riferimento al form
    sul quale eseguire il controllo ed il riferimento al bottone che vuoi
    abilitare/disabilitare.

    Per evitare di portarti dietro degli oggetti ingombranti,specialmente
    se hai forms molto complessi, potresti sfuttare le collection di VB.
    Infatti ogni applicazione ha già un insieme Forms che contiene tutti
    i forms utilizzati ed ognuno di essi ha un insieme di controlli
    (Controls) che contiene tutti i controlli presenti nel form (come
    peraltro si evince dal codice che ti ho riportato).

    La routine generalizzata potrebbe essere :
    codice:
    Public Sub EseguiControllo(sFormName As String, sCommandName As String)
        Dim controllo As Control
        Dim form As form
        Dim bEnabled As Boolean
        bEnabled = True
        For Each form In Forms
            If form.Name = sFormName Then
                For Each controllo In form.Controls
                    If TypeOf controllo Is TextBox Then
                        If Trim$(controllo.Text) = "" Then bEnabled = False
                    End If
                    If TypeOf controllo Is ComboBox Then
                        If Trim$(controllo.Text) = "" Then bEnabled = False
                    End If
                Next controllo
                form.Controls(sCommandName).Enabled = bEnabled
            End If
        Next form
    End Sub
    
        ' La richiami da ogni form che desideri, sempre nell'evento 
        ' Form_KeyUp, in questo modo : 
    
        ' Me.Name rappresenta il nome del form, 
        ' Command1.Name va inteso essere NomeDelBottone.Name 
        Call EseguiControllo(Me.Name, Command1.Name)
    Ho provato entrambe le soluzioni con esito positivo.

    Ciao,
    Ciao, Brainjar

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.