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 20-02-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Centrar Form sin parpadeos.

Si ya lo se..., mas de uno me va a mandar a fijarme temas anteriores, pero no encontré algo específico.

Bueno como sabrán por default Delphi crea los forms al arrancar la aplicación y los mantiene hide y cuando el usuario requiere dicho form lo visualiza. Hasta ahí estamos, pero porque no me centra los form una vez que lo cerró la primera vez ?. No quiero crear cada form cada vez que lo requiera si ya lo tengo en memoria. Y si lo centro en el 'Activate' no puedo evitar el parpadeo horrible. Además supongo la cosa se pone peor al usar VCLSkin, hasta me minimiza la aplicación, eso sí lo centra. Puaj! es repulsivo ver una cosa de esta. Bueno espero me puedan tirar una rta.

Saludos y muchas gracias!!!
Sigan así!!!!
Responder Con Cita
  #2  
Antiguo 20-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Porque es el comportamiento que tienen los forms.

Como sabes, realmente no los cierra, los esconde. Al hacer un show, mirando su código hace esto:
Código Delphi [-]
procedure TCustomForm.Show;
begin
  Visible := True;
  BringToFront;
end;
Como ves, no modifica sus propiedades Left y Top y esto es lógico.

Imagina que creo una ventana, antes de mostrarla cambio su top y left para ponerla a mi gusto en un lugar de la pantalla y después Show lo centra en pantalla.... grrrrrr.

Se me ocurre, modificar el comportamiento de los forms así, Crea uno nuevo que se usará como base:
Código Delphi [-]

TBaseForm = class(tform)


protected
    procedure DoShow;override;
end;

implementation

procedure TBaseForm.DoShow;
begin
 // aquí centras el form, 
 inherited DoShow;
end;
Guarda el .pas como UbaseForm y el form como frmBaseForm.

Ahora te vas a todos tus Forms, y donde pone:
Código Delphi [-]
FormXX = Class(TForm)
sustituyes el "TForm" por "TBaseForm" y haces un "uses UBaseForm" de la unidad recien creada. Todos tus forms, al heredar ahora de TBaseForm, harán lo que quieres.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 20-02-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Bien, lo probaré al volver

Lepe, gracias por tu rta. lamentablemente estoy trabajando y acá es with VB
y no puedo probar esto.
Tengo otra consulta mejor Cómo creo un arrays de columnas???
esta te va a gustar más hehe. Está creo en varios también.

Saludos y muchas gracias por tu tiempo
Responder Con Cita
  #4  
Antiguo 20-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pues a pelo. Crea una rutina en tu form que se llame ShowCentered, en ella centras el form en pantalla y luego llamas a Show.

Siempre tendrás que recordar llamar a "ShowCentered" en lugar de "Show", pero en mis humildes conocimientos de VB no se me ocurre otra cosa.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Centrar PÁneles nax OOP 4 30-07-2005 06:18:45
Centrar en pantalla Gorehide Varios 3 09-07-2004 11:59:28
Evitar parpadeos carloscampoy Gráficos 3 08-01-2004 17:53:56
Desplazamiento sin parpadeos craven Gráficos 2 09-07-2003 20:12:05


La franja horaria es GMT +2. Ahora son las 17:21:47.


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