Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Recorrer los componentes de un DbCtrlGrid ? (https://www.clubdelphi.com/foros/showthread.php?t=45882)

andresenlared 17-07-2007 16:51:06

Recorrer los componentes de un DbCtrlGrid ?
 
Saludos.

Amigos necesito, recorrer los coponentes(Tlabels, TDbedit, etc) que coloque sobre el DbCtrlGrig para cambiar unas propiedades, teniendo como base un filtro que tengo en base de datos. Como el DBctrlBrif es una grilla y donde se colocan los componentes es una fila de la grilla, la propiedad Component unicamente me arroja un solo objeto.

Se puede o NO se puede??
:confused:

Caro 17-07-2007 18:13:28

Hola, para recorrer creo que seria asi, no he utilizado este componente, he puesto solo un dbEdit en el DBCtrlGrid.

Código Delphi [-]
 for i:=0 to DBCtrlGrid.PanelCount do
 begin
  DBCtrlGrid.PanelIndex:=i;
  showmessage(DBEdit1.Text);
 end;

Saluditos

roman 17-07-2007 19:24:48

Caro, me parece que PanelCount cuenta el número de paneles que aparecen en el DBCtrlGrid, y que está determinado por RowCount y ColCount; pero creo que Andrés quiere recorrer las componentes dentro de cada panel.

Al parecer, esa única componente que ve Andrés, es de tipo TDBCtrlPanel y es la que, a su vez, contiene los otros controles, así que podría recorrer así:

Código Delphi [-]
var
  Panel: TDBCtrlPanel;
  I: Integer;

begin
  Panel := DBCtrlGrid1.Components[0] as TDBCtrlPanel;

  for I := 0 to Panel.ControlCount - 1 do
  begin
  {
    Aquí accedes a Panel.Controls[i]
  }
  end;

  DBCtrlGrid1.Refresh;
end;

El Refresh final es por si los cambios que se hacen son visuales (el color por ejemplo), de manera que se reflejen inmediatamente en todos los paneles.

Pero ojo, esto cambia todos los controles, es decir, de todos los paneles. Si lo que quieres es algo distinto según el registro de que se trate, no sé si pueda hacerse, pues aunque hay un evento OnPaintPanel, a juzgar po r la ayuda, parece que sólo sirve para pintar el fondo del panel.

// Saludos

Caro 17-07-2007 21:02:56

Entendido Roman, muchas gracias por la explicación

andresenlared 18-07-2007 01:32:55

Muchas gracias por su valiosa ayuda, entiendo lo que dice Roman, y la verdad es que necesito cambiar propiedades dependiendo de la informacion de un campo en base de datos. Utilice el evento Onpaintpane y me trabaja bien pero como dice roman es para pintar el panel, y los componentes del panel toman el ultimo cambio que se realice, no toma el cambio por panel...
saludos :rolleyes:


La franja horaria es GMT +2. Ahora son las 14:01:33.

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