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 28-08-2008
Avatar de JoysticK
JoysticK JoysticK is offline
Miembro
 
Registrado: abr 2004
Posts: 68
Poder: 21
JoysticK Va por buen camino
Un Close pasota....

Pues tengo un problemita con un Close un tanto pasota, la cosa es que llamo a un formulario mediante Formulario.ShowModal; y en el OnActivate de este unas cuantas lineas de codigo y cuando termina esas lineas quiero que cierre ese formulario, intento meterle un Close; pero como que no me hace ni caso...

Si utilizo el OnShow, empieza a correr las lineas de codigo pero no da tiempo ni a dibujarse el formulario asi que no veo que es lo que esta haciendo hasta que ya ha terminado.... Alguna sugerencia ?
__________________
Borland Delphi XE2 // Interbase Server
Responder Con Cita
  #2  
Antiguo 28-08-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por JoysticK Ver Mensaje
Pues tengo un problemita con un Close un tanto pasota, la cosa es que llamo a un formulario mediante Formulario.ShowModal; y en el OnActivate de este unas cuantas lineas de codigo y cuando termina esas lineas quiero que cierre ese formulario, intento meterle un Close; pero como que no me hace ni caso...

Si utilizo el OnShow, empieza a correr las lineas de codigo pero no da tiempo ni a dibujarse el formulario asi que no veo que es lo que esta haciendo hasta que ya ha terminado.... Alguna sugerencia ?
Hola JoysticK,
Primeramente, el título no es muy adecuado. ¿Qué significa pasota?

Con respecto a tu duda ¿Porqué en el OnActivate? Me parece, por lo que describes, que sería apropiado el evento OnCreate talvez. Si nos pudieras comentar más al respecto podríamos asesorarte mejor. ¿que hacen esas dichosas lineas de código?

Por otro lado, un Form de forma modal no tiene demasiado sentido si va a cerrarse en forma automática. Por lo general se brinda esta opción para permitir al usuario la obligatoriedad de realizar alguna acción e impedirle realizar otras hasta que no "confirme" su pedido.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 28-08-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola JoysticK, puedes hacerlo de la forma que explica Neftali en este hilo http://www.clubdelphi.com/foros/showthread.php?t=58890 . Solo por curiosidad que significa pasota.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 28-08-2008
Avatar de JoysticK
JoysticK JoysticK is offline
Miembro
 
Registrado: abr 2004
Posts: 68
Poder: 21
JoysticK Va por buen camino
Hola Delphius, lo siento jeje, pasota significa.... revelde podria ser.....

La cosa es la siguiente, mi aplicacion abre el formulario principal, mira si existen actualizaciones, si existen abre el formulario sincroniza mediante un showmodal para que no haga nada mas hasta que no se descargue todas las actualizaciones, el sincroniza se conecta a la base de datos y empieza a recorrer un loop hasta que todos los registros han sido descargados que es el momento de enviar un mensje y un close para que se cierre el sincronizay continue la aplicación normal...

Si pondo el codigo en el FormCreate, el codigo se ejecuta pero el formulario no se dibuja y no veo los mensajes que devuelve a un Memo que le he puesto, si lo pongo en el OnShow tampoco se llega a dibujar el formulario y estoy utilizando Application.precessmesage cada vez que recore el loop...


P.D. Aqui la definición de "pasota": 1. adj. col. [Persona] generalmente joven que rechaza las normas o principios de la sociedad establecida,adoptando una postura de total desinterés.
Se suele escuchar bastante por aqui por Andalucía jeje
__________________
Borland Delphi XE2 // Interbase Server

Última edición por JoysticK fecha: 28-08-2008 a las 18:44:07. Razón: Definicion de pasota...
Responder Con Cita
  #5  
Antiguo 28-08-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En mi opinión, el proceso de actualización debería hacerse desde el formulario principal, dejando el otro sólo para mostrar el grado de avance. Yo procedería mas o menos así (desde el formulario principal):

Código Delphi [-]
Self.Enabled := false;

frmAvanceActualizacion.ProgressBar.Max := NumeroDeRegistros;
frmAvanceActualizacion.Step := 1;
frmAvanceActualizacion.Show; // obsérvese que no es ShowModal
frmAvanceActualizacion.Refresh; // forzamos el pintado de la ventana antes del ciclo

while ... do
begin
  {
    código de actualización
  }

  frmAvanceActualizacion.ProgressBar.StepIt;
end;

frmAvanceActualizacion.Close;
frmAvanceActualizacion.Enabled := true;

Aquí, frmAvanceActualizacion sustituiría a Sincroniza y sólo tendría un ProgressBar y algún mensajito.

No podemos usar ShowModal porque entonces no se ejecutaría nada hasta no cerrar el formulario, pero impedimos la interacción con el formulario principal ponieno Enabled := false.

// Saludos
Responder Con Cita
  #6  
Antiguo 28-08-2008
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
Bueno... O yo estoy más inteligente de lo normal, o los demás están medio dormidos...

Pero, digo, se me ocurre. ¿Con un Form.Refresh? Ponerlo como primera línea del OnActivate, digo, antes de empezar a hacer cualquier cosa.

PD: Ésta es una de esas situaciones raras en las que uno piensa: "No puedo tener razón, algo tengo que haber entendido mal."
Responder Con Cita
  #7  
Antiguo 28-08-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Has probado lo que propones? Recuerda que el amigo necesita cerrar el formulario luego de terminado el proceso.

// 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
TClientDataSet problemas open-close delphijm Conexión con bases de datos 2 26-05-2008 03:16:37
Close Querys Loviedo Firebird e Interbase 2 30-06-2005 23:39:33
Self Close Telmito Varios 3 06-01-2005 17:05:41
Application.Terminate Vs Close neon Varios 2 30-07-2004 00:11:55
Refresh contra close-open AbcXxx Firebird e Interbase 3 18-06-2003 17:45:20


La franja horaria es GMT +2. Ahora son las 11:38:32.


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