Ao abrir uma tabela, os DbCheckbox aparecem marcados. Como?

Delphi

30/06/2004

Gostaria de saber como que ao abrir uma tabela, os DbCheckbox aparecem marcados com as opções marcadas na hora do cadastro.
A tabela está abrindo, nos DbEdit´s aparecem os dados, mas nos DBCheckbox eles aprecem todos cinza.

Valeu a força!!

JR.


Jrjoliv2003

Jrjoliv2003

Curtidas 1

Melhor post

Tnaires

Tnaires

30/06/2004

Olá
No OnNewRecord do DataSet (Table, Query) de cadastro, ajuste todos os campos booleanos como false (ou true, de acordo com sua conveniência).
Exemplo:
Cadastro
---------
ID
Booleano1
Booleano2

Código do DataSet:
TForm1.Table1OnNewRecord(DataSet: TDataSet)
begin
  Table1Booleano1.Value := false;
  Table1Booleano2.Value := false;
end;

Abraços


GOSTEI 1

Mais Respostas

Jrjoliv2003

Jrjoliv2003

30/06/2004

Valeu!!
Vou verificar. Qualquer coisa envio mensagem!!

JR.


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

30/06/2004

Realmente quando coloco um novo registro, ocódigo passdo funciona. Valeu!!

Mas queria tb saber como que as opções marcadas aparecem quando visualizo os registros?
Passando de um registro para outro as opções teriam que ficar marcadas ou não de acordo com o cadastro.
Neste caso elas continuam aparecendo cinza.

Uma observação. Estou trabalhando com Interbase 6 e não tem tipo de dado Boleano. Coloquei como tipo de dado varchar(1). Tem alguma coisa haver?
Sou novo em programação!

Valeu a força!!

JR.


GOSTEI 0
Tnaires

Tnaires

30/06/2004

Hmm... Nesse caso, talvez seja bom vc usar DBRadioGroups, onde cada item pode ter um valor. Na propriedade Items, vc coloca os itens que o usuário deve marcar, e na propriedade Values o caractere respectivo a cada item q deve ser gravado no banco. E no OnNewRecord da tabela, ao invés de atribuir um valor booleano ao campo, vc atribui o caractere correspondente a uma das opções.
Exemplo: se a tabela tem um campo char(1), os itens e os respectivos values seriam:
Itens                Values
Verdadeiro             V
Falso                  F

As letras em Values serão gravadas no campo.
Abraços


GOSTEI 1
Gandalf.nho

Gandalf.nho

30/06/2004

Prá começar não use VARCHAR(1) nesse caso, e sim CHAR(1), pq o conteúdo do campo sempre será do mesmo tamanho. Outra sugestão é SMALLINT. E para o DBCheckBox mostrar os valores corretamente em campos não booleanos, use a propriedade [b:f669fa4760]ValueChecked[/b:f669fa4760].


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

30/06/2004

Vou testar as duas respostas. Enviarei resposta assim que puder.

Valeu a força!!

JR.


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

30/06/2004

Continua a mesma coisa!

Eu colquei char(1) em todos os campos. OK!

O que está no form são DBCheckbox para os dias da semana. Então na hora de um novo cadastro está limpando e o usuário marca os dias que quer. OK!

Vamos supor q ele marque Segunda-Feira e Quinta_Feira.

O que está faltado é quando eu abrir a tabela e visualizar esse registro apareça Segunda e Quinta marcos e o restante em branco.
O que está acontecendo é que todos ficam cinza quando abro a tabela.

Valeu a força!!

JR.


GOSTEI 0
Gandalf.nho

Gandalf.nho

30/06/2004

Que valores você está usando para verdadeiro/falso em seus campos? Pegue cada um de seus DBCkeckboxes e coloque na propriedade ValueChecked o valor usado para verdadeiro (opção selecionada) e na propriedade ValueUnchecked o valor falso (opção não marcada).
Exemplo: suponha que você esteja usando ´S´ para marcado e ´N´ para não marcado; basta atribuir ´S´ à propriedade ValueChecked e ´N´ para ValueUnchecked e voilá.


GOSTEI 0
Jrjoliv2003

Jrjoliv2003

30/06/2004

Beleza!!!!!!!!

Quando clico no botão novo:
dbcheckbox1.checked:=false;

Quando clico no gravar:

if dbcheckbox1.Checked = False then data.IBTConCON_PREFSEG.Value:=´F´ else data.IBTConCON_PREFSEG.Value:=´T´;

Peguei cada um dos DBCkeckboxes e coloquei na propriedade
ValueChecked o valor usado para verdadeiro e na propriedade ValueUnchecked o valor falso

Mais uma vez Obrigado.

Valeu!!!

JR.


GOSTEI 0
POSTAR