Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492

    [VB6] Bloccare alcune celle di un DataGrid

    Salve a tutti
    ho usato un DataGrid per inserire alcuni record. Questo DataGrid ha 3 colonne, 2 delle quali bloccate, quindi non editabili, solo nell'ultima colonna posso inserire dei valori.
    Quel che mi interesserebbe fare è di poter bloccare anche l'ultima cella della terza colonna nel momento in cui premo invio per salvare, ma permettendomi però di inserire i dati nella riga successiva, che a sua volta verrà bloccata quando inserito altro valore e così via.
    Come posso fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Puoi usare questo evento per le variazioni sui record esistenti:

    codice:
    Private Sub DataGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, Cancel As Integer)
    'attenzione a index (parte da 0 la numerazione) se la colonna è la terza che possono variare allora imposti 2
           if ColIndex <> 2 then        
                Cancel = 1
                Exit Sub
            End If
    
    End Sub
    eventualmente se vuoi controllare gli inserimenti utilizzi l'evento:

    codice:
    Private Sub DataGrid1_BeforeInsert(Cancel As Integer)
        If MsgBox("Confermi inserimento?", vbQuestion + vbYesNo, "Uscita") = vbNo Then
            Cancel = 1
        Else
            ok = True
        End If
    End Sub
    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    Grazie per il suggerimento... però non fa quel che avevo intenzione di fare...
    A me interessa poter per ogni riga del datagrid, bloccare, non rendere più editabile, l'unico campo nel quale posso inserire il valore, ma nel momento in cui premo INVIO, al nuovo record è possibile inserire il valore in quel campo, ma in tutti i precedenti lasciarli sempre bloccati.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Per le colonne che devono essere sempre bloccate puoi usare nel momento che carichi la griglia:

    codice:
    For Each MyCol In FrmHelp.GrdHelp.Columns
            If Y% = 2 Then Exit For
    'disabiliti tutte le colonne esclusa la terza
            MyCol.Enabled = False
            Y% = Y% + 1
    Next
    Che io sappia, non ci sono eventi che bloccano/sbloccano righe,colonne per la terza puoi usare (sempre):

    codice:
    Private Sub DataGrid1_BeforeColUpdate(ByVal ColIndex As Integer, OldValue As Variant, Cancel As Integer)
     
        Cancel = 1
    
    End Sub
    In questo modo non permetti nessuna variazione sui record esistenti.
    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    492
    Le prime due colonne le avevo già bloccate.
    Per quanto riguarda la seconda parte del codice che mi hai scritto, fa in modo che dopo che ho critto nella terza colonna della riga corrente e poi preme invio, mi cancella tutto e non mi salva niente , mentre invece vorrei che mi fa salvare e mi blocca solo la terza colonna di quel record e mi fa passare a quello successivo dove ci posso andare a scrivere

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.