GARANTIR DESCONTO

Fórum Como Desabilitar o Click Com o Mouse No DbGrid #255355

21/10/2004

0

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

Marco Salles

Responder

Posts

21/10/2004

Milk

Você tentou nas propriedades do dbgrid,options,mudar a opção
dgediting para False.
Talves de certo.


Responder

Gostei + 0

21/10/2004

Crpavao

Ou coloque seu DBGRID com READONLY


Responder

Gostei + 0

21/10/2004

Marco Salles

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


Responder

Gostei + 0

21/10/2004

Marco Salles

sobe...Xiiiii


Responder

Gostei + 0

21/10/2004

Fcinto

no evento BeforeScroll da sua query ou table, coloque o seguinte

IF SUAQUERY.STATE IN [DSEDIT, DSINSERT]
THEN ABORT;


Responder

Gostei + 0

21/10/2004

Marco Salles

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


Responder

Gostei + 0

21/10/2004

Crpavao

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


Responder

Gostei + 0

22/10/2004

Fcinto

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.


Responder

Gostei + 0

22/10/2004

Fcinto

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.


Responder

Gostei + 0

22/10/2004

Marco Salles

Vamos por partes

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar