Hola.
Cita:
Empezado por roman
...
Ahora, específicamente, si bien no manejo con soltura C++, me parece que los objetos Lista y RadioGroup1 son variables locales al método así que no tienes forma de acceder a ellos en otros contextos y por tanto no hay cómo borrarlos. Quizá deberías tener variables Lista y RadioGroup declaradas fuera del método, posiblemente como campos privados de la clase del formulario y usar esas variables para construir los objetos y, en su caso borrarlos desde la excepción.
|
Coincido plenamente.
Cita:
Empezado por mamcx
...
Los eventos deberia ser "reacciones", no usarse en la logica normal (porque los eventos no tienen un orden predecible y terminan armando un flujo espaguetti).
|
Totalmente de acuerdo.
A modo de ejemplo,
.hpp:
Código:
...
class TfCalEst : public TForm
{
__published:
...
private:
TRadioGroup* FRadioGroup;
TListView* FListView;
void __fastcall TfCalEst::CreateControl( const int op );
public:
...
};
.cpp
Código:
void __fastcall TForm1::CreateControl( const int op )
{
if (op == 3 || op == 4) {
delete FListView;
FListView = NULL;
FListView = new TListView(Panel1);
...
}
else {
delete FRadioGroup;
FRadioGroup = NULL;
FRadioGroup = new TRadioGroup(Panel1);
...
}
}
void __fastcall TfCalEst::FormCreate(TObject *Sender)
{
CreateControl ( mOpcMenu->Tag );
}
[...]
void __fastcall TfCalEst::Button1Click(TObject *Sender)
{
try {
...
} catch(Exception &Exc) {
...
CreateControl( mOpcMenu->Tag);
}
Tambíen revisa este artículo sobre el uso de
return dentro de
catch:
Cosas para nunca hacer con C++ Builder
Saludos .)