Como Desabilitar o Click Com o Mouse No DbGrid
Ola amigos. Uso um DbGrid , [b:af17f3a61b]a titulo [/b:af17f3a61b]de informação do que de Inserção de dados...Os dados sao inseridos atraves de outros controles concientes de dados (DbEdit Por Exemplo)...o problema e que quando estou no modo de inserção de dados ou no modo de edição, [b:af17f3a61b]um click [/b:af17f3a61b]na barra de rolagem do dbgrid [b:af17f3a61b]Salva[/b:af17f3a61b] esse Registro( Como e de praxi)..Isto no meu caso é um incoveniente, porque os dados antes de serem inseridos atraves dos dbedits sao analisados e eu perco esta opção com o click na barra de rolagem do DbGrid....Então gostaria que este dbgrid so ficasse mesmo e com a função de mostrar os dados e nao com outras funçoes..Como posso fazer isto????
Marco Salles
Curtidas 0
Respostas
Milk
21/10/2004
Você tentou nas propriedades do dbgrid,options,mudar a opção
dgediting para False.
Talves de certo.
dgediting para False.
Talves de certo.
GOSTEI 0
Crpavao
21/10/2004
Ou coloque seu DBGRID com READONLY
GOSTEI 0
Marco Salles
21/10/2004
Você tentou nas propriedades do dbgrid,options,mudar a opção
dgediting para False.
Talves de certo.
Isto nao impede que o registro aberto , seje salvo ..Apenas impede que se pode editar nos campos da Grade do DbGrid
Ou coloque seu DBGRID com READONLY
Isto nao impede que o registro aberto , seje salvo ..Apenas impede que se pode editar nos campos da Grade do DbGrid
o que eu estou querendo de fato e desabilitar o click do mouse sobre o Grid..ou algo similar que impeça que ao clicar sobre a grid o registro aberto (inserido) fique na mesma posição..
GOSTEI 0
Marco Salles
21/10/2004
sobe...Xiiiii
GOSTEI 0
Fcinto
21/10/2004
no evento BeforeScroll da sua query ou table, coloque o seguinte
IF SUAQUERY.STATE IN [DSEDIT, DSINSERT]
THEN ABORT;
IF SUAQUERY.STATE IN [DSEDIT, DSINSERT]
THEN ABORT;
GOSTEI 0
Marco Salles
21/10/2004
no evento BeforeScroll da sua query ou table, coloque o seguinte
IF SUAQUERY.STATE IN [DSEDIT, DSINSERT]
THEN ABORT;
eu acredito, pelos testes preliminares que eu fiz, que o código acima , para o meu caso infelismente nao irá funcionar..A razão é que no mesmo formulário, onde tem este [b:e9b82e03ab]GRID[/b:e9b82e03ab], tem tb outros controles conscientes de dados e um [b:e9b82e03ab]BOTAO[/b:e9b82e03ab], aonde após analisar criteriosamente os dados inseridos , eu Salvo ou nao na Base de Dados...
Ao Colocar este código , eu nao consigo mais gravar na minha Base De Dados Via Programação Normal . pq este evento não é intríseco do [b:e9b82e03ab]DbGrid[/b:e9b82e03ab], ele é disparado independendemente de se ter um DbGrid Ou Não no Formulário...O Nome desse evento e Sugestivo, mas ele ocorre independentemente de se ter ou nao uma barra de Rolagem no Formulário...O Simples código no Botão
procedure TForm1.Button1Click(Sender: TObject); begin table1.next; end;
[b:e9b82e03ab]é suficiente parar disparar este evento, tendo ou nao um DbGrid No Formulário[/b:e9b82e03ab]
Não sei se fui claro...Obrigado
GOSTEI 0
Crpavao
21/10/2004
Não sei, mas acho que vc está fazendo confusão (ou eu não tô entendo bem a questão). Costumo, tb, ter um DBGRID apenas para exibição de dados e, ao clicar nele, abre-se uma outra tela para entrada de dados (inclusao ou alteração). E coloco este DBGRID com READONLY. Funciona normalmente. Neste DBGRID não salva, só exibe...
GOSTEI 0
Fcinto
21/10/2004
Voce pode fazer o seguinte quanto mudar o estado da query para inserção ou alteração deixar o dbgrid com enabled false.
no evendo OnStateChange do seu DataSource coloque o seguinte código:
Dbgrid1.Enabled := not (DataSource1.State in [dsInsert, dsEdit]);
assim quanto estiver alterando ou inserindo fica desabilidado, após gravar o State muda e fica habilitado novamente.
no evendo OnStateChange do seu DataSource coloque o seguinte código:
Dbgrid1.Enabled := not (DataSource1.State in [dsInsert, dsEdit]);
assim quanto estiver alterando ou inserindo fica desabilidado, após gravar o State muda e fica habilitado novamente.
GOSTEI 0
Fcinto
21/10/2004
Voce pode fazer o seguinte quanto mudar o estado da query para inserção ou alteração deixar o dbgrid com enabled false.
no evendo OnStateChange do seu DataSource coloque o seguinte código:
Dbgrid1.Enabled := not (DataSource1.State in [dsInsert, dsEdit]);
assim quanto estiver alterando ou inserindo fica desabilidado, após gravar o State muda e o dbgrid fica habilitado novamente.
no evendo OnStateChange do seu DataSource coloque o seguinte código:
Dbgrid1.Enabled := not (DataSource1.State in [dsInsert, dsEdit]);
assim quanto estiver alterando ou inserindo fica desabilidado, após gravar o State muda e o dbgrid fica habilitado novamente.
GOSTEI 0
Marco Salles
21/10/2004
Vamos por partes
Isto e uma outra idéia....so que no meu caso, a mesma tela(Formulário) de inserção de Dados [b:3af47a396b]e a mesma[/b:3af47a396b], onde esta localizado o DbGrid...Pq eu nao mudo???Pq ja constroi a minha estrutura toda assim....
Sem sombra de dúvida.Um tiro certeiro...Só com algumas modificações..Ja que tenho vários formulários, e o formulário que contém o DbGrid nao e o Mesmo que Abre a tabela, o que da um ERRO de Execução(Pois , quando ocorre este evento o meu Grid Nen Foi Criado Ainda...)Mas isto nao e Problema, pq eu uso a idéia para coloca-la na posição quem melhor me convir no meu código...
Exemplo:::
Mas agora so ha título de curiosidade, será que ninguem conhece , manipulando as mensagems do Windows, Ou sei la o que , desativar o click do Mouse sobre o DbGrid :?: :?: :?:
Agradeço a todos que contribuiram com suas sugestões sobre este tópico...
Costumo, tb, ter um DBGRID apenas para exibição de dados e, ao clicar nele, [b:3af47a396b]abre-se uma outra tela [/b:3af47a396b]para entrada de dados (inclusao ou alteração
Isto e uma outra idéia....so que no meu caso, a mesma tela(Formulário) de inserção de Dados [b:3af47a396b]e a mesma[/b:3af47a396b], onde esta localizado o DbGrid...Pq eu nao mudo???Pq ja constroi a minha estrutura toda assim....
Voce pode fazer o seguinte quanto mudar o estado da query para inserção ou alteração deixar o dbgrid com enabled false.
no evendo OnStateChange do seu DataSource coloque o seguinte código:
Dbgrid1.Enabled := not (DataSource1.State in [dsInsert, dsEdit]);
Sem sombra de dúvida.Um tiro certeiro...Só com algumas modificações..Ja que tenho vários formulários, e o formulário que contém o DbGrid nao e o Mesmo que Abre a tabela, o que da um ERRO de Execução(Pois , quando ocorre este evento o meu Grid Nen Foi Criado Ainda...)Mas isto nao e Problema, pq eu uso a idéia para coloca-la na posição quem melhor me convir no meu código...
Exemplo:::
Quando "abro" um registro..Num evento onclick de um botao DbDrid1.Enabled:=False; Quando Cancelo um operação.....Num evento onclick de um botao DbGrid1.Enabled:=True; Quando Salvo as Alteraçoes.......Num evento onclick de um botao DbGrid1.Enabled:=True;
Mas agora so ha título de curiosidade, será que ninguem conhece , manipulando as mensagems do Windows, Ou sei la o que , desativar o click do Mouse sobre o DbGrid :?: :?: :?:
Agradeço a todos que contribuiram com suas sugestões sobre este tópico...
GOSTEI 0