2 LINHAS NO MSFLEXGRID

 Tópico anterior Próximo tópico Novo tópico

2 LINHAS NO MSFLEXGRID

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#496597 - 30/03/2021 18:59:31

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Pessoal alguém sabe se é possível colocar 2 linhas dentro de uma mesma célula no msglexgrid ?
A minha idéia seria montar um cabeçalho e nesse cabeçalho colocar algumas colunas com 2 linhas

Algo assim

--------------------------------------------------------------------------
Cod.Item  descricao  quant  data Venc 1  data venc 2
                                             quant              quant  
-------------------------------------------------------------------------

Tentei de algumas formas e não consegui, tenho uma idéia agora que seria simular uma segunda linha, más queria saber se de forma direta tem como fazer isso

Agradeço desde já a ajuda de todos

Teoria quando se sabe tudo, e nada funciona. Prtica e quando tudo funciona e ningum sabe porque.
[]Aquele que quer aprender gosta que lhe digam quando esta errado;
s o tolo no gosta de ser corrigido -[]Prov.12:1


#496599 - 30/03/2021 19:56:13

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


www.vbforums.com/showthread.php?890857-Need-help-to-create-this-control-(some-sort-of-node-cell)&p=5513787&viewfull=1#post5513787

Alvaro ... será que este controle não serviria?

____________________________________________________________________
Episcopal Studios


#496623 - 01/04/2021 14:56:24

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Agradeço pela resposta

Eu já tinha visto esse grid, más não era bem esse.
O grande problema que eu tinha era criar 2 linhas para o cabeçalho, más eu acabei resolvendo com o próprio msflexgrid

Eu fui ver com mais calma e vi que dava para colocar uma segunda coluna no próprio Msflexgrid, só que o que muda era ter que continuar a contagem do textarray
Ficou assim o esquema

O que eu precisava fazer era exibir no cabeçalho o número da nota em uma linha e na outra linha a data de entrada da nf e no grid exibir a quantidade de determinado item que entrou pela nota, caso tenha entrado
Nesse caso pode variar o tamanho do cabeçalho pois irá depender de quantas notas serão exibidas

Private Sub PreencheGridItens()
    'pegar somente a qte de notas lançadas
    StrSql = 'select count(distinct(nf.CodNf)) '
    StrSql = StrSql & 'From nf '
    StrSql = StrSql & 'left join nfxitens nfi on nfi.codnf = nf.CodNf '
    StrSql = StrSql & 'Where nfi.codpedidocompra = ' & NPedidoSelecionado
    
    Set Rs = New ADODB.Recordset
    Rs.Open StrSql, Db, adOpenKeyset, adLockPessimistic
    
    GridItem.Clear
    GridItem.Rows = 2
    GridItem.Cols = 4 + Rs(0) + 1

    GridItem.TextArray(0) = Space(2) & 'Cód.Item'
    GridItem.TextArray(1) = Space(40) & 'Descrição'
    GridItem.TextArray(2) = 'Qte Pedido'
    GridItem.TextArray(3) = Space(5) & 'Unid.'
    Dim I As Single
    '-1 título
    For I = 4 To Rs(0) + 4 - 1
        GridItem.TextArray(I) = ''
        GridItem.ColWidth(I) = 1200
    Next
    GridItem.TextArray(I) = Space(5) & 'Saldo'
    
    GridItem.ColWidth(0) = 1000
    GridItem.ColWidth(1) = 4500
    GridItem.ColWidth(2) = 1000
    GridItem.ColWidth(3) = 1000

    For I = 1 To FrmOrdemCompra.GridProduto.Rows - 1
        With FrmOrdemCompra.GridProduto
            GridItem.AddItem .TextMatrix(I, 0) & Chr(9) & .TextMatrix(I, 1) & Chr(9) & .TextMatrix(I, 2) & Chr(9) & .TextMatrix(I, 3) & Chr(9) & '' & Chr(9) & '' & Chr(9) & .TextMatrix(I, 10)
            '-1 pq começa do 0
            GridItem.TextMatrix(GridItem.Rows - 1, GridItem.Cols - 1) = .TextMatrix(I, 10)
        End With
    Next
    
        StrSql = 'select nf.NNotaFiscal,nf.DataEntrada,'
        StrSql = StrSql & 'nfi.coditem,nfi.qteentregue '
        StrSql = StrSql & 'from nfxitens nfi '
        StrSql = StrSql & 'inner join nf on nf.CodNf = nfi.codnf '
        StrSql = StrSql & 'Where nfi.codpedidocompra = ' & NPedidoSelecionado
    
    Set Rs = New ADODB.Recordset
    Rs.Open StrSql, Db, adOpenKeyset, adLockPessimistic
    Dim NNotaSelecionada As Double
    Dim Coluna As Single
    Dim Coluna2 As Single
    Dim Cabecalho As String
    
    NNotaSelecionada = 0
    Coluna = 3
    Coluna2 = Coluna + GridItem.Cols
    While Not Rs.EOF
        If NNotaSelecionada <> Rs(0) Then
            NNotaSelecionada = Rs(0)
            Coluna = Coluna + 1
            Coluna2 = Coluna2 + 1
            GridItem.TextArray(Coluna) = Space(10 - Len(NNotaSelecionada)) & 'NF: ' & NNotaSelecionada
            GridItem.TextArray(Coluna2) = Space(3) & Rs!dataentrada
        Else
            For I = 0 To GridItem.Rows - 1
                If GridItem.TextMatrix(I, 0) = Rs!coditem Then
                    GridItem.TextMatrix(I, Coluna) = Rs!qteentregue
                    Exit For
                End If
            Next
            Rs.MoveNext
        End If
    Wend
End Sub


Teoria quando se sabe tudo, e nada funciona. Prtica e quando tudo funciona e ningum sabe porque.
[]Aquele que quer aprender gosta que lhe digam quando esta errado;
s o tolo no gosta de ser corrigido -[]Prov.12:1


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por ALVAROVB2009 em 06/04/2021 12:16:44