Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   ¿Centrado de un form? (https://www.clubdelphi.com/foros/showthread.php?t=86416)

aguml 05-08-2014 18:35:16

¿Centrado de un form?
 
Hola amigos, he estado viendo como centrar un formulario en el escritorio y en las propiedades del form tenemos DesktopCenter y esta opcion va bien pero tengo una pega, si el form no es el main y lo abro desde el main por ejemplo, saldrá centrado pero si lo muevo de su posicion y lo cierro y vuelvo a hacer que aparezca ya no aparece centrado sino que aparece en la posicion donde fue cerrado. ¿se puede hacer que siempre que aparezca el form aparezca centrado sin importar la posicion donde fue cerrado? ¿como?

roman 05-08-2014 19:05:36

Supongo que esto sucede porque al cerrar el formulario, no lo destruyes sino que simplemente lo ocultas; así que al abrirlo nuevamente, lo que realementye estás haciendo es poniéndolo visible y su posició es la últim que tenias.

Una de dos, o destruyes el formulario al momento de cerrarlo o te encargas tú mismo de centrarlo al mostrarlo.

// Saludos

ecfisa 05-08-2014 19:10:56

Hola aguml.

Es tál como te comenta roman.

Código:

void __fastcall TFormSecundario::FormShow(TObject *Sender)
{
  Left = (Screen->Width - Width)/2;
  Top  = (Screen->Height - Height)/2;
}

Saludos :)

aguml 06-08-2014 00:21:42

¡genial! funciona de maravilla asi.
Por cierto, no sabia que podia no poner el Form1-> delante de cada propiedad estando en un evento de este. Interesante.

ecfisa 06-08-2014 01:27:42

Hola aguml.
Cita:

Empezado por aguml (Mensaje 479776)
¡genial! funciona de maravilla asi.
Por cierto, no sabia que podia no poner el Form1-> delante de cada propiedad estando en un evento de este. Interesante.

Si, cada instancia de clase tiene su propia copia de datos pero comparten la copia de las funciones miembros de la clase. Motivo por el cuál las funciones miembros tienen asociados un puntero implícito, que es del tipo de la clase al que pertenece y referencia a la instancia en cuestión. Este puntero es this en C++ y en Delphi es Self, de otro modo las funciones miembros no sabrían al dato de que instancia debería aplicar las acciones.

Como es usado tán frecuentemente dentro de las funciones miembros, se permite su omisión (syntactic sugar). Es decir que el código anterior también se podría haber escrito:
Código:

void __fastcall TFormSecundario::FormShow(TObject *Sender)
{
  this->Left = (Screen->Width - this->Width)/2;
  this->Top  = (Screen->Height - this->Height)/2;
}

Saludos :)

roman 06-08-2014 18:36:58

Cita:

Empezado por aguml (Mensaje 479776)
Por cierto, no sabia que podia no poner el Form1-> delante de cada propiedad estando en un evento de este.

De hecho, nunca deberías poner Form1-> por delante; siempre this-> o nada como comenta ecfisa.

// Saludos


La franja horaria es GMT +2. Ahora son las 16:49:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi