+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

Immagine in datagridview da ridimensionare

  1. #1
    SanzWeb non  in linea Novello
    Ciao A tutti del Forum.

    Ho una richiesta legata alla esposizione dei dati mediante datagridview.

    Devo Caricare i dati delle commesse cliente da database dove esiste anche un campo Blob che contiene l'immagine del pezzo da lavorare. Utilizzo Datasource.

    Se lascio fare tutto al controllo mi carica i dati correttamente immagine compresa ma ovviamente quest'ultima risulta schiacciata con altezza riga standard.

    Caricando la datagridview l'immagine si trova alla colonna 14.

    Esiste un modo per far si che solo in quella colonna le celle devono fare lo Stretch del contenuto (nel caso immagine) per adattarla a righe alte x e larghe y?
    Spero di essermi espresso cristianamente

    Ho provato ad usare:

    dgcommesse.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
    dgcommesse.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
    
    ma allarga ovviamente tutto tenendo conto della grandezza effettiva dell'immagine inserita.

    Magari settare le righe alte 80 (per tutta la gridview) e nella colonna dell'immagine far si che il contenuto si adattasse alla cella. (dgcommesse.RowTemplate.Height = 80)


    Allego codice usato:

    Private Sub CaricaCommesse()
            Dim SDA As New MySqlDataAdapter
            Dim dbdataset As New DataTable
            Dim bsource As New BindingSource
    
            
            Try
                Using myconn As New MySqlConnection(stringaConn)
                    myconn.Open()
                    Dim query As String
                    query = "Select * from commesserm"
                    cmd = New MySqlCommand(query, myconn)
    
                    SDA.SelectCommand = cmd
                    SDA.Fill(dbdataset)
                    bsource.DataSource = dbdataset
                    dgcommesse.DataSource = bsource
                    SDA.Update(dbdataset)
                    myconn.Close()
                End Using
    
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Errore recupero dati Commesse")
                Exit Sub
            End Try
    
            dgcommesse.RowTemplate.Height = 100
            dgcommesse.GridColor = Color.BlueViolet
            dgcommesse.BackgroundColor = Color.LightGray
            dgcommesse.ColumnHeadersDefaultCellStyle.BackColor = Color.DarkTurquoise
           
           dgcommesse.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
            dgcommesse.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
    
            With dgcommesse
                .Columns("codicecom").HeaderText = "Cod. Commessa"
    
                .Columns("cliente").HeaderText = "Cliente"
                .Columns("telefono").HeaderText = "Telefono"
                .Columns("data_commessa").HeaderText = "Data Commessa"
                .Columns("data_consegna").HeaderText = "Data Consegna"
                .Columns("riferimento").HeaderText = "Riferimento"
                .Columns("stato_commessa").HeaderText = "Stato"
                .Columns("descrizione").HeaderText = "Descrizione"
                .Columns("operatore").HeaderText = "Operatore"
                .Columns("preventivo").HeaderText = "Preventivo"
                .Columns("avviso").HeaderText = "Avvisato S/N"
                .Columns("data_avviso").HeaderText = "Data Avviso"
                .Columns("ora_avviso").HeaderText = "Ora Avviso"
                .Columns("avvisatoda").HeaderText = "Avvisato da"
                .Columns("foto").HeaderText = "Foto"
                .Columns("note").HeaderText = "Note"
    
                .Columns(0).Visible = False
    
            End With
    
        End Sub
    
    Non so se permesso nel forum, ma carico anche immagine di come mi viene restituita la grid per avere un esempio visivo.




    Ringrazio per i suggerimenti che riuscirete a darmi.

    Sanzweb

  2. #2
    Hai provato ad impostare la propriet ImageLayout della DataGridViewImageColumn su Stretch ?
    ℹ️ Leggi di pi su Fix ...

  3. #3
    SanzWeb non  in linea Novello
    Cia Fix...grazie della risposta.

    con la tua "imbeccata" mi sono poi autorisposto...non si pu prescindere dalla creazione di una istanza di una DataGridViewImageColumn(). Ho corretto cos e sembra funzionare:

    Using myconn As New MySqlConnection(stringaConn)
                    myconn.Open()
                    Dim query As String
                    query = "Select * from commesserm"
                    cmd = New MySqlCommand(query, myconn)
    
                    SDA.SelectCommand = cmd
    
                    dgcommesse.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
                    dgcommesse.RowTemplate.Height = 100
    
                    SDA.Fill(dbdataset)
                    bsource.DataSource = dbdataset
                    dgcommesse.DataSource = bsource
    
                    Dim Imgc As New DataGridViewImageColumn()
    
                    Imgc = dgcommesse.Columns(15)
    
                    Imgc.ImageLayout = DataGridViewImageCellLayout.Stretch
                    cmd.Dispose()
    
                    myconn.Close()
                End Using
    
    Sembra importante poi anche il fatto di fare le modifiche alle celle prima di caricare i dati altrimenti genera errori di Cast.

    Grazie
    Ultima modifica di SanzWeb; 19-05-2021 13:18 

  4. #4
    Eventualmente esiste anche l'evento DataGridView.ColumnAdded per gestire la manipolazione delle colonne aggiunte alla DataGridView.

    Tramite l'oggetto "e" puoi risalire alla colonna aggiunta, quindi verificarne l'indice ed eseguire le impostazioni che ti interessano.

    La modifica basta farla sull'intera colonna nel momento in cui viene creata/aggiunta non su ogni query.
    ℹ️ Leggi di pi su Fix ...

  5. #5
    SanzWeb non  in linea Novello
    Grazie Fix per la risposta... Ti chiedo sempre con cortesia se puoi dirmi il perch mi da errore un errore di questo tipo:

    "impossibile eseguire il cast di oggetti di tipo: system.windows.forms.DataGridViewtextTextBoxColumn sul tipo system.windows.forms.DataGridViewImageColumn"

    immagino si riferisca alle righe:

    Dim Imgc As New DataGridViewImageColumn()
     
                    Imgc = dgcommesse.Columns(15)
     
                    Imgc.ImageLayout = DataGridViewImageCellLayout.Stretch
                    cmd.Dispose()
    
    Grazie Ancora
    SanzWeb

  6. #6
    Devi specificare in quale evento/metodo stai usando quel codice.

    L’errore chiaro, stai cercando di assegnare un oggetto TextBoxColumn ad un oggetto ImageColumn.

    Nello specifico, dgcommesse.Columns(15) non una colonna ImageColumn.

    Comunque non necessario creare un nuovo oggetto per assegnargli il riferimento di un altro, basta dichiarare :
    Dim Imgc As DataGridViewImageColumn = DirectCast(dgcommesse.Columns(15), DataGridViewImageColumn)
    
    Oppure direttamente
    DirectCast(dgcommesse.Columns(15), DataGridViewImageColumn).ImageLayout = DataGridViewImageCellLayout.Stretch
    
    Sei sicuro che, in quel dato momento, quella colonna sia una colonna di tipo ImageColumn ?
    ℹ️ Leggi di pi su Fix ...

  7. #7
    SanzWeb non  in linea Novello
    Ciao Fix....si la 15 la colonna che carica le immagini (contando indice da 0). E' una datagridview che legata ad un datasource e la sua struttura sempre quella.

    Provo ad applicare i tuoi suggerimenti....grazie per l'ennesima volta :-)

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Ridimensionare grandezza di un file immagine
    Da CESABAS nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 08-05-2015, 10:08
  2. Ridimensionare immagine in datagrid
    Da basicdany nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 03-11-2013, 23:28
  3. Ridimensionare un'immagine
    Da meccallous nel forum Visual Basic 6
    Risposte: 9
    Ultimo Post: 19-05-2007, 10:44
  4. Ridimensionare immagine
    Da lucagfc nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 01-08-2006, 09:43
  5. [VB5] Ridimensionare un'immagine
    Da vrclaudio nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 08-11-2005, 18:41