Fórum DbGrid Controle Consciente De Dados... #204107
04/01/2004
0
P:S A Tecla Tab Gostaria Que Ela Ficasse Somente Com a Função De
Andar Nos Campos e Não Inserindo Registro No Fim De Uma Tabela.
Obs: Eu Não Sei Se Foi Claro, Mas Tem Muito Tempo, Que Eu Tenho Uma ´Certa Birra´ Sobre a Atuação Dessa Teclas Quando Se Esta Exibindo Uma Tabela Usando O DbGrid.
Espero Que Entendam e Possam Me Ajudar. Obrigado
Marco Salles
Curtir tópico
+ 0Posts
04/01/2004
Marco Salles
Gostei + 0
04/01/2004
Centopocento
Durante muito tempo eu trabalhei editando uma grade, ainda usu isto de vez enquando, mas nos meus novos sistemas alterei por solicitação do usuário.
A solução do seu problema não esta no DBGrid e sim nos eventos da tabela associada a grade vc. deve configura os eventos ´AfterPost´,´BeforePost´,´AfterDelete´,´BeforeDelete´ conforme sua necessidade. Lembre-se qdo o usuário tecla a seta o sistema grava o registro atual, no evento ´BeforePost´ vc poderá fazer os teste necessários o pedir uma confirmação se desejar é só cancelar a gravação e voltar ao estado anterior.
Espo ter te dado uma Luz.
T+
Edgar
Gostei + 0
04/01/2004
Marco Salles
Gostei. Mas Poder Me Dar Um Exemplo Deste Teste E Como Eu Faço Para Cancelar. Estou Dizendo Isto Porque Se No Evento BeforePost Eu Digitar
Table1.Cancel eu Acredito Que Não Irá Cancelar as Alterações Feitas No Meu Banco De Dados.Alem Disso Qual A Maneira Para Ocorrendo Cancelamento Por Algum Motivo o Campo Da Grid Que Não Passar Neste Teste Voltar a Ser Selecionado. Por Exemplo Um Campo Que Não Pode Ter SER Valor Nulo. Pode Se testar No Evento BeforePost.
[color=red:ad59300dcc]//No Evento BeforePost
if (Table1´Campo´.ISnull)And(Tabl1´Campo´.Value = 0 ) Then
begin
Beep;
ShowMessage(´Este Campo Nãqo Pode Ter o Valor Zero´;
O Que Faço Agora Para Cancelar o Valor Zezo Teoricamente Digitado
e a Grid Ficar Selecionada Exatamenente Nesse Campo :?:Esperando Uma Outro Valor a Ser Digitado Pelo Usuário[/color:ad59300dcc]
Gostei + 0
05/01/2004
Marco Salles
Gostei + 0
05/01/2004
Marco Salles
Gostei + 0
06/01/2004
Marco Salles
Um Meio de Desabilitar Estas Teclas. Não Havendo Meio , Gostaria De Escrever Um Método Para Que o Grid Cance o Registro Editado Ou Inserindo Se Detectado Qualquer Erro(Por Exemplo Um Campo Que Não Pode Ter o Valor ZERO). E Mais, Que Além De Informar o Erro, Retorne
No Mesmo Campo Da Grade Que Apresentou Erro a Fim De Ser Reeditado. Porque Que Eu Considero Importante Que a Grade Retorne Para o Mesmo Cmpo Que Se Detectou Erro ? A Resposta é Simples. Imagine o Usuário Tenha Preenchido Todos os Campos Corretos Da Grid e
Apenas o Ultimo Campo Errado. Se Ao Detectar o Erro , eu Escrever Um Código Simplesmente Para Cancelar(Ex:Table1.Cancel), o Usuáro Terá Que Reeditar Toda a Grid, O Que Muitas Das Vezes Não Será Um Trabalho Prazeroso, e Ele Certamente Irá Falar Mal Do Aplicativo.
Por ISto Amigos Lanço Esta Questão e Desdee Já Agradeço. [/color:9d0e992fe5]
Gostei + 0
06/01/2004
Marco Salles
Gostei + 0
07/01/2004
Marco Salles
Gostei + 0
07/01/2004
Wwenceslau
Se a tabela associada ao DBGrid estiver em modo de inserção ou edição desabilite a digitação das teclas de rolagem...
No evento onKeyDown do DBGrid use o seguinte:
Case Key of
VK_DOWN,
VK_UP,
VK_???
: begin
If (DBGrid.DataSource.DataSet.State in [dsInsert, dsEdit]) then
kEY := 0;
end;
Este código não impede que role quando estiver em mode browse e nem impede a digitação normal.
e pronto.
Espero ter ajudado.
Gostei + 0
07/01/2004
Marco Salles
E Qual a Uses Que Devo Declarar No Meu Sistema Para Que Reconheça Esta Instrução :?: Será Que Esta Instrução Esta Corretamente Grafada :?: E Qual a Perda Ao Tira-la Do Código :?:
P:S Agradeço Muito Sua Contribuição. Eu Já Estava Meio Desolado, Ma
Sua Contribuição Reanimou-me. Que Sabe Tu Responde Mais Estas
Questões :?:
Gostei + 0
07/01/2004
Aroldo Zanela
A tabela de VK (Teclas virtuais) estão na Windows.pas que é adicionada normalmente nos seus formulários. O que o colega quis representar com VK_???, acredito eu, refere-se a você especificar as demais teclas.
Gostei + 0
07/01/2004
Marco Salles
A tabela de VK (Teclas virtuais) estão na Windows.pas que é adicionada normalmente nos seus formulários. O que o colega quis representar com VK_???, acredito eu, refere-se a você especificar as demais teclas.[/quote:2d2e33332a]
Arolodo Zanela, Não é a Primeira Vez Que Você me Socorre, Espero T.B QQue Não Seje a Última, Mas Quando Você Diz Demais Teclas, a Tecla <Tab>, Qua Será Este VK_ Correspondente :?: . Existe Um Manual Para Saber Isto :?: . Obrigado...
P:S Uma Vez Voce me Sugeriu Que Eu Lhe Envia-se Um Email De Uma
Tabela e De Um Form, Lembra :?: Tentei Lhe Enviar Em Tres
Tentativas, e Nenhuma Delas Obteve Exito, Então Deixo Aqui Meus
Agradecimentos
e a Explicação Por Atê Hoje Voce Não Ter Recebido Tal Email
Gostei + 0
07/01/2004
Wwenceslau
Espero ter ajudado novamente...
Obs: para facilitar, coloque o cursor do mouse sobre o nome da unit window que esta na clausula uses do seu form e depois com o botão direito do mouse peça para abrir e vai direto.
Até.
Wanderley
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)