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 31-01-2008
Avatar de pmtzg
pmtzg pmtzg is offline
Miembro
 
Registrado: jul 2007
Posts: 179
Poder: 17
pmtzg Va por buen camino
Pregunta ? Create !!

Hola a todos los del foro
quiero comentarles el siguiente dilema que tengo !!
tengo un programa que uso con menus

cuando ejecuto un form1 lo hacia de la siguiente manera:

Código Delphi [-]
 
Form1:=TForm1.Create(self);
  try
    Form1.ShowModal;
  finally
    Form1.Free;
  end;

aqui filtro información para extraer información de una base de datos
y lo mando a crystal report y bien lo hacia muy bien sin problema
si cierro el reporte y vuelvo a ejecutar el filtro
me mandaba un error de Access violatioin 0000000f5

aqui en el foro me comentaron ponlo de la siguiente manera :

Código Delphi [-]
 
with TForm1.Create(nil) do
    try
      Showmodal
    Finally
      Free
    end

y listo , ejecuto el form y lo hace , cierro el reporte y vuelvo ajecutar
y ya no me mando error, ingreso datos en los edit para filtrar mi información
y a la hora de aceptar para que ejecute el programa , me manda el
mensaje de error que :

el Reporte.rpt no puede conectar la base de datos

cierro el form y lo vuelvo abrir, ingreso datos y ya no me marca el error
y saca el reporte

volvi a hacerle el siguiente cambio :

Código Delphi [-]
 
Form1:=TForm1.Create(nil);
  try
    Form1.ShowModal;
  finally
    //Form1.Free;
  end;

nada mas que aqui omito el Form1.free

y ejecuto el form saco el primer reporte , cierro reporte y vuelvo ajecutar
y vuelve a salir el reporte y con esta opción no me marca ningun tipo de
Error,
mi Pregunta es la siguiente:

si no destruyo la contrucción que problema me puede acarrear
o puedo cambirar el Self, Nil por alguna otra que cuando le diga Form1.Free
y vuelva a ejecutar mi form1 no me marque ningun problema ??

Espero sus comentarios porque me marca esos error y porque
al no ejecutar el Form1.free me deja trabajar sin problema

Gracias por su tiempo
Responder Con Cita
  #2  
Antiguo 31-01-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Aqui hay varias cosas que creo que tanto en este hilo como en el anterior no se comentaron.
En el programa los form tienen varias maneras de crearse, entre ellas:
1-directamente, esta es cuando en el proyecto esta incluido el form, osea que al iniciarse el form se crea automáticamente.
Si se usa esta forma el form es llamado simplemente con un form.show, ya que este esta creado de antemano.
2-Creando y destruyendo el from, esta es la opcion que muestras en el codigo:
Código Delphi [-]
Form1:=TForm1.Create(self);
  try
    Form1.ShowModal;
  finally
    Form1.Free;
  end;
Es efectiva si hay en el proyecto muchos forms, agiliza la carga.
3- Para mi la esta opcion (me puedo equivocar para variar):
Lo que dice es que si el from NO ha sido creado, por eso el NIL (nulo), se muestre y posteriormente se libere.
Código Delphi [-]
 
with TForm1.Create(nil) do
    try
      Showmodal
    Finally
      Free
    end

Entonces viendo estas tres opciones (por supuesto también se puede crear por codigo y otros) esencialmente hacen lo mismo.
1- crea inmediatamente, no destruye.
2- crea cuando se necesita y destruye
3- crea si no esta creado con anticipación y destruye.
Bueno es una opinión mas.
Saludos
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
Orientacion con Create(self) pmtzg Varios 1 28-01-2008 22:34:01
Funcion Create de SQL GerTorresM SQL 3 07-09-2007 13:00:43
Create Function rickymarti Firebird e Interbase 1 02-12-2004 10:37:00
create view en delphi piyugo SQL 3 02-09-2004 00:33:00
Can't create socket juanchi Internet 1 09-10-2003 17:58:57


La franja horaria es GMT +2. Ahora son las 05:55:35.


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