checkbox

Delphi

10/06/2010

Boa Tarde
Amigos

Tenho no Form 5 checkbox gostoria de saber como faço para verificar (consistencia ) se o usuario selecionou 1 ou mais checkbox.

se seleiconou 1 ou mais  = ok
se não selecionou nenhum = ShowMessage('favor selecionar');


Tenho seguinte codigo .

procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
For i := 0 to ComponentCount - 1 do
Begin
if Components[i].ClassType = TCheckBox then
If (TCheckBox(Components[i]).checked = False)
Then
begin
ShowMessage('favor selecionar');
end else
begin
ShowMessage('ok, um selecionado'); // 
end;
end;
end;

  


Só que nesse caso tenho que selecionar todos.

Obrigado
Frost

Frost

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

10/06/2010

Você quer saber se todos estão selecionados?
GOSTEI 0
Frost

Frost

10/06/2010

Boa Tarde
Wilson

Não, quero saber o seguinte se o usuario não selecionou nenhum não deixar salvar, se selecionou 1 ou 2 salva normalmente


seria mesma coisa ou quase.

Ex:
if checkbox1.checked = false then
begin
Application.MessageBox('favor selecionar checkbox1 ','[Informação]',MB_ICONINFORMATION + MB_OK);
end
else
dm.query.post.  // grava


só que como são 5 checkbox não queria ficar fazendo if., queria varrer todos os checkbox e verificar se não tiver pelo menos 1 selecionado obrigar então a selecionar 1 checkbox dos 5.


Obrigado


GOSTEI 0
Marco Salles

Marco Salles

10/06/2010

.. primeiro lugar refectorin o seu codigo ..     vc ão precisa varrer todos os componentes , vc precisa varrer todos os Controles Claro que a partit do Delphi 2007 ja temos o For in ( For each da Net ) ... Mas vamos nos atacar em versoes anteriores Então vc faz o seguinte codigo  
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
for I := 0 to self.ControlCount - 1 do
  if self.Controls[i] is TCheckBox then
    if TCheckBox(Controls[i]).Checked then
      begin
         Showmessage('ok, um selecionado');
         exit;
      end;
   Showmessage('Favor Selecionar');
end;
com este codigo refactorado , vc consegue atenter aquilo que vc inicialmemte propos
Tenho no Form 5 checkbox gostoria de saber como faço para verificar (consistencia ) se o usuario selecionou 1 ou mais checkbox.
se seleiconou 1 ou mais  = ok
se não selecionou nenhum = ShowMessage('favor selecionar');

GOSTEI 0
Frost

Frost

10/06/2010

Boa Tarde
Amigos


Obrigado Wilson e MARCO.

Marcos

Deu certinho o código, fia uma pegquena alteração

var
  I: Integer;
begin
for I := 0 to self.GroupBox.ControlCount - 1 do
  if self.GroupBox.Controls[i] is TCheckBox then     // GroupBox
    if TCheckBox(GroupBox.Controls[i]).Checked then
      begin
         DM.Q_docpendente.Post; 
         Application.MessageBox('Proposta Salva com Sucesso','Informação', + MB_ICONINFORMATION + MB_OK);
         exit;
      end;
     Application.MessageBox('Favor Informar Documento pendente','[SICOP]- Atenção', MB_ICONWARNING + MB_OK);
end;


Obrigado e um bom final de Semana.




GOSTEI 0
Marcus Passos

Marcus Passos

10/06/2010

Olá boa noite. Amigo vê se voce pode me ajudar. Eu adicionei uma TDBCheckBox em um projeto que estou fazendo. Ele é muito simples, porem comecei a programar agora em Delphi e tenho uma duvida que acho que vc vai achar muito simples. É o seguinte. To fazendo um programinha de cadastros. E nele eu preciso colocar uma checkbox que cheque na tabela do meu banco de dados ( .FDB )se o cadastro ta ativo ou nao. Para ativo quando check ele tem que ficar 1 e 0 para nao.. Ou seja seria mais ou menos isso.. Se o cadastro ta ativo no checkbox na minha base de dados vai estar 1 e se ele nao estiver ativo vai ficar 0.. Simples assim.. Agradeço pela atençao. Obrigado.
GOSTEI 0
POSTAR