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 

Evitar 2 instancias de Ficha padre e Hijas

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Evitar 2 instancias de Ficha padre e Hijas Responder citando

Hola de nuevo. Como ya dije estoy migrando de Delphi a Builder una aplicacion bastante compleja.
Tengo un problemas que necesito solucionar ya. Lo he intentado con los pocos conocimientos de C++ que tengo, pero sin resutados. Aqui va:
>>>>>>>>>>>>>>>>>>¿Como puedo evitar que mi aplicacion seejecute mas de una vez?
Y cuando creo y llamo a una fichas hija, que solo se cree una vez, osea que si ya está creada, simplemente tome el foco.

Gracias y saludos

Volver arriba
Mensaje    Asunto: Evitar 2 instancias de Ficha padre e Hijas Responder citando

Puedes controlar que no existan dos ventanas con el mismo nombre de clase. Para ello, tienes que cambiar el nombre de la clase del formulario principal de tu aplicación, redefiniendo el método CreateParams. En el Form1.h haces:

void __fastcall CreateParams (TCreateParams &Params);

y en el Form1.cpp escribes:

void __fastcall TForm1::CreateParams (TCreateParams &Params)
{
TForm::CreateParams(Params);
strcpy (Params.WinClassName,
"NombreForm");
}

Luego, en el código del proyecto, controlas que no haya un formulario con ese nombre de clase antes de ejecutar la aplicación:

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
if (FindWindow("NombreForm",NULL))
ShowMessage(
"Este programa ya está ejecutándose, y no se permite más de una "
"instancia de la aplicación al mismo tiempo.");
else
{
Application->Initialize();
Application->Title = "Titulo";
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}

Espero que te sirva de ayuda.

Volver arriba
Mensaje    Asunto: Evitar 2 instancias de Ficha padre e Hijas Responder citando

Gracias Jaquemate, pero me da este error:
[C++Error] Unit1.cpp(16): '_fastcall TForm1::CreateParams(Controls::TCreateParams &)' is not a member of 'TForm1'.
Me dices que coloque: void __fastcall CreateParams (TCreateParams &Params); en el form1.h ¿Te refieres al Unit1.h?, por que yo no veo el form1.h por ninguna parte. Lo he colocado en el Unit1.h
Y mi nivel de C++ no me llega para entender el codigo. Pero necesito la solución urgentemente. Por favor, ¿Como lo puedo solucionar?
Gracias
Volver arriba
Mensaje    Asunto: Evitar 2 instancias de Ficha padre e Hijas Responder citando

Tienes razón, debes colocar la declaración en el Unit1.h

Si te dá un error de compilación, seguramente es porque necesitas poner la declaración del método en la sección private o public de la clase:

private: // User declarations
void __fastcall CreateParams (TCreateParams &Params);

Volver arriba
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.