[OFF] EDICAO NO GRID. PERMITIR OU NAO?
Boa noite, caros companheiros de VB.
Agora pouco, eu estava fazendo um programa para um amigo quando me passou uma questão pela cabeça: vale a pena permitir edição no grid?
Fazer tudo no grid fica mais [Ô]bonito[Ô], porém vale a pena fazer todas as tratativas decorrentes disso? Se você tiver que colocar uma coluna não-editável, não será uma dor de cabeça do cão?
Gostaria de ouvir a opinião de vocês.
Agora pouco, eu estava fazendo um programa para um amigo quando me passou uma questão pela cabeça: vale a pena permitir edição no grid?
Fazer tudo no grid fica mais [Ô]bonito[Ô], porém vale a pena fazer todas as tratativas decorrentes disso? Se você tiver que colocar uma coluna não-editável, não será uma dor de cabeça do cão?
Gostaria de ouvir a opinião de vocês.
Na realidade Ash penso assim, vc não deve medir pela beleza e sim pela praticidade, ou seja, muitas vezes vc permitir edição no grid pode tornar as coisas mais práticas.
um exemplo foi um cartão de ponto que criei, nele vc digita os horarios em suas colunas especificas, e em duas ultimas colunas já são exiibidos as horas extra a 50% e 60%.
se eu fosse fazer isso para exibir em textbox box separados teria pratcamente a mesma codificaçà o e não iria dar o efeito desejado.
ale[ô]m de ocupar um espaço maior em minha tela, neste caso foi pratico fazer um grid editavel.
um exemplo foi um cartão de ponto que criei, nele vc digita os horarios em suas colunas especificas, e em duas ultimas colunas já são exiibidos as horas extra a 50% e 60%.
se eu fosse fazer isso para exibir em textbox box separados teria pratcamente a mesma codificaçà o e não iria dar o efeito desejado.
ale[ô]m de ocupar um espaço maior em minha tela, neste caso foi pratico fazer um grid editavel.
Depende.
Normalmente, só utilizo edição direta no GRID quando é IMPRESCINDÃVEL para a aplicação (ou quando o cliente solicita).
Normalmente, só utilizo edição direta no GRID quando é IMPRESCINDÃVEL para a aplicação (ou quando o cliente solicita).
pois é... isso sempre foi um problema... como trato um erro no grid.. tipo o campo é numerico e o cara vai editar texto no grid?
eu nunca deixo editar diretamente no mesmo, é sempre uma segunda tela.
eu nunca deixo editar diretamente no mesmo, é sempre uma segunda tela.
Bom quanto ao que o NICOLLAS disse.
bom eu trato erros sem problemas, ou seja permitoque sejam digitados apenas letras ou apenas numeros no grid.
Citação::
pois é... isso sempre foi um problema... como trato um erro no grid.. tipo o campo é numerico e o cara vai editar texto no grid?
eu nunca deixo editar diretamente no mesmo, é sempre uma segunda tela.
bom eu trato erros sem problemas, ou seja permitoque sejam digitados apenas letras ou apenas numeros no grid.
Citação::
pois é... isso sempre foi um problema... como trato um erro no grid.. tipo o campo é numerico e o cara vai editar texto no grid?
eu nunca deixo editar diretamente no mesmo, é sempre uma segunda tela.
Não tem segredo, a rotina é [Ô]parecida[Ô] com a utilzada em controles do tipo caixa de texto.
O grid que eu uso no trabalho se chama VSFLexGrid. Com ele, vale a pena permitir a edição no próprio grid, pois ele é um ótimo componente.
Porém, se tiver que utilizar o MSFLEXGRID com textbox flutuante, eu prefiro fazer uma tela a parte.
Porém, se tiver que utilizar o MSFLEXGRID com textbox flutuante, eu prefiro fazer uma tela a parte.
ash eu não utilizo textbox flutuante, é algo mais simples ainda veja
veja o código
é praticamente isto o evento keypress captura a tecla e joga no grid.
veja o código
Private Sub grid_KeyDown(KeyCode As Integer, Shift As Integer)
[ô]aqui são apagados todos caracteres da cellula ao clicar em DEL
Select Case KeyCode
Case 46 [ô]<Del>, apaga celula
grid.Tag = grid
grid = [Ô][Ô]
End Select
End Sub
Private Sub grid_KeyPress(KeyAscii As Integer)
[ô]abaixo as teclas pressionadas são capturadas por Keyascii
[ô]e lançadas no flexgrid
Select Case KeyAscii
Case 13 [ô]Tecla ENTER
Advance_Cell [ô]Avancar para nova cellula
Case 8 [ô]Backspace
If Len(grid) Then
grid = Left$(grid, Len(grid) - 1)
End If
Case 27 [ô]ESC
If grid.Tag > [Ô][Ô] Then [ô]Se todos forem NULL
grid = grid.Tag [ô]Retorna ao texto original
End If
Case Else
grid = grid + Chr(KeyAscii)
End Select
End Sub
Private Sub Advance_Cell() [ô]Avancar para proxima cellula
With grid
.HighLight = flexHighlightNever
If .Col < .Cols - 3 Then
.Col = .Col + 1
Else
If .Row < .Rows - 1 Then
.Row = .Row + 1 [ô]Desce uma linha
.Col = 1
Else
.Row = 1
.Col = 1
End If
End If
If .CellTop + .CellHeight > .Top + .Height Then
.TopRow = .TopRow + 1
End If
.HighLight = flexHighlightAlways
End With
End Sub
é praticamente isto o evento keypress captura a tecla e joga no grid.
Eu utilizei o textbox flutuante uma vez porque o cliente queria utilizar as setinhas do teclado para navegar dentro da célula. Frescura...
Obrigado pelo exemplo, mas eu já conhecia essa técnica.
Depois que eu descobri o VSFLEXGRID, sempre permiti a edição no grid, pois ele é um componente excelente!
Bom, acho que esse tópico já pode ser fechado.
Obrigado a todos que opinaram.
Obrigado pelo exemplo, mas eu já conhecia essa técnica.
Depois que eu descobri o VSFLEXGRID, sempre permiti a edição no grid, pois ele é um componente excelente!
Bom, acho que esse tópico já pode ser fechado.
Obrigado a todos que opinaram.
Tópico encerrado , respostas não são mais permitidas