ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Marcar true CheckBox com dados do banco?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17346

MensagemEnviada: Qui Out 24, 2019 9:07 am    Assunto: Marcar true CheckBox com dados do banco? Responder com Citação

Tenho um campo no banco de dados gravado com alguns nomes de checkbox, separei por ponto e virgula cada nome do checkbox nesse campo.

A ideia é ao ler esse campo verificar quais checkbox estão com sou nome gravado la é retornar no checkbox aqueles gravados sua propriedade checked = true. tem como fazer essa leitura:

Obrigado.
_________________
Quer uma bateria musical profissional completa em seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.hhopdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 2928
Localização: Belo Horizonte - MG

MensagemEnviada: Qui Out 24, 2019 11:27 am    Assunto: Responder com Citação

Se entendi bem, você quer deixar checado os checkbox que tem seu nome gravados neste campo.

Se for, veja um exemplo:

Código:
var
  Lista: TStringList;
  campoCheckbox: string;
  i: Integer;
begin
  campoCheckbox := 'CheckBox1; CheckBox2; CheckBox4'; // Substitua aqui pelo valor que vem do banco de dados

  Lista := TStringList.Create;
  try
    Lista.Delimiter := ';';
    Lista.StrictDelimiter := true;
    Lista.DelimitedText := campoCheckbox;

    for i := 0 to Lista.Count - 1 do
      TCheckBox(Self.FindComponent(Trim(Lista[i]))).Checked := true;
  finally
    Lista.Free;
  end;
end;

Se não for isso, nos avise.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17346

MensagemEnviada: Qui Out 24, 2019 11:38 am    Assunto: Responder com Citação

natanbh1 escreveu:
Se entendi bem, você quer deixar checado os checkbox que tem seu nome gravados neste campo.

Se for, veja um exemplo:

Código:
var
  Lista: TStringList;
  campoCheckbox: string;
  i: Integer;
begin
  campoCheckbox := 'CheckBox1; CheckBox2; CheckBox4'; // Substitua aqui pelo valor que vem do banco de dados

  Lista := TStringList.Create;
  try
    Lista.Delimiter := ';';
    Lista.StrictDelimiter := true;
    Lista.DelimitedText := campoCheckbox;

    for i := 0 to Lista.Count - 1 do
      TCheckBox(Self.FindComponent(Trim(Lista[i]))).Checked := true;
  finally
    Lista.Free;
  end;
end;

Se não for isso, nos avise.


Bom dia, era isso mesmo que precisava natanbh1. Muito obrigado.
_________________
Quer uma bateria musical profissional completa em seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.hhopdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17346

MensagemEnviada: Qui Out 24, 2019 11:50 am    Assunto: Responder com Citação

Para gravar também estou com dificuldades

A primeira vez para gravar no banco fiz assim
Código:
for I := 0 to Pred(ComponentCount) do
  begin
    if (Components[I] is TCheckBox) then
      if (TCheckBox(Components[I]).Checked) and (TCheckBox(Components[I]).Tag > 0) then
        Lista.Add(TCheckBox(Components[I]).Name);
  end;


Ai preencho o StringList com todos que marquei checked

Porém agora ao buscar e popular novamente os checkbox e tentar modificar ele não retira do banco.

Por exemplo tenho um checkbox1 gravado no banco, agora quero ao desmarcar seu check no update retirar ele do banco, tem como?
_________________
Quer uma bateria musical profissional completa em seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.hhopdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 2928
Localização: Belo Horizonte - MG

MensagemEnviada: Qui Out 24, 2019 2:28 pm    Assunto: Responder com Citação

Pelo que entendi, basta você rodar este código que você postou e usar o StringList do resultado para atualizar o banco.

Usando seu exemplo, após desmarcar o Checkbox1 use o codigo abaixo para capturar novamente os checkbox's marcados:

Código:
for I := 0 to Pred(ComponentCount) do
  begin
    if (Components[I] is TCheckBox) then
      if (TCheckBox(Components[I]).Checked) and (TCheckBox(Components[I]).Tag > 0) then
        Lista.Add(TCheckBox(Components[I]).Name);
  end;


Depois use a StringList "Lista" do código acima para atualizar o campo.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17346

MensagemEnviada: Qui Out 24, 2019 3:21 pm    Assunto: Responder com Citação

natanbh1 escreveu:
Pelo que entendi, basta você rodar este código que você postou e usar o StringList do resultado para atualizar o banco.

Usando seu exemplo, após desmarcar o Checkbox1 use o codigo abaixo para capturar novamente os checkbox's marcados:

Código:
for I := 0 to Pred(ComponentCount) do
  begin
    if (Components[I] is TCheckBox) then
      if (TCheckBox(Components[I]).Checked) and (TCheckBox(Components[I]).Tag > 0) then
        Lista.Add(TCheckBox(Components[I]).Name);
  end;


Entendi, é que ao executar o salvar estava trazendo o valor na variavel por isso não actualizava, agora limpo antes de executar novamente.

Deu certo. Obrigado.

Depois use a StringList "Lista" do código acima para atualizar o campo.

_________________
Quer uma bateria musical profissional completa em seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.hhopdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB