MSFlexGrid - Editando dados diretamente no Grid.


Artigos sobre o componente MSFlexGrid não faltam no site. Dúvida ? veja abaixo a relação ( sem contar as dicas)

O grande problema com o MSFLexGrid é que não podemos editar diretamente os dados em suas células. Bem , pelos menos é o que você vai encontrar se examinar os artigos presentes no site. Mas será que não podemos editar diretamente os dados das células de um MSFlexGrid sem recorrer a 'cambiarras' e a exóticos truques de programação ?

Eu creio que como seres humanos temos nossas limitações , mas creio também que nunca devemos subestimar o potencial criador do homem , afinal é isto que o diferencia dos animais irracionais ; um dom Divino que muitas vezes é usado para o mal. Deixando as reflexões filosóficas de lado o que quero dizer é que é perfeitamente possível editar os dados diretamente nas células do MSFlexGrid. Como ????

Vou mostrar como fazer isto neste artigo...

Você vai começar criando um simples projeto que use o MSFlexGrid. Crie um novo projeto tipo StandardEXE no VB.

A primeira coisa a fazer para usar o MSFlexGrid é adicioná-lo a caixa de ferramentas, visto que ele não é um objeto padrão do Visual Basic.

Para fazer isto basta selecionar a opção Project do menu é a seguir clicar na opção Components ; surge a tela da figura 1.0 mostrada a seguir, a seguir selecione o componente Microsoft FlexGrid Control 6.0. Pronto , o objeto MSFlexGrid é visualizado a seguir na caixa de ferramentas (ver figura abaixo).

Ele está pronto para ser utilizado em seus projetos. Basta você fornecer um nome para identificá-lo e configurar sua aparência e comportamento.

Agora inclua o componente MSFlexGrid e o componente DataControl no formulário . A aparência do formulário deverá ficar conforme figura abaixo:(Estou usando os nomes padrões dos componentes - recomendo que em um projeto para produção você nunca faça isto.)

Vamos carregar alguns dados no Grid somente para ter o que editar. Para isto vou configurar as seguintes propriedades do componente Data1 ::

- DataBaseName = c:\teste\Clientes.mdb      

- RecordsetType - 1 - Dynaset

- RecordSource - Clientes

(Você pode usar qualquer configuração válida)

Ao lado as propriedades já configuradas.

Agora configura a propriedade DataSource do MSFlexGrid1 como sendo igual a Data1. Pronto pode rodar o projeto que o Grid será carregado com os dados conforme abaixo:

Até agora fizemos o básico e trivial para exibir dados no MSFlexGrid. Vamos editar os dados nas células diretamente ?

No evento KeyPress do componente MSFlexGrid1 insira o código abaixo:

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)

Select Case KeyAscii
Case vbKeyReturn, vbKeyTab
'move para a proxima celula.

With MSFlexGrid1

  If .Col + 1 <= .Cols - 1 Then
     .Col = .Col + 1
  Else
     If .Row + 1 <= .Rows - 1 Then
         .Row = .Row + 1
         .Col = 0
     Else
         .Row = 1
         .Col = 0
     End If
  End If
End With

Case vbKeyBack

   With MSFlexGrid1
   'remove o ultimo caractere
      If Len(.Text) Then
         .Text = Left(.Text, Len(.Text) - 1)
      End If
   End With

Case Is < 32

Case Else
    With MSFlexGrid1
       .Text = .Text & Chr(KeyAscii)
    End With
End Select

End Sub
Figura 1.0 - Célula com o dado original - Mirassol - sendo editada
Figura 2.0 - A célula editada com o novo valor inserido.
Na figura 1.0 acim estou exibindo a célula original com o dado Mirassol sendo editada
Na figura 2.0 temos o valor final que foi inserido na célula substituindo o valor original

Como você pode ver (faça você mesmo o teste) tornamos o MSFlexGrid editável com poucas linhas de código.

Tenha em mente que os valores que você digita no Grid irão se perder quando o projeto for removido da memória. (Não vale me xingar... )

Mas você pode implementar uma rotina para salvá-los e persistir a informação na sua fonte de dados sem grandes problemas. Deixo isto a seu cargo (quando terminar me manda a rotina para eu completar o artigo , OK ? )

Até o próximo artigo VB . Eu sei , é apenas Visual Basic , mas eu gosto ...


José Carlos Macoratti