Componentes de dados CLX não saem de ReadOnly

23/09/2003

1

Esse tópico está sendo postado tanto no forum de Delphi qto no de Kylix

Bom, achei um problema que não consigo resolver de jeito nenhum, quero ver se vcs sabidos do forum sabem me dizer pq e como consertar esse problema:

Criei uma aplicação CLX e coloquei nela um DBEdit simples e um Checkbox. Coloquei tbm um Clientdataset (ou uma tabela com dados válidos..)

A ação é que quando o check box estiver marcado eu posso editar o DBedit, pois o check diz que a propriedade Read Only é false. Quando desmarcado ReadOnly fica true. O componente inicia readonly = true e só apos eu marcar o check ele é posto em read only = false.

O problem é que O COMPONENTE NÃO SAI DE READ ONLY DE JEITO NENHUM!
o DB EDIT ESTÁ CORRETAMENTE LIGADO EM UM DATASOURCE QUE POR SUA VEZ SE LIGA CORRETAMENTE NO DATASET. A PROPRIEDADE DATAFIELD TBM ESTÁ CORRETAMENTE LIGADA E A TABELA ESTÁ ENTRANDO NO MODO DE EDIÇÃO/INSERÇÃO CORRETAMENTE. RESUMINDO ESTÁ TUDO PERFEITO, MAS O COMPONENTE NÃO SAI DE READONLY. PORQUE???

Será que alguem se habilita a responder?

LEMBRETE: a aplicação é CLX. Sei que CLX é uma droga se comparado ao VCL, mas é que preciso do CLX e precido do efeito readonly funcionado corretamente...

OBS.: usando componentes DB/VCL tudo funciona.


Responder

Posts

25/09/2003

Marcelo.c

Se for da paleta Interbase, é necessário preencher as intruções InsertSQL, DeleteSQL, ModidfySQL e RefreshSQL, você precisa também ter um componente IBTransaction ligado ao IBDataBase.

Clique com o botão direito do mouse sobre o Client e escolha DataSet Editor...,
Clique em Generate SQL para gerar o código,
Não estamos falando de cerveja mas...

Experimente... :D


Responder

25/08/2005

Mordred

Quer dizer que se eu der um Clear no ModifySQL o Dataset fica Read-Only sem maiores problemas? Que magavilha! :D


Responder

25/08/2005

Mordred

Não, isso não funcionou não... dá erro. :P
Existe alguma forma de bloquear edições na tabela de maneira mais simples?


Responder

26/08/2005

Carlos Filho

Eu manipulo os eventos das tabelas e queries
OnBeforeXXXX

Dentro deste evento, se um determinado não tiver permissão para edição na tabela então basta dar um Abort!


Responder

26/08/2005

Mordred

Valeu por me ajudar a desvendar este enigma, mas vou explicar um pouco melhor a questão... meu problema é que eu tenho um form cheio de componentes dbaware (dbedits, dbcombos, dblookupcombos e dbmemos pra ser exato). Quando o usuário entra na tela, o sistema altera a propriedade ReadOnly dos Fields do Dataset pra True caso o usuário não possua permissão pra alterar.

Maravilha, apenas fazendo isso, os componentes já ficam automaticamente travados e não deixam você digitar nada. MAS deixam você apagar as informações usando delete e daí as coisas dão pau. OK, fiz um [color=red:42823b47e1]baita[/color:42823b47e1] tratamento do Evento OnKey Down em todos controles e bloqueei todas teclas que não sejam setinhas ou home ou end. Tudo bem. Mas daí descobri que as dbcombos, mesmo sem entrar nenhuma das teclas digitadas AINDA assim dão pau. Mesmo usando o código que você me passou, Derek :(

Estou suspeitando fortemente que o problema está na CLX e estou pensando sériamente em não programar mais usando CLX.



[color=red:42823b47e1]Parte do texto editado por conter palavra inadequada.[/color:42823b47e1]
Por favor, leia a [url=http://forum.clubedelphi.net/viewtopic.php?p=17019#1b]cláusula 1b[/url] das Regras de Conduta.


Responder