Ver Mensaje Individual
  #10  
Antiguo 24-08-2005
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Reputación: 19
Chente(rMan) Va por buen camino
Tienes razón, creo que no me explique bien, pero como el titulo del post decia Deshabilitar y habilitar el onclick de un CheckBox, asumi que se entería , ahi estuvo mi error, "mia culpa" , ok. lo interare otra vez, tengo 30 ChekBox:

CheckBox1
.
.
CheckBox30

cada uno de ellos tiene codigo diferente en su evento onclick.

Cuando yo hago una busqueda sobre uno de mis reportes, la propiedad checked de estos CheckBox debe cambiar segun lo criterios que defino en mi busqueda, entonces, ya que tengo los resultados de mis busquedas, me preparo a cambiar la propiedad checked de los cb's, para ello, pongo a todos en false a su propiedad checked.

Código Delphi [-]
procedure TfrmForma.LimpiarCheckBox;
var Check: TcheckBox;
     I: Integer;
begin
  for I := 0 to ComponentCount - 1 do
    if Components[i] is TCheckBox then
      begin
        Check := TCheckBox(Components[i]);
        Check.Checked := False;
      end;
end;

Con esto se dispara el evento OnClick de todos los cb's. Para ello necesito deshabilitar el onclick de estos. por lo tanto hago esto.

Código Delphi [-]
procedure TfrmForma.LimpiarCheckBox;
var Check: TcheckBox;
     I: Integer;
begin
  for I := 0 to ComponentCount - 1 do
    if Components[i] is TCheckBox then
      begin
        Check := TCheckBox(Components[i]);
        Check.OnClick := nil;
        Check.Checked := False;
      end;
end;

Con esto logro que no se ejecute el OnClick, pero tengo entendido que debo de copiar el evento, como le puedo hacer para no tener que declarar 30 variables, uno para cada CheckBox.

Código Delphi [-]
procedure TfrmForma.LimpiarCheckBox;
var Check: TcheckBox;
     I: Integer;
     copiaEvento: TNotifyEvent;
begin
  for I := 0 to ComponentCount - 1 do
    if Components[i] is TCheckBox then
      begin
        Check := TCheckBox(Components[i]);
        copiaEvento := Check.OnClick  //aqui es donde no se como...
        Check.OnClick := nil;
        Check.Checked := False;
      end;
end;

para que despues de todas las validaciones que le hago al programa pueda voler a asignarle su evento a cada uno de ellos, algo asi.

Código Delphi [-]
procedure TfrmForma.LimpiarCheckBox;
var Check: TcheckBox;
     I: Integer;
begin
  for I := 0 to ComponentCount - 1 do
    if Components[i] is TCheckBox then
      begin
        Check := TCheckBox(Components[i]);
        Check.OnClick := copiaEvento   //y aqui regresarle su evento.
      end;
end;


Espero que me puedan ayudar y gracias por contestar.


Saludos.

Vicente López.
Responder Con Cita