Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Comprobar que todas las checkbox de un Groupbox estan checked (https://www.clubdelphi.com/foros/showthread.php?t=58301)

David 15-07-2008 21:52:23

Comprobar que todas las checkbox de un Groupbox estan checked
 
Hola

Tengo un formulario, con dos GroupBox ( este componente, bien podía ser un panel por ejemplo), en uno tengo varios checkbox, y en el otro pues hay otros.

Quiero hacer dos cosas, la primera y más importante es comprobar de una forma rápida y logica que alguno de los checkbox esta checked.
and ... and not checkboxN.checked then
// Mensaje: Todos los checkbox estan desmarcados, no se puede realizar el proceso.
[/delphi]

Esta manera no me gusta, tiene que haber una forma mejor, que sea del tipo este.

Para todos los checkbox incluidos en el GroupBox1, si todos checked = False, muestro mensaje : "Hay que marcar al menos una opción"

Lo segundo que quiero hacer es parecido, es simplemente, poner un checkbox en cada groupbox, con la opcíon marcar/desmarcar todas.
Si se marca, pues todas las checkbox del Groupbox correspondiente estaran marcadas.

Puedo hacer esto

Código Delphi [-]
if CheckboxDesmarcarTodos.checked then
begin
Checkbox1.checked := true;
checkbox2.checke := true;
......

checkboxN.checked := true;
end;

esta forma de hacerlo tampoco me gusta, quiero algo del tipo.

Para una checkbox del Groupbox1, if checkboxMostrarTodo.cheked, pues todas cheked.

Caro 15-07-2008 23:46:42

Hola David, tienes que recorrer todos los controles que tienes dentro de tu GroupBox, preguntar si es un CheckBox y haces las operaciones que necesites, ejemplo.

Código Delphi [-]
var
 i, cont : Integer;
begin
 cont := 0;
 for i:=0 to GroupBox1.ControlCount-1 do
  begin
   if (GroupBox1.Controls[i] is TCheckBox) then
    if TCheckBox(GroupBox1.Controls[i]).Checked then
     inc(cont);
  end;
 if cont=0 then
  showmessage('Ningun CheckBox esta marcado');

Ahora para marcar todos o desmarcar todos, sería mejor que tu checkbox que haga eso este fuera de tu GroupBox asi haces menos controles.

Código Delphi [-]
procedure TFPrincipal.CheckBoxMarcarClick(Sender: TObject);
begin
 for i:=0 to GroupBox1.ControlCount-1 do
  begin
   if (GroupBox1.Controls[i] is TCheckBox) then
    TCheckBox(GroupBox1.Controls[i]).Checked := CheckBoxMarcar.Checked;
  end;
end;

Pero también podías haber usado un CheckListBox.

Saluditos

AzidRain 16-07-2008 00:31:52

ahi ta la respuesta..sin mucho problema.


La franja horaria es GMT +2. Ahora son las 07:06:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi