Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Detectar cuando cambia el itemindex de un radiogroup desde codigo (https://www.clubdelphi.com/foros/showthread.php?t=92719)

Anel Hernandez 10-01-2018 07:39:07

Detectar cuando cambia el itemindex de un radiogroup desde codigo
 
Hola,

tengo un procedimiento que se activa cuando cambia el itemindex de un radiogroup. Cuando se hace con el mouse todo funciona bien porque se activa el evento onclick. Pero cuando se hace desde codigo no se activa ningún evento.

Como pudiera detectar cuando cambia el itemindex de un radiogroup desde codigo?

gracias,
A

newtron 10-01-2018 10:45:24

Hola.

Si lo haces por código no necesitas detectarlo, ya sabes que valores estás poniendo, ¿no?

Saludos

duilioisola 10-01-2018 13:01:23

Desde código puedes forzar el OnClick, después de modificar el valor de ItemIndex.

Código Delphi [-]
begin
...
   aRadioGroup.ItemIndex := 1;
   aRadioGroupChange(Sender);
...
end;

Código Delphi [-]
begin
...
   aRadioGroup.ItemIndex := 1;
   // Si Sender no te interesa o no lo utilizas dentro del OnChange puedes usar NIL.
   aRadioGroupChange(nil);
...
end;

Anel Hernandez 10-01-2018 15:02:24

Hola,

en ese caso cuando le de click entonces se activa el onclick dos veces. Preferiria hacer un nuevo evento OnItemChange que se active solo cuando cambio el item desde codigo y no desde el click. Pueden explicarme como lo hago?

gracias,
A

duilioisola 10-01-2018 15:18:37

No se activará dos veces...
Cuando le des con el mouse se activa el OnClick.
Cuando lo modifiques por código no se ejecuta OnClick, a menos que le ejecutes exprésamente como he ejemplificado.

ecfisa 11-01-2018 12:12:36

Hola.
Cita:

Empezado por Anel Hernandez (Mensaje 523984)
Hola,

tengo un procedimiento que se activa cuando cambia el itemindex de un radiogroup. Cuando se hace con el mouse todo funciona bien porque se activa el evento onclick. Pero cuando se hace desde codigo no se activa ningún evento.

Como pudiera detectar cuando cambia el itemindex de un radiogroup desde codigo?

A mi no me queda claro que es lo que te está sucediendo, por que si cambias la propiedad ItemIndex desde código, el evento OnClick del TRadioButton se disparará como podes apreciar en este ejemplo simple:
Código Delphi [-]
var
  ix : Integer = -1;

procedure TForm1.FormCreate(Sender: TObject);
begin
  RadioGroup1.Items.CommaText := 'cero,uno,dos,tres,cuatro,cinco';
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  ShowMessage('RadioGroup1Click');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ix < RadioGroup1.Items.Count then
    Inc(ix)
  else
    ix := 0;
  RadioGroup1.ItemIndex := ix;
end;



Saludos :)

escafandra 11-01-2018 15:46:36

Efectivamente ecfisa tiene razón. El evento OnClick del RadioGroup se activa cuando el índice se cambia por código. Quizás la pregunta de Anel Hernandez no esté bien planteada.

Saludos.

Anel Hernandez 12-01-2018 06:59:35

Hola,

el problema esta en que yo cambio el itemindex desde codigo en el formcreate y entonces el onclick no se entera.

resolvi con la ayuda de duiloisola,

gracias+
A

Anel Hernandez 12-01-2018 07:28:14

hola nuevamente,

pensando en lo que decia ecfisa me puse a revisar y encontre el error.

Siempre entra al onclick. lo que pasa que en ese onclick hago operaciones con variables, una de ellas estaba definida x duplicado, global y dentro del procedimiento.

corregido todo,

gracias mil,
A


La franja horaria es GMT +2. Ahora son las 08:28:20.

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