Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-08-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
Aclaraste un poco mas pero no tanto,

queres ejecutar el mismo evento OnClick para todos los checkBox's o queres uno para cada uno?
__________________
[Crandel]
Responder Con Cita
  #2  
Antiguo 24-08-2005
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 21
Chente(rMan) Va por buen camino
Uno para cada uno.

Cada CheckBox tiene su evento onclick, entonces tendria que grabar cada evento en una variable diferente para después regresarlelos.

ejemplo:

Código Delphi [-]
var Check: TcheckBox;
     I: Integer;
     copiaEvento1, copiaEvento2 .....  copiaEvento30: TNotifyEvent;
begin
  for I := 0 to ComponentCount - 1 do
    if Components[i] is TCheckBox then
      begin
        Check := TCheckBox(Components[i]);
        copiaEvento1 := Check.OnClick  //aqui es donde no se como...
//      copiaEvento {como irle cambiando los numeros} := Check.OnClick  
        Check.OnClick := nil;
        Check.Checked := False;
      end;


y de regreso pues lo mismo.

Saludos.

Vicente López.
Responder Con Cita
  #3  
Antiguo 24-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Código Delphi [-]
TForm1 = class(Tform)
private
  Copias : array [1..30] of TNotifyEvent;

...
end;

var Check:Tcheckbox;
     I: Integer;
     contador:integer;
begin
  contador := 0;
  for I := 0 to ComponentCount - 1 do
    if Components[i] is TCheckBox then
      begin
        Check:=  TCheckbox(Components[i]);
        inc(contador);
        copias[contador] :=  check.Onclick;

        Check.OnClick := nil;
        Check.Checked := False;
      end;

al regresar los eventos funciona exactamente igual, siempre y cuando no agregues Checkboxes en tiempo de ejecución entre un guardado y una restauración.

Para restaurarlo, es ese mismo bucle pero usando:

check.Onclick := copias[contador]
y eliminando las 2 lineas siguientes.

Un saludo
Responder Con Cita
  #4  
Antiguo 24-08-2005
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 21
Chente(rMan) Va por buen camino
Thumbs up

Genial Lepe, un arreglo, lo intentare y te aviso.


Editado: Listo, esta funcionando a la perfeción. Gracias a todos...



Saludos.

Vicente López.

Última edición por Chente(rMan) fecha: 24-08-2005 a las 21:03:23.
Responder Con Cita
  #5  
Antiguo 24-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Edito: jajaja, ahora que está todo listo llego yo a rematarlo

Despues de todo el rollo, he creado un TcheckBox que no tiene ese comportamiento. Ha sido más facil de lo que creía. Os dejo la unidad.

Código Delphi [-]
unit CheckBoxNoClick;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls;

type
  TCheckBoxNoClick = class(tcheckBox)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
    procedure SetChecked(Value:Boolean);
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TCheckBoxNoClick]);
end;

{ TCheckBoxNoClick }

procedure TCheckBoxNoClick.SetChecked(Value: Boolean);
begin
  try
    clicksdisabled := True;
    inherited;
  finally
    ClicksDisabled:= False;
  end;
end;
end.

Cuando se quiera por código modificar el checked, se llama a SetChecked, que tiene el truco de inhabilitar el evento Click.

Saludos

Última edición por Lepe fecha: 24-08-2005 a las 21:06:24.
Responder Con Cita
  #6  
Antiguo 25-08-2005
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 21
Chente(rMan) Va por buen camino
Angry

Que tal Lepe, pues te cuento que todavia no he probado la unidad, porque estoy algon intrigado con esto.


te cuento, es te es el procedimiento que me inhabilita los clicks de los checkBox...

Código Delphi [-]
procedure TfrmExpediente.LimpiarCheckBox; //Limpia los checkBox y Deshabilita el click...
var
Check: TcheckBox;
I, j: Integer;
begin
j := 0;
for I := 0 to ComponentCount - 1 do
if Components[i] is TCheckBox then 
begin
Check := TCheckBox(Components[i]);
inc(j);
CopiarEvento[j] := Check.OnClick;
Check.OnClick := nil;
Check.Checked := False;
Check.Enabled := True;
end;
end;

despues de que mando llamar este procedimiento, me dispongo a marcar los check Box que deben estar prendido segun unas condiciones, tomadas de una sentencia que ejecuto, pero ahora resulta que la sentencia me arroja 0 resultados, esta muy raro, ¿no cree?, ¿que podra estar sucediendo? .

Edito:
Ya instale la unidad, ya realize unas pruebas y no le entiendo, se supone que me deshabilita los click's ¿cierto?, este es el código que puse.

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

y después pongo CheckBoxNoClick1.Checked := True; y si me ejecuta el click.

Saludos.

Última edición por Chente(rMan) fecha: 25-08-2005 a las 22:51:52.
Responder Con Cita
  #7  
Antiguo 25-08-2005
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 21
Chente(rMan) Va por buen camino
Talking

que tal, creo que al fin quedo solucionado, muy bueno por cierto, encontre este artículo.


http://www.delphi3000.com/articles/a...sp?SK=checkbox




Saludos.

Vicente López.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:28:48.


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