Array
(
)

Componentes de dados CLX não saem de ReadOnly

Carlos Filho
   - 23 set 2003

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.


Marcelo.c
   - 25 set 2003

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


Mordred
   - 25 ago 2005

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


Mordred
   - 25 ago 2005

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


Carlos Filho
   - 26 ago 2005

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!


Mordred
   - 26 ago 2005

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



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