DBCheckbox-cinza sem solução

Delphi

19/10/2005

Oi,

antes de postar esse topico fiz uma busca no fórum e apesar de encontrar alguns tópicos q falem sobre o assunto nenhum resolveu o meu problema.
Estou com uma aplicação D2005 e Firebird 2.0 funcionando perfeitamente, tenho alguns campos ´boolean´, onde para tal foi criado um domain:
CREATE DOMAIN BOOLEAN AS
CHAR(5) CHARACTER SET WIN1252
DEFAULT ´False´
NOT NULL
CHECK (VALUE IN (´True´,´False´))
COLLATE PXW_INTL850
o armazanamento está sendo feito corretamente, quando marco ele grava True e quando desmarco ele grava False, o problema é a visualização no DBCheckbox, em registros em q o campo está True no checkbox aparece marcado mas cinza, outro exemplo: quando peço pra inserir um novo registro e mesmo sem marcar nenhum checkbox quando gravo ficam marcados na cor cinza, mesmo gravando False(já q no próprio dominio já é repassado o default), ele só fica desmarcado quando eu clico com o mouse, se eu volto a marcar ele fica beleza, preto, mas só enquanto eu estou no form, quando saio e entro de novo tá lá, cinza.
O q eu posso fazer?

Obrigado


Fajo

Fajo

Curtidas 0

Respostas

Firekiller

Firekiller

19/10/2005

isso tá ocorrendo porque char(5) completa o qua falta para 5 (tamanho) com espaços, então, quando o valor for true, na verdade você teria ´true´+´ ´ Entendeu?? Troque o tipo do campo para varchar que irá funcionar blz.


GOSTEI 0
Fajo

Fajo

19/10/2005

O problema de ficar cinza mesmo quando o campo for True foi resolvido, valeu; agora o problema de ficar cinza e marcado quando se pede pra inserir um novo registro continua;


GOSTEI 0
Firekiller

Firekiller

19/10/2005

isso está ocorrendo pois o valor default (colocado no banco) só tem funcionalidade se vc for gravar no banco e o campo não tiver preenchido.
No caso de você querer que fique marcado na hora em que você inserir, coloque esse código no evento OnNewRecord do seu dataset:

Dataset.FieldByName(´CampoBoolean´).Value := ´True´;

Isso irá resolver seu problema.


GOSTEI 0
Fajo

Fajo

19/10/2005

Valeu firekiller,

deu tudo certo, brigado.


GOSTEI 0
POSTAR