Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   programa que no se descarga completamente (https://www.clubdelphi.com/foros/showthread.php?t=27109)

ElDioni 11-11-2005 17:51:26

programa que no se descarga completamente
 
hola tengo el siguiente codigo

Código Delphi [-]
  Application.Initialize;
 formacceso:=tformacceso.create(nil);
 if formacceso.Showmodal=mrOK then
 begin
   formacceso.Free;
   Application.CreateForm(TFormAgenda, FormAgenda);
   {...}
   Application.Run;
 end;
 end.
El programa arranca bien y todo funciona correctamente, el formagenda es un mdiform, cuando cierro el formagenda el evento close tengo puesto Action:=cafree; pero lo que ocurre es que en la barra de tareas se me queda un boton como si el programa estuviera aun activo pero al darle no carga nada, o sea el programa se ha descargado y el boton desaparece, pero al cerrar el programa se queda el boton, pero le das y desaparece alguien sabe porque ocurre esto
no tengo mucha prisa porque hasta el lunes no me va a hacer falta la ayuda de todas formas si alguien sabe porque pasa esto agradeceria su ayuda

Lepe 11-11-2005 20:28:54

Si en forma de acceso se le da a cancelar, ¿cuando se destruye el formaacceso?
Que pasa con la aplicación, porque no se ha llegado al Application.Run. ¿Estas completamente seguro de que se ha destruido correctamente de la memoria?

Personalmente no me gusta tocar el .dpr, prefiero que todo empiece con el form principal, es decir, se crea el form principal, se inhabilita todos los botones y demás, y se crea modalmente la ventana de acceso, y en base al resultado de esa ventana, se termina la aplicación o se continua.

saludos

roman 11-11-2005 20:38:12

Cita:

Empezado por Lepe
Personalmente no me gusta tocar el .dpr, prefiero que todo empiece con el form principal

¿Alguna razón en particular? Lo pregunto porque no quisiera que ElDioni u otros foristas se quedaran con la idea de que no es bueno modificar el dpr.

// Saludos

Lepe 12-11-2005 11:59:59

Si. Personalmente y particularmente no me gusta :p ¿manias?

Prefiero que mi forma de acceso quede dentro de la ventana de mi aplicación; veo un poco raro eso de que aparezca una pantalla pidiendo contraseña sin saber de qué programa es.


Seguro que ustedes le darán la forma correcta de trabajar en el dpr. Yo al menos, cuando he trabajado con parámetros en la linea de comandos y con pantallas de acceso, he tenido mis más y mis menos. Supongo que por cuestiones de un mal diseño.

Sé que las dll y programas de consola, por nombrar 2 ejemplos, se trabaja directamente sobre el dpr, es decir, técnicamente no habrá problemas con ellos como bien dice roman, pero no seré yo quien diga como hacerlo.

saludos

roman 12-11-2005 16:42:53

Cita:

Empezado por Lepe
veo un poco raro eso de que aparezca una pantalla pidiendo contraseña sin saber de qué programa es.

¡Hombre! Yo también. Pero ¿quién dice que no puedes ponerle un bonito logo y/rótulo a tu ventana de inicio que identifique plenamente la aplicación?

// Saludos

Lepe 13-11-2005 10:56:08

roman, ¿recuerdas CM_AFTERSHOW? Yo siempre lo tengo en mente ;)



saludos

ElDioni 14-11-2005 16:29:01

Gracias por las contestaciones pero no se que hacer
 
Como ya dije cuando hice la pregunta hasta hoy no he podido ver las respuestas no me queda claro lo que podria hacer, lo primero es que si solo cargo el foracceso y le doy a cancelar no se me queda nada en la barra de tareas es cuando introduzco la clave y entro, ahora si, en el programa principal, entonces al cerrar el formulario mdi principal es cuando me deja el boton en la barra de tareas como si siguiera cargado el programa, pero le das y el boton desaparece y no hay ni rastro del programa por ningún lado, siento la tardanza en responder pero creerme cuando digo que no puedo hacerlo de otra forma, gracias por la ayuda que me podais prestar

ElDioni 14-11-2005 16:34:12

ejecucion paso a paso
 
me acabo de dar cuenta de que si lo ejecuto paso a paso al cerrar el programa no se me queda nada cargado en la barra de tareas, esto no me ayuda en nada, ahora estoy mas perdido, porque en ejecucion normal se queda como si estuviera cargado aun, que no lo esta, y cuando lo hago paso a paso no se queda nada, alguien lo entiende?

Lepe 14-11-2005 19:03:02

Cita:

Empezado por ElDioni
siento la tardanza en responder pero creerme cuando digo que no puedo hacerlo de otra forma

Sí puedes con mi mensaje de CM_AFTERSHOW.


Cita:

Empezado por ElDioni
porque en ejecucion normal se queda como si estuviera cargado aun, que no lo esta, y cuando lo hago paso a paso no se queda nada, alguien lo entiende?

Eso es señal de que algo se queda en memoria, bien un Handle a una ventana destruida, una falta de procesar algún mensaje (de windows o de delphi), etc.

Al ejecutarlo mediante el depurador, Windows no tiene el control del programa, lo tiene delphi; al ejecutarlo paso a paso, los mensajes que le lleguen a una ventana se retrasarán más que en una "ejecución normal", por tanto, es lógico que funcione bien.

saludos

ElDioni 14-11-2005 20:03:16

Otra cosa curiosa
 
Acabo de descubrir tambien que solo pasa en los equipos que tienen el windows 98 como el mio, los que tienen instalado el windows xp no les ocurre esto que me lleva de cabeza, entonces: es un error de mi programa en delphi, es un error de windows, es un error jodio, es un error facil de solucionar, que puedo hacer

ElDioni 16-11-2005 10:12:27

Sigo sin solucionar el problema
 
Aun sigo sin saber que hacer con el problema de este programa, siento insistir pero si alguien puede hecharme un cable se lo agradeceria

Lepe 16-11-2005 11:18:43

¿Has probado lo del CM_AFTERSHOW?

vtdeleon 16-11-2005 12:34:44

Saludos
No me queda claro el por que sigue estando en la barra de tareas. Estaras abriendo otro formulario al momento de abrir el Formulario principal? Ejecuta tu aplicacion con F7 y mira a ver qué es lo que no se libera!
Código Delphi [-]
begin
  Application.Initialize;
  Application.CreateForm(TDMDB, DMDB);//DataModulo
  //  frmAcceso:=TfrmAcceso.Create(nil);
  with tfrmAcceso.Create(nil) do begin
    if ShowModal=mrok then begin
      frmPantEntr:=TfrmPantEntr.Create(nil);//SplashScreen
      Application.CreateForm(Tfrmprincipal, frmprincipal);
      FreeAndNil(frmPantEntr);
      Application.Run;
    end else begin
      FreeAndNil(DMDB);
      application.Terminate;
    end;//If
  end;//With
end.
Mira a ver si esto te puede ayudar. No me da error

ElDioni 16-11-2005 16:19:54

Gracias a todos por vuestro tiempo
 
gracias a todos de nuevo, al final lo he resuelto con lo propuesto por vtdeleon,
no pude hacerlo funcionar con lo de aftershow pero de todas formas gracias a todos me habeis ayudado mucho


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

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