Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-01-2006
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 22
Jose_Pérez Va por buen camino
Creación/destrucción dinámica de forms; confirmar destrucción.

Hola a todos:

Tengo una aplicación (trabajo con Delphi 5) que lleva rodando algo más de un año. Después de chequear su funcionamiento, ayer me sorprendió con este mensaje de error: "A component named TfrmNombreForm already exists"·

He consultado el foro sobre la creación dinámica de formularios, y el método Free, y parece que todo mi código está en orden, al memos aparentemente. También he pasado los forms de "auto-create" a "available forms".

El FormStyle del form principal es fsMDIForm, y el del form "hijo" es fsNormal.

Así creo y muestro al firmulario...

Código Delphi [-]
procedure TfrmPrincipal.AltasdeValesClick(Sender: TObject);
var
  Form: TfrmAltasVales;
begin
  Form:=TfrmAltasVales.Create(Self);
  With Form Do
       Begin
       Height:=436;
       Width:=786;
       ShowModal;
       End;
end;

Y en el evento OnClose del formulario lo destruyo..

Código Delphi [-]
procedure TfrmAltasVales.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action:=caFree;
end;

Como veis, todo parece ser correcto. Insisto en que la aplicación lleva más de un año rodando y nunca antes se me había presentado este error. De todos modos hace días que el sistema operativo (Windows 2000) está fallando. No obstante, me gustaría saber si hay algún modo de comprobar si los formularios "realmente" se han destruido.

Gracias.

Última edición por Jose_Pérez fecha: 18-01-2006 a las 11:24:49.
Responder Con Cita
  #2  
Antiguo 18-01-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si es formulario va a ser modal, puedes cambiar el codigo por éste:

Código Delphi [-]
var
  Form: TfrmAltasVales;
begin
  Form:=TfrmAltasVales.Create(Self);
  // proteccion
  try
    With Form Do
       Begin
       Height:=436;
       Width:=786;
       ShowModal;
    End;
  finally
    FreeAndnil(Form);
  end;

Y en el close utilizar caNone;

Supongo que tu problema viene, porque debido a algun fallo entre la creación y la destrucción el formulario, éste no se ha destuído realmente. Creo que de esta forma podrás asegurarlo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 18-01-2006
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 22
Jose_Pérez Va por buen camino
Gracias Neftali. Voy a probarlo.

Un apunte: supongo que utilizar caNone es equivalente a no poner nada.
Responder Con Cita
  #4  
Antiguo 18-01-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Jose_Pérez
...supongo que utilizar caNone es equivalente a no poner nada.
Directamente de la ayuda de Delphi:

//------------------------------------------------------------------------
If a form is an MDI child form, and its BorderIcons property is biMinimize, then the default Action is caMinimize. If a
MDI child form does not have these settings, the default Action is caNone...
If a form is an SDI child form, Action defaults to caHide.
//------------------------------------------------------------------------
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
creación de forms dinámica dandia28 OOP 2 30-12-2005 17:18:34
Creacion y destruccion de forms lbidi Varios 7 01-09-2005 18:07:34
Crear Forms en forma DINAMICA Phacko Varios 4 11-09-2004 00:02:18


La franja horaria es GMT +2. Ahora son las 22:28:01.


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
Copyright 1996-2007 Club Delphi