Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Crear y destruir formas dinamicamente (https://www.clubdelphi.com/foros/showthread.php?t=39717)

ing_gera 28-01-2007 10:15:43

Crear y destruir formas dinamicamente
 
Hola a todos, de antemano agradezo la ayuda que me puedan ofrecer.

Mi problema es que tengo una aplicacion en la cual permito que se creen automaticamente todas mis formas, y a la larga el consumo de memoria es enorme y se alenta la pc.

Quisiera saber como crear y destruir formas en C++ Builder 6 no le se muy bien la la POO por eso no se como hacerlo.

Gracias.

Cecilioxx 16-02-2007 00:45:23

Hola, saludos:

Creo que tu problema es, como dices, si creas todos los formularios te ocupa mucha memoria.
Es muy fácil (Yo tengo Builder 5, supongo es igual que en 6)
Tú diseña todos los formularios, como has venido haciendo. Vete a "Project", te aparecerá un ficha con varias pestañas. Elige "Forms". Allí te aparecerán todos tus formularios en una columna que dice: "Auto-create-forms" (Son los que se crean desde el principio. A la derecha te aparece una columna, inicialmente vacía "Available-forms" -que no se generan automáticamente- y tendrás que generarlos tú cuando los necesites y destruirlos cuando no sean necesarios.
Los que no quieras que se generen al principio pásalos a la 2ª columna con el botón >
Piensa que algún formulario de mucho uso puedes mantenerlo a la izquierda. Yo tengo siempre un formulario que llamo "Inicio" desde donde hago las llamadas a los procesos del programa.

Para crear y destruir los formularios utilizo el código siguiente, como
repuesta al evento Click al pulsar un botón

Código:


void __fastcall TInicio::Btn_UsuariosClick(TObject *Sender)
{
  Datos->FSociedades->Open();
  Datos->FCentros->Open();
  Datos->FUsu->Open();
  TUsuarios *Usuarios=new TUsuarios(this);//Creo el formulario Usuarios ya diseñado
 Usuarios->ShowModal();
 Datos->FUsu->Close();
 Datos->FSociedades->Close();
 Datos->FCentros->Close();
 delete Usuarios;//Destruyo el formulario Usuario
}
//---------------------------------------------------------------------------
void __fastcall TInicio::Btn_ClaveClick(TObject *Sender)
{
Datos->FUsu->Open();
TClave *Clave=new TClave(this); //Creo el formulario Clave
Clave->ShowModal();
Datos->FUsu->Close();
delete Clave;// Destruyo el formulario
}
//---------------------------------------------------------------------------
void __fastcall TInicio::Btn_IvaClick(TObject *Sender)
{
Datos->FIva->Open();
TPorcenIva *PorcenIva=new TPorcenIva(this); // creo el formulario
PorcenIva->ShowModal();
Datos->FIva->Close();
delete PorcenIva; //Le destruyo
}
//---------------------------------------------------------------------------
void __fastcall TInicio::Btn_EjerciciosClick(TObject *Sender)
{
Datos->FSociedades->Open();
Datos->FCentros->Open();
Datos->FEjercicios->Open();
TEjercicios *Ejercicios=new TEjercicios(this);
Ejercicios->ShowModal();
Datos->FEjercicios->Close();
Datos->FCentros->Close();
Datos->FSociedades->Close();
delete Ejercicios;
Datos->ActuBarra();
}

Todo es así de simple - A tu disposición


La franja horaria es GMT +2. Ahora son las 20:32:41.

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