Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Eventos en un array de componentes (https://www.clubdelphi.com/foros/showthread.php?t=50039)

JuanB 06-11-2007 21:00:03

Eventos en un array de componentes
 
Tengo un array de CheckBox que lo defino así:
aCuotas: Array [0..10] of TCheckBox;

Creo los 11 CheckBoxs y accedo a las propiedades sin problemas. El problema se presenta cuando quiero tener acceso al evento OnClick de estos checks y poder identificar en cual se hace el click (ya que por cuestiones del sistema deben estar "checkados" en forma consecutiva) para permitir (o no) que se marque con el tilde el CheckBox sobre el cual se hizo el click.

Desde ya agradezco cualquier solución y/o sugerencia.

dec 06-11-2007 21:14:32

Hola,

Bueno. Usar un Array pudiendo usar un "TObjectList", por ejemplo, hará que tengas que trabajar más, para empezar. Ahora bien, para identificar al "checkbox" en que se hizo clic, puedes valerte del parámetro "Sender" del propio evento "OnClick".

Dicho parámetro "Sender" puede contener una referencia al objeto que "disparó" el evento. No siempre es así, porque nada te impide utilizar el evento "OnClick" por tu cuenta y riesgo, y no enviar referencia alguna, por ejemplo, pero, en general, es como digo al principio.

De tal como que es posible hacer algo como esto:

Código Delphi [-]

procedure TForm.CheckBoxClick(Sender: TObject);
begin
  // Este es el método que responde a los eventos "OnClick" de los "checkbox"

  if (Sender is TCheckBox) then
  begin
    // Sender es verdaderamente un "checkbox", y podemos acceder
    // a sus propiedades "casteando" el "Sender" tal que TCheckBox(Sender)

  end;

end;

No sé si te aclaro algo o no... pero, a lo mejor te he dado alguna idea por lo menos. :)

Alfredo 06-11-2007 21:19:44

Hola y para recorrerlos y checkearlos prueba con esto, quiza puedas implementarlo:

Código Delphi [-]
var
  i: Integer;
begin
  for i := 1 to 11 do
     begin
        with TCheckbox(FindComponent('CheckBox' + IntToStr(i))) do
           begin
           Checked:= true;
     end;
end;


La franja horaria es GMT +2. Ahora son las 14:41:09.

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