• 0
Sign in to follow this  
Carlos Rocha

Problemas Com Checklistbox

Question

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í!

'

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 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

Share this post


Link to post
Share on other sites
  • 0

Sera que existe DBCheckListBox?

Dessa vez eu tentei fazer

QryPedidosListaPgto.Value := CLBpgto.Checked[indice]);

QryPedidos.Post;

Mas só da erro:

Undeclared Identifier: 'indice';

Como faço agora?

Share this post


Link to post
Share on other sites
  • 0

Carlos Rocha, como mais alguém pode precisar disto e a coisa é mais ou menos simples, fiz um mini-tutorial de como simular um DBCheckListBox e espero que possa lhe ajudar.

Veja em Tutoriais & Dicas, tem um exemplo funcionando lá.

Abraços

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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á.

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this