Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas Com Checklistbox


Carlos Rocha

Pergunta

Tenho um DBRadioGroup para escolher Se vai ser a vista ou a prazo o PGTO

Caso seja a Prazo, aparece um ChecklistBox pra mandar as opções pro banco

15 dias
      30 dias
      45 dias
      60 dias 
      90 dias
Eu estou mandando os dados pro banco assim:
QryPedidosListaPgto.Value := CLBpgto.Items.Text;
     QryPedidos.Post;
Isso porque o CheckListBox não tem acesso nativo a dados. E no banco esta gravando com uma string :
15 dias (Espaço que são 2 quadradinhos) 30 dias...As opções selecioadas no CheckListBox.

Porem, agora preciso, na hora de listar os dados do pedido cadastrado, que a CheckListBox va o banco, pegue os valores e marque as opções selecionadas pelo cliente.

Como fazer isso?

alguém me ajuda aí!

'

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Tenho um DBRadioGroup para escolher Se vai ser a vista ou a prazo o PGTO

Caso seja a Prazo, aparece um ChecklistBox pra mandar as opções pro banco

15 dias
      30 dias
      45 dias
      60 dias 
      90 dias
Eu estou mandando os dados pro banco assim:
QryPedidosListaPgto.Value := CLBpgto.Items.Text;
QryPedidos.Post;
Isso porque o CheckListBox não tem acesso nativo a dados. E no banco esta gravando com uma string :
15 dias (Espaço que são 2 quadradinhos) 30 dias...As opções selecioadas no CheckListBox.

Porem, agora preciso, na hora de listar os dados do pedido cadastrado, que a CheckListBox va o banco, pegue os valores e marque as opções selecionadas pelo cliente.

Como fazer isso?

Carlos Rocha, imagino que você esteja querendo gravar apenas as opções marcadas, não é? Com o procedimento citado, você está na verdade gravando o texto com todas as opções presentes no CheckListBox. Para você gravar o que foi realmente selecionado, você deverá utilizar a propriedade Checked (CLBpgto.Checked[indice]) verificando se a opção (na posição indece) está marcada ou não (true ou false). Você terá que achar um meio de gravar esta informação e montá-la novamente. Lembre que a forma de ler a informação do campo no banco é a oposta a sua gravação.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Surgiu uma situação nova com a checklistbox.

Quando eu vou cadastrar um novo pedido, e cliko na opção A Prazo do DBRadioGroupOpcaoPgto, neste momento fica .visible := true a checklistbox, aí SURPREZA:=// La estão marcadas na checklistbox as opçoes do pedido que estava sendo exibido anteriormente.

Neste caso, precisarei em algum momento apagar a seleção que esta para que o proximo pedido possa fazer a sua opção de pagamento a prazo.

Mas como?

Valeu pessoal, essa eu consegui sozinho

Var I : Integer;
begin
  for I:= 0 to CLBpgto.Count - 1 do
  begin
    CLBpgto.State[I] := cbUnchecked;
  end;
Outra Situação: Preciso verificar se, caso o cara clique DBRadioFGroupOpcaoPgto na opção 'A Prazo' e não marque nenhuma opção de mês na Checklistbox, da uma mensagem dizendo que ele optou por venda a prazo mas esqueceu de preecher as opções de meses na checklistbox. Como fazer isso? Obrigado de novo, matei mais essa com o código abaixo
if (DBRadioGroupCondicaoPagamento.ItemIndex = 1) then
  begin
     for Idx := 0 to CLBpgto.Items.Count -1 do
         begin
           if not CLBpgto.Checked[idx] then
              begin
                ShowMessage('Voce escolheu pagamento a prazo, favor preencher os meses');
                CLBpgto.SetFocus; // posiciona o cursor
                Abort; // não grava e continua editando
              end;
         end;
  end;
Agora preciso fazer o seguinte: O pedido esta exibido. Vou imprimir no QuikReport. Chegando no QuickReport estou faszendo o seguite mas num está dando certo:
procedure TRPedidos.QRDBText5Print(sender: TObject; var Value: String);
begin
  If QryPedidosCondicaoPgto.AsString = 'A Prazo' then
      begin
            CLBpgto.Visible := true;
            CPedidos.InicializaListaPgto;
      end
   else
      begin
            CLBpgto.Visible := false;
      end;
end;

O que devo fazer?

Link para o comentário
Compartilhar em outros sites

  • 0

Carlos Rocha, vou apenas lhe sugerir olhar o código do programa exemplo que postei lá na sessão Tutoriais & Dicas, como citei antes.

Por todas essas suas perguntas, percebo que você não a olhou e nem baixou o anexo com o programa e código completos para avaliar o que fazer para seu código funcionar. Todas estas questões estão funcionando lá.

Link para o comentário
Compartilhar em outros sites

  • 0

Preciso percorrer uma checklistbox pra saber se algum ítem foi selecionado.

Caso nenhum ítem tenha sido selecionado, exibe uma mensagem informando que nenhum ítem foi selecionado e volta pra CheckListBox para ser marcada.

Caso contrario, apenas prosegue com o script.

Eu estou fazendo isso com o código abaixo, porem ela só aceita que a Checklistbox tenha ítens marcados, caso o primeiro esteja marcado, caso contrario, ainda que todos os outros ítens estejam marcados, ele interpreta que nenhum esta marcado.

if (DBRadioGroupCondicaoPagamento.ItemIndex = 1) then
  begin
    for Idx := 0 to CLBpgto.Items.Count -1 do
       begin  
          if not CLBpgto.Checked[Idx] then
            begin
              ShowMessage('Voce escolheu pagamento a prazo, favor preencher os meses');
              CLBpgto.SetFocus; // posiciona o cursor
              Abort;
            end;
        Break; // não grava e continua editando
     end;
  end;

O DBRadioGroupCondicaoPagamento tem duas opções - A VISTA E A PRAZO

Como resolver isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos la, li e reli o link que voce me forneceu mas num consegui resolver esse problema;

Com o código abaixo, eu consigo verificar se 'NÃO TEM NENHUM ÍTEM MARCADO', porem, se o primeiro ítem não estiver marcado na checklistbox, ainda que os outros estejam marcados, o código le como nãso há ítens marcados. E agora?

if (DBRadioGroupCondicaoPagamento.ItemIndex = 1) then
  begin
     for Idx := 0 to CLBpgto.Items.Count -1 do
         begin
           if not CLBpgto.Checked[idx] then
              begin
                ShowMessage('Voce escolheu pagamento a prazo, favor preencher os meses');
                CLBpgto.SetFocus; // posiciona o cursor
                Abort; // não grava e continua editando
              end;
         end;
  end;

Me da essa luz ai.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0
Me da essa luz ai.
Ok, vou acender um holofote :D

var
  HasChecked :Boolean;
begin
  ...
  if (DBRadioGroupCondicaoPagamento.ItemIndex = 1) then
    begin
       HasChecked := False;
       for Idx := 0 to CLBpgto.Items.Count -1 do
         HasChecked := HasChecked or CLBpgto.Checked[idx];

       if not HasChecked then
         begin
           ShowMessage('Voce escolheu pagamento a prazo, favor preencher os meses');
           CLBpgto.SetFocus; // posiciona o cursor
           Abort; // não grava e continua editando
         end;
    end;
end;

Prontinho, agora, apenas se todos os checkbox estiverem desmarcados é que a mensagem será processada.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...