Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   mostrar y ocultar columnas de un DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=87672)

wilcg 10-02-2015 03:56:57

mostrar y ocultar columnas de un DBGrid
 
Hola amigos del foro, la consulta es. ¿Como mostrar y ocultar columnas de un DBGrid? lo que deseo es implementar
una ventana propia para seleccionar las columnas que uno desea ver en un DBGrid.
estoy trabajando en este codigo, asi muestro las columnas del DBGrid en un TCheckListBox.

Código Delphi [-]
var
   i :Integer;
begin
  CheckListBox1.Clear;
  for i := 0 to DBGrid1.Columns.Count-1 do
  begin
    CheckListBox1.Items.Add(DBGrid1.Columns[i].Title.Caption);
    CheckListBox1.Tag := i;
    if DBGrid1.Columns[i].Visible = True then
      CheckListBox1.Checked[i] := True
    else
      CheckListBox1.Checked[i] := False;
end;

Ahora para seleccionar ocultar/mostrar una columna del DBGrid en tiempo real, es el problema

Código Delphi [-]
if CheckListBox1.Checked[tag] = True then
  DBGridCProductos.Columns[tag].Visible := False
else
  DBGridCProductos.Columns[Tag].Visible := True;


Necesito que alguien me ayude con este problemita, si alguien tiene una mejor forma de hacerlo bienvenido.

ecfisa 10-02-2015 11:36:18

Hola wilcg.

Fijate si te sirve de este modo:
Código Delphi [-]
(* Ocultar las columnas, copiar títulos al combo *)
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i:= 0 to DBGrid1.Columns.Count-1 do
  begin
    DBGrid1.Columns[i].Visible:= False; // ocultar columna
    CheckListBox1.Items.Add(DBGrid1.Columns[i].Title.Caption);  // copiar título al combo
  end;
end;

(* Mostrar/Ocultar columna seleccionada *)
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
  with TCheckListBox(Sender) do
    DBGrid1.Columns[ItemIndex].Visible:= not DBGrid1.Columns[ItemIndex].Visible;
end;

Saludos :)

wilcg 10-02-2015 17:47:08

ecfisa, muchisimas gracias por tu ayuda está genial.


La franja horaria es GMT +2. Ahora son las 03:18:03.

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