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 |
|
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