En el OnCreate de un formulario, dependiendo del valor de una variable, creo de forma dinámica un TListView o un TRadioGroup así:
Código PHP:
void __fastcall TfCalEst::FormCreate(TObject *Sender)
{
if (mOpcMenu->Tag == 3 || mOpcMenu->Tag == 4)
{
Panel->Width = 300;
TListView *Lista = new TListView(Panel);
[...]
}
else
{
TRadioGroup *RadioGroup1 = new TRadioGroup(Panel);
[...]
}
}
Esto, evidentemente, se ejecuta sin mayor problema. En un evento OnClick de un botón pido al usuario un dato para hacer unos cálculos; por ejemplo:
Código PHP:
void __fastcall TfCalEst::Button1Click(TObject *Sender)
{
try
{
switch (mOpcMenu->Tag)
{
case '1':
case '2':
if (!InputQuery(Application->Title, "Indique el número de años a considerar para la estadística.", cAux))
throw Exception("");
if (StrToIntDef(cAux, 0) < 1 || StrToIntDef(cAux, 0) > 5)
throw Exception("El valor introducido (" + cAux + ") es incorrecto.");
break;
case '3':
[...]
break;
case '4':
[...]
break;
}
}
catch(Exception &Exc)
{
if (!Exc.Message.IsEmpty())
Mensaje(1, Exc.Message, "Volver");
FormCreate(NULL);
return;
}
}
Dado que si se produce una excepción se vuelve al OnCreate me interesaría que en ese catch pudiera hacer un delete de los objetos que haya creado al lanzarse el módulo pero no se me ocurre como hacerlo.