PDA

Ver la Versión Completa : Problema con RadioButtons en diferentes procedures


Stilgar
08-05-2007, 20:54:34
Buenas a tod@s!

tengo una pequeña duda y espero que me podais ayudar:

En un procedure creo con su constructor unos RadioButtons en un GroupBox (TRadioButton.Create(Self)). Una vez creados quiero acceder a la propiedad 'checked' pero desde el evento Click de un boton pero me da un error de Access Violation.

¿cual puede ser el problema?
¿es posible que al crear estos componentes en ejecución no pueda acceder a ellos desde otro procedimiento?

Los componentes los creo con un indice en el primer procedimiento dentro de un bucle de esta manera:

var
KC: array of TRadioButton;
...
while not OraStoredProc1.Eof do
begin
KC[i] := TRadioButton.Create(Self);
KC[i].Parent := Form1.GroupBox2;
KC[i].Height := 17;
...
end;

para acceder a ellos desde el boton creo un nuevo array de TRadioButton con el mismo nombre y los recorro:

var
KC: array of TRadioButton;
...
for i := 0 to 3 do
if KC[i].checked = true then ...


¿Es esto correcto?

Gracias por adelantado y un saludo!!

jhonny
08-05-2007, 21:03:16
Intenta crear KC fuera del procedimiento (De manera global) y nos cuentas como te va. Ahh, y no lo vuelvas a declarar en el OnClick del botón.

roman
08-05-2007, 21:03:49
¿cual puede ser el problema?

[...]

Los componentes los creo con un indice en el primer procedimiento dentro de un bucle de esta manera:

[...]

para acceder a ellos desde el boton creo un nuevo array de TRadioButton con el mismo nombre y los recorro:


Yo creo que éste es el problema. Ambos areglos son variables locales al procedimiento y el segundo no tiene nada que ver con el primero. Declara el arreglo en el formulario y usa el mismo en ambos procedimientos.

// Saludos

roman
08-05-2007, 21:04:19
¡Ah, bueno! Eso mismo :)

jhonny
08-05-2007, 21:09:09
Jejeje, De todas maneras a mi respuesta le faltaba explicar el "por que", habilidad que tu posees indudablemente :D

Stilgar
08-05-2007, 21:14:46
genial, funcionó! vaya lapsus :p:p:p, no se como se me ocurrió declararla en dos procedimientos diferentes
muchas gracias!!!! :D:D