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

    [VB6] Posizionare pulsante su una datagrid

    Ho creato un pulsante e una combo e tramite il codice li posiziono nella datagrid

    Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
    Dim colonnacombo As Integer

    Note.Visible = True
    ' imposto larghezza combo
    Note.Width = 600 'DataGrid1.Columns("Note").Width
    'imposto posizione sinistra combo
    Note.Left = DataGrid1.Columns(1).Left + 150
    ' imposto posizione top combo
    Note.Top = DataGrid1.Top + 50 + DataGrid1.RowHeight + (DataGrid1.Row * DataGrid1.RowHeight)
    Note.Height = DataGrid1.RowHeight

    colonnacombo = 2
    If DataGrid1.col = colonnacombo Then
    DataGrid2.Visible = True
    DataGrid2.Left = DataGrid1.Columns(2).Left + 150
    DataGrid2.Top = DataGrid1.Top + 10 + DataGrid1.RowHeight + (DataGrid1.Row * DataGrid1.RowHeight)
    Else
    DataGrid2.Visible = False
    End If

    End Sub

    Tutto funziona solo che ho questo problema.
    Se mi sposto con la barra di scorrimento il pulsante "Note" non rimane fermo nella colonna in cui l'ho impostato,a tende a scorrerre ed essere sempre visualizzato nella parte sinistra.
    Lo stesso vale per la combo, se ci clicco lei sposta la proprietà a .visible = True, se a questo punto mi sposto con la barra anche lei mi segue andando sopra le altre caselle della datagrid

    C'è un modo per ancorarli solo a quella colonna e basta????

    Ciao e grazieeeeeeeee

  2. #2
    Ti condsiglio di creare una funzione Movecombo così

    Private Sub movecombo()
    On Error GoTo error_handler
    Dim gcol As MSDataGridLib.Column
    Set gcol = DataGrid1.Columns(DataGrid1.Col)

    If gcol.Caption = "la tua colonna" And DataGrid1.CurrentCellVisible Then
    Combo1.Move DataGrid1.Left + gcol.Left + 10, DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + 10, gcol.Width - 5
    Combo1.ZOrder
    Combo1.SetFocus
    Combo1.Text = gcol.Text
    Exit Sub
    End If
    error_handler:
    Combo1.Move -10000
    If DataGrid1.Visible Then DataGrid1.SetFocus
    End Sub

    Questa funzione la fai chiamare ad ogni evento del datagrid quale:

    Private Sub DataGrid1_ColResize(ByVal ColIndex As Integer, Cancel As Integer)
    movecombo
    End Sub

    Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
    movecombo
    End Sub

    Private Sub DataGrid1_RowResize(Cancel As Integer)
    movecombo
    End Sub

    Private Sub DataGrid1_Scroll(Cancel As Integer)
    movecombo
    End Sub

    Private Sub DataGrid1_SplitChange()
    movecombo
    End Sub

    Cos' dovresti non aver problemi con il COmbobox per ogni situazione di variazione del datagrid. Cmq puoi mappare anche altri eventi aggiungendo il solo richiamo alla funzione movecombo

  3. #3

    Ok

    Ok provo e ti faccio sapere

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.