Hola mmmm se que quizá estan dando respuesta a la pregunta de alguien más, pero yo tengo el mismo problema y según yo no lo estoy haciendo de una forma erronea.
Les comento, Tengo una forma donde lo único que tengo es un TXMLDocument (name: xml_doc) con el que leo un cuestionario en xml. Este cuestionario por necesidades del mismo varía el número de respuestas que a efectos del sistema se convertirán en radiobuttons. Por tal motivo debo generarlos de manera dinámica cada vez que se cargue una pregunta. Sin embargo en ocasiones y no siempre en el mismo momento me marca este tipo de errores cuando genero los nuevos elementos.
este es mi código
Código Delphi
[-]
procedure Tfrm_quiz.cargaPregunta(index:integer);
var
pregunta: IXMLNode ;
arriba, i, max_node_child:integer;
boton : TbitBtn;
radio: TRadioButton;
control : TControl;
_label : Tlabel;
begin
boton := nil;
radio := nil;
_label := nil;
control := nil;
if (index <> 0) then
begin
for i:= 0 to (self.ControlCount -1) do
begin
control := self.Controls[0]; freeandnil(control);
end;
end;
pregunta:= self.xml_doc.DocumentElement.ChildNodes[index];
_label := TLabel.Create(nil);
with _label do
begin
left := 16;
top:= 16;
caption := pregunta.ChildNodes['reactivo'].Text;
parent:=self;
end;
max_node_child := pregunta.ChildNodes.Count - 1;
arriba := 64;
for i:= 1 to max_node_child do
begin
radio := TRadioButton.Create(nil);
with radio do
begin
left := 16;
top:= arriba;
arriba := arriba +30;
width := 560;
name := 'rdb_'+inttostr(i);
helpKeyword := pregunta.ChildNodes[i].Attributes['etiqueta'];
caption := pregunta.ChildNodes[i].Text;
onClick := evaluaClick;
parent:=self;
end;
end;
if (index < self.max_node -1) then
begin
boton := TbitBtn.Create (nil);
with boton do
begin
caption := 'Siguiente';
left := 506;
top := 640;
name := 'btn_siguiente';
OnClick := BitBtn1Click;
parent:=self;
end;
end
else
begin
boton := TbitBtn.Create (nil);
with boton do
begin
caption := 'Finalizar';
left := 506;
top := 640;
name := 'btn_finalizar';
OnClick := finaliza;
parent:=self;
end;
end;
end;
Muchas gracias a quien me pueda ayudar y seguimos en contacto por aca...