View Full Version : DataGrids VB6
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
Armadillo 21-12-2007, 15:14 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?
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
Armadillo 21-12-2007, 15:22 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)
se me puderes enviar agradeço!
ric_mrq@hotmail.com
cumps
obrigado
Armadillo 21-12-2007, 15:40 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:
'...
FormataGrelhas Form1.MSHFlexGrid1, Form1
'...
Enjoy it :003:
Armadillo 21-12-2007, 15:54 No problem.:msmiley1:
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!
Armadillo 21-12-2007, 16:02 Tens a certeza que é uma msHflexgrid (a referencia é Microsoft Hierarchical FlexGrid 6.0)e nao uma msFlexgrid?
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
Armadillo 21-12-2007, 16:09 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.
ei pois é :p:p
tens razao!
Armadillo 21-12-2007, 16:13 ja ta funcando??
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?
Armadillo 21-12-2007, 16:29 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 :(
ok obrigado.
eu vou explorar melhor!
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
Armadillo 27-12-2007, 09:20 lês todos os valores de determinada coluna e vais somando.
Depois adicionas uma linha com o total.
'...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
|