Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Reescribir Form

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Reescribir Form Responder citando

Estimados:
Necesito reescribir un Form de manera que al llamarlo pueda pasarle algún argumento, por ejemplo una tabla, algo así:

FormNuevo(tabla)->ShowModal;

Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Lo mejor que puedes hacer es agregarle un procedimiento al formulario y lo llamarias así:
Código:
{
  FormularioNuevo->Mostrar(Tabla);
}

y en FormularioNuevo el procedimiento sera +/- así:
Código:

void __fastcall FormularioNuevo::Mostrar(TDataSet * Tabla )
{  this->Tabla = Tabla;
    ShowModal();
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias, pero no me termina de convencer; lo que necesito es crear una nueva clase (creo) Form que permita pasarle algún/os argumentos al invocarlo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Si alguien pudiera ayudarme:
Lo que necesito es poder un llamar un Form al que pueda "pasarle" parámetros.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Cecito, aparentemente la solución es la que vos me das; no me convencía (por falta de conocimiento mío) pero por lo visto es la solución; gracias.
Podrías indicarme como agrego el procedimiento; o sea que va en el .h; etc.
Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Constructor Responder citando

Código:

//en el .h
class TForm1 : public TForm
{
__published:   // IDE-managed Components
private:   // User declarations
public:      // User declarations
          //Simplemente en el constructor agregamos una nuevo parametro
        __fastcall TForm1(TComponent* Owner,TStringList *Obj);
};

//en el .cpp
__fastcall TForm1::TForm1(TComponent* Owner,TStringList *Obj)
        : TForm(Owner)
{
}


//En el evento del boton lo creamos
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList Obj=new TStringList;
TForm1 *Form=new TForm1(this,Obj)
//etc..
}


Chau espero haber ayudado
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Perfecto, era lo que necesitaba.
Lo que no entendí es lo del evento en el Button1 del Form1, asumo has querido explicarme como invocarlo desde otro formulario, no desde el Form1.
Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ya que estamos:
el constructor me quedo así:
__fastcall TFormComunicacionOtraPersona::TFormComunicacionOtraPersona(TComponent* Owner, AnsiString *nombre)
: TForm(Owner)
{
this->nombre=new AnsiString;
this->nombre=nombre;
}

la pregunta es como reescribo el destructor asi puedo destruir la variable:

delete this->nombre;
Volver arriba
Mensaje    Asunto: destructor Responder citando

Todo formulario tiene un evento OnDestroy que se ejecuta antes de destruirse el formulario. Si no mal recuerdo tambien puedes sobrecargar el destructor.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Como indica Jumanor la mejor opción es el OnDestroy.

Ahora, viendo tu variable creo que seria mejor que no la crees como puntero. El tipo AnsiString gestiona automáticamente su memoria y muchas veces es mejor no es complicarnos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Saludos!

Independientemente de lo que quieras hacer, siempre para destruir instancias al destruir el objeto que los creo, lo mejor es utilizar un destructor, aqui te pongo como hacerlo:
Código:

//en el .h
class TForm1 : public TForm
{
__published:   // IDE-managed Components
private:   // User declarations
public:      // User declarations
          //Simplemente en el constructor agregamos una nuevo parametro
        __fastcall TForm1(TComponent* Owner,TStringList *Obj);
        __fastcall ~TForm1(); //Esta es la declaracion del destructor, cabe mencionar que los destructores no reciben parametros, por lo que no pueden ser sobre cargados.
};

//en el .cpp
__fastcall TForm1::~TForm1()
{
    //   aqui lo que quieras destruir o hacer
}


Espero te haya servido, saludos
_________________
Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

En la help aparece asi
virtual __fastcall TForm::~TForm()
{

}
Tienes razon una funcion virtual se redefine no se sobrecarga
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Un espectáculo, ahora soy un poco menos ignorante en la materia.
Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.