Ver Mensaje Individual
  #3  
Antiguo 23-01-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El asunto puede enfocarse y solucionarse de diversos modos. Así a bote pronto se me ocurre utilizar un "CheckListBox" o "CheckBox", como dices, pero agrupados en un "TGroupBox".

El siguiente código podría darte una idea de cómo iterar por un "CheckListBox", buscar los "Items marcados" e ir conformando la cadena "de los campos" que luego se incluirá en la cadena que contenga la consulta SQL en cuestión:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  c,s: string;
begin
  c := '';
  for i := 0 to CheckListBox1.Count - 1 do
  begin
    if(CheckListBox1.Checked[i])then
    begin
      if c = '' then
        c := CheckListBox1.Items[i]
      else
        c := c +','+ CheckListBox1.Items[i];
    end;
  end;
  s := Format('SELECT %s FROM tabla', [c]);

  ShowMessage(s);
end;

Y este otro código es similar al anterior, salvo que se utiliza un "GroupBox" y distintos "CheckBox" dentro del mismo, como queda dicho:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
  c,s: string;
begin
  for i := 0 to GroupBox1.ControlCount-1 do
  begin
    if(TCheckBox(GroupBox1.Controls[i]).Checked)then
    begin
      if c ='' then
        c := TCheckBox(GroupBox1.Controls[i]).Caption
      else
        c := c +','+ TCheckBox(GroupBox1.Controls[i]).Caption;
    end;
  end;
  s := Format('SELECT %s FROM tabla', [c]);

  ShowMessage(s);
end;

Disclaimer: Fíjate que en este segundo código fuente se asume que en el "GroupBox" sólo habrá "CheckBox"; que no se comprueba si nos topamos con otro tipo de controles, etc. En fin, es sólo para que te hagas una idea de una posible solución para el caso.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita