Ir para conteúdo
Fórum Script Brasil
  • 0

MsHflexGrid


Macêdo

Pergunta

Pessoal estou carregando um MsHflex do jeito que sempre fiz com o DatGrid, assim:

Private Sub preenche_Hflex()

With cmd
    .ActiveConnection = cnn
    .CommandType = adCmdText
    .CommandText = "select cod, nome, categoria, status from produto"
    Set rs = .Execute
End With
With rs
    Set HFlex.DataSource = rs
    HFlex.ColWidth(0) = 400
    HFlex.ColWidth(1) = 600
    HFlex.ColWidth(2) = 2800
    HFlex.ColWidth(3) = 1500
    HFlex.ColWidth(4) = 1500
    HFlex.TextMatrix(0, 1) = "Cod"
    HFlex.TextMatrix(0, 2) = "Filme"
    HFlex.TextMatrix(0, 3) = "Categoría"
    HFlex.TextMatrix(0, 4) = "Status"
    HFlex.SelectionMode = flexSelectionByRow
End With
End Sub
E uso o código abaixo para filtrar os dados no MsHflexGrid e também funciona perfeitamente como no DataGrid, só que o PROBLEMA é que quando o Filtro acontece, os cabeçalhos das colunas que eu pus os nomes conforme o Código que preenche o MsHflexGrid, mudam e ficam com os nomes dos campos das tabelas, problema este que não acontece com o DataGrid
Private Sub Text_nome_Change()

With rs
    If Text_nome <> "" Then
    .Filter = "nome like '" & Text_nome & "%'"
    .Sort = "nome"
    End If
End With

End Sub

Como faço para que o nome do CABEÇALHO (colunas) não mude ? fique os que coloquei no Código que preenche o MsHflex ?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Realmente com o alias fica como desejado, isso porque o Field já vem com o nome esperado, porém imagino ter que colocar aliás em todos os campos todas as vezes que for fazer select's para mostrar num Grid, imagina quando for um daqueles com inúmeros campos e bem complicados cheios de SUM(), COUNT(),GROUP()ORDER()UNION()INNER()... tem select's que depois que faço com algum tempo que vou tentar ler o código para entender quase que não dá hehehehe, fica mais fácil fazer outro. Primeiro ponto para o DataGrid em relação a esta disputa de Grids, sem contar que cá pra nós é bem mais facil entender os comandos do DataGrid né não ?

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi pode me dizer como faço pra configurar o tipo da coluna, exemplo:

No DataGrid fazia assim:

DataGrid1.Columns.Item(1).NumberFormat = "dd/mm/yyyy"    'configura formato da data na coluna 2

DataGrid1.Columns.Item(1).Alignment = dbgCenter    'configura alinhamento na coluna 2 como central

DataGrid1.Columns.Item(5).NumberFormat = "Currency"     'configura formato monetario na coluna 6

E no MsHflex ou Flexgrid como faço ?, passei a madrugada tentando descobrir

Editado por Macêdo
Link para o comentário
Compartilhar em outros sites

  • 0

pro alinhamento é na propriedade ColAlignment. tipo assim:

MSHFlexGrid1.ColAlignment(1) = flexAlignCenterCenter

pro formato não sei. quando vou setar os dados direto do banco assim como você faz, sempre uso o DataGrid. O FlexGrid, só uso quando preciso preencher as colunas na mao com o TextMatrix. ai eu faco o formato na hora de preencher o TextMatrix.

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, vou postar o codigo que da pra configurar o Mshflexgrid assim como o datagrid, caso alguém esteja passeando pelo forum procurando a mesma coisa:

Private Sub preenche_hflex()

 If rs_2.RecordCount > 0 Then 
        With HFlex
            .Clear
            .Cols = 9 'quantidade de colunas
            .SelectionMode = flexSelectionByRow 'seleciona toda a linha do Mshflex
            .ColWidth(0) = 400 'largura da coluna
            .ColWidth(1) = 600 
            .TextMatrix(0, 1) = "Cod" 'nome do cabeçalho da coluna
            .ColWidth(2) = 3800
            .TextMatrix(0, 2) = "Cliente"
            .ColWidth(3) = 1000
            .TextMatrix(0, 3) = "Nascimento"
            .ColWidth(4) = 1300
            .TextMatrix(0, 4) = "CPF"
            .ColWidth(5) = 1200
            .TextMatrix(0, 5) = "RG"
            .ColWidth(6) = 1200
            .TextMatrix(0, 6) = "Telefone"
            .ColWidth(7) = 1200
            .TextMatrix(0, 7) = "Celular"
            .ColWidth(8) = 5000
            .TextMatrix(0, 8) = "Endereço"
            .Rows = rs_2.RecordCount + 1
            rs_2.MoveFirst
            For i = 1 To rs_2.RecordCount 'for para preencher o mshflex com o RS
                .TextMatrix(i, 1) = IIf(IsNull(rs_2(0)), "", rs_2(0))
                .TextMatrix(i, 2) = IIf(IsNull(rs_2(1)), "", rs_2(1))
                .TextMatrix(i, 3) = IIf(IsNull(rs_2(2)), "", Format(rs_2(2), "dd/mm/yyyy")) 'formata a coluna do campo data
                .TextMatrix(i, 4) = IIf(IsNull(rs_2(3)), "", format(rs_2(3),"currency")) 'formata coluna valor monetario
                .TextMatrix(i, 5) = IIf(IsNull(rs_2(4)), "", rs_2(4))
                .TextMatrix(i, 6) = IIf(IsNull(rs_2(5)), "", rs_2(5))
                .TextMatrix(i, 7) = IIf(IsNull(rs_2(6)), "", rs_2(6))
                .TextMatrix(i, 8) = IIf(IsNull(rs_2(7)), "", rs_2(7))
                rs_2.MoveNext
            Next i
        End With
    Else
        HFlex.Clear
    End If

End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...