FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
AnimateWindow() y Position=poDesktopCenter
Hola cada dia un nuevo problema perdón si parece que soy dependienta, pero por mas que le busco no encuentro.
Mi problema en cuestión es el siguiente. Necesito la Forma en el puro centro de la pantalla por lo cual hago lo sig. en forma de diseño pongo la opción de la forma en position=poDesktopCenter Cuando se muestra la forma tengo los efectos de AnimateWindow() el siguiente codigo Código:
Randomize(); int is= Random(4); if(is==0) AnimateWindow( Handle, 400, AW_ACTIVATE || AW_SLIDE || AW_VER_POSITIVE ); if(is==1) AnimateWindow( Handle, 400, AW_ACTIVATE || AW_SLIDE || AW_VER_NEGATIVE ); if(is==2) AnimateWindow( Handle, 400, AW_CENTER); if(is==3) AnimateWindow( Handle, 400, AW_BLEND); aparece la forma en un lugar diferente al de poDesktopCenter (aparece en el lugar de diseño) después hace el efecto que corresponde y por ultimo centra la ventana Quisiera centrar primero y despues efecto se podra?
__________________
El Software es como el Sexo, si es de gratis es Mejor |
#2
|
||||
|
||||
El problema es que Builder coloca como posición inicial la de diseño. Cuando seleccionas poScreenCenter Builder cambia a esa posición y luego muestra el Form. A nuestros ojos la ventana se creó en el centro aunque en realidad no fue así.
Para solventar el problema deberás colocar el Form donde te interesa (aunque no sea visible de momento) y luego aplicar AnimateWindow. Te muestro un ejemplo simple: Código:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // Centro la ventana... if(Position == poScreenCenter){ Left = (Screen->Width - Width)/2; Top = (Screen->Height - Height)/2; } AnimateWindow(Handle, 400, AW_ACTIVATE | AW_SLIDE | AW_HOR_POSITIVE); } Saludos. |
#3
|
||||
|
||||
Con respecto al problema sigue haciendo lo mismo aun después de poner tu código alguna sugerencia?
Muy cierto eso de || fue error de escritura. Otra pregunta yo había visto Left = (Screen->Width - Width)/2; sin necesidad de decir que es Form1->Left A como se le llama este uso y como funciona?
__________________
El Software es como el Sexo, si es de gratis es Mejor Última edición por aams01 fecha: 09-05-2011 a las 17:33:12. |
#4
|
||||
|
||||
Gracias por Todo
Soy un mentiroso de lo peor ya funciona con una modificacion Código:
Left = (Screen->Width - Width)/2; Top = (Screen->Height - Height)/2; AnimateWindow( Handle, 400, AW_BLEND);
__________________
El Software es como el Sexo, si es de gratis es Mejor |
#5
|
||||
|
||||
Cita:
Código:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // Centro la ventana... SetWindowPos(Handle, HWND_TOP, (Screen->Width - Width)/2, (Screen->Height - Height)/2, 0, 0, SWP_NOSIZE); AnimateWindow(Handle, 400, AW_ACTIVATE | AW_SLIDE | AW_HOR_POSITIVE); } Cita:
Quizás te interese esto como alternativa a AnimateWindow Saludos. |
#6
|
||||
|
||||
Cita:
Bueno, el condicional es para que se centre solo si Position es poScreenCenter. Si lo quieres centrar siempre, de todas todas, pues lo retiras y listo. Mira mi mensaje anterior, la API suele ser una buena opción. Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ayuda con Animatewindow | Jheysson13 | Varios | 3 | 10-09-2010 01:04:49 |
Ayuda con animatewindow | kakesoft | Varios | 6 | 16-06-2006 22:15:39 |
|