1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

DataGrids VB6

Discussão em 'Programação' iniciada por ricmrq, 21 de Dezembro de 2007. (Respostas: 19; Visualizações: 1333)

  1. ricmrq

    ricmrq Power Member

    Boas malta!

    Alguem conhece alguma datagrid para o VB6 sem ser aquelas standars que o VB6 ja traz?

    e tambem queria saber se as que conhecem dao para por totais ou subtotais e agrupar campos!!

    cumps

    merry xmas :P
     
  2. Armadillo

    Armadillo Folding Member

    oi.
    a mshflexgrid do vb6 permite-te obter dados hierarquicos (daí o h em msHflexgrid).
    Em relação ao total é muito simples de o calcular em runtime e mostra-lo na mshflexgrid.

    Tens alguma necessidade/requisito em especial para o objecto?
     
  3. ricmrq

    ricmrq Power Member

    nao sei se ja utilizei esse componente mas procurava algo com um aspecto mais recente, isto porque alguns dos componentes do VB6 ja estao um pouco fracos a nivel de design

    EDIT:
    exacto! ja utilizei essa...
    queria uma com um aspecto melhorado
     
    Última edição: 21 de Dezembro de 2007
  4. Armadillo

    Armadillo Folding Member

    eu consegui por uma mshflexgrid com o aspecto da datagrid do itunes (á excepção do cabeçalho que fica na mesma com aquele aspecto de botao do win95). se quiseres depois posto a fuunção.
    se nao quiseres nenhuma "extensao" na funcionalidade da datagrid, a mshflexgrid serve mto bem (pelo menos falo por mim)
     
  5. Armadillo

    Armadillo Folding Member

    Código:
    Public Sub FormataGrelhas(Grelha As MSHFlexGrid, Formulario As Form)
    Dim i%, j%              'variaveis da formatação de cores das linhas
    
    Dim r As Long           '\
    Dim c As Long           ' \ variaveis da formatação da largura das celulas
    Dim cell_wid As Single  ' /
    Dim col_wid As Single   '/
    
    On Local Error Resume Next
    
    With Grelha    'COMEÇA FORMATAÇÃO
        .Refresh
        .Redraw = False
        DoEvents                    'começa a colorir o fundo da grid
            If .Rows < 2 Then Exit Sub 'top row is a header
                For j = 1 To .Rows - 1
                    For i = 0 To .Cols - 1
                        .Row = j
                        .Col = i
                    If j Mod 2 = 0 Then
                        .CellBackColor = &HFAF5F1   'azul claro
                    Else
                        .CellBackColor = vbWhite
                    End If
                    Next i
                Next j
            .Row = 1
            .Col = 1
    
    End With
    
    'formata espaçamento das celulas
    For c = 0 To Grelha.Cols - 1
        col_wid = 0
        For r = 0 To Grelha.Rows - 1
            cell_wid = Formulario.TextWidth(Grelha.TextMatrix(r, c))
            If col_wid < cell_wid Then col_wid = cell_wid
        Next r
        Grelha.ColWidth(c) = col_wid + 120
    Next c
    Grelha.Redraw = True
    End Sub
    
    
    colocas isto num modulo.
    Para usar esta sub, depois de preencheres a tua mshflexgrid usas esta sintaxe:
    Código:
    '...
    FormataGrelhas Form1.MSHFlexGrid1, Form1
    '...
    
    Enjoy it :003:
     
  6. ricmrq

    ricmrq Power Member

  7. Armadillo

    Armadillo Folding Member

  8. ricmrq

    ricmrq Power Member

    erro

    olha, da-me um erro na 1a linha da Sub:

    Public Sub FormataGrelhas(Grelha As MSHFlexGrid, Formulario As Form)
    erro: "User-defined type not defined"


    e eu ja tenho a flexgrid adicionada nas references!
     
  9. Armadillo

    Armadillo Folding Member

    Tens a certeza que é uma msHflexgrid (a referencia é Microsoft Hierarchical FlexGrid 6.0)e nao uma msFlexgrid?
     
  10. ricmrq

    ricmrq Power Member

    afinal nao tenho nenhuma referencia adicionada sobre as flexgrids, mas tambem nao esta na lista nem essa nem a Microsoft FlexGrid

    apesar disto ja a tenho adicionada na toolbox e é uma msFlexGrid
     
  11. Armadillo

    Armadillo Folding Member

    desculpai senhores, nao e referencia mas sim componente.
    como adicionar a mshflexgrid:
    bto dto rato sobre a toolbox->components->depois encontra um lista com varios componentes e escolhes a da msHflexgrid.
     
  12. ricmrq

    ricmrq Power Member

    ei pois é :p:p
    tens razao!
     
  13. Armadillo

    Armadillo Folding Member

    ja ta funcando??
     
  14. ricmrq

    ricmrq Power Member

    sim mas tenho que adicionar dados para ver bem o que a Sub faz.

    mas sabes se da para agrupar colunas e fazer ordenaçoes, etc?
     
  15. Armadillo

    Armadillo Folding Member

    para agrupar, tens que fazer um query SQL modificado (tens que usar a função SHAPE, procura no msdn que encontras). Procura tambem no indice do msdn por "Hierarchical FlexGrid control". encontras la mais informação detalhada.
    Em relação ás ordenações tenho outro naco de codigo pra isso mas nao o tenho comigo :(
     
  16. ricmrq

    ricmrq Power Member

    ok obrigado.

    eu vou explorar melhor!
     
  17. ricmrq

    ricmrq Power Member

    totais

    ja adicionei dados! falta agora saber como colocar totais.

    alguem sabe como colocar totais? ja andei a procura e encontrei um exemplo mas acho um pouco complicado de mais...

    cumps
     
  18. Armadillo

    Armadillo Folding Member

    lês todos os valores de determinada coluna e vais somando.
    Depois adicionas uma linha com o total.

    Código:
    '...pode ter erros...
    me.MSHFlexGrid1.Col = 2
    
    for i=0 to me.mshflexgrid1.rows-1
        Me.MSHFlexGrid1.Row = Me.MSHFlexGrid1.Row + 1
        total = total + CDbl(Me.MSHFlexGrid1.Text)
    next i
    
    
     
  19. ricmrq

    ricmrq Power Member

Partilhar esta Página