FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Barra de tareas
Hace unos meses lanzaba una pregunta acerca de este elemento (Sobre la barra de tareas) pero la duda no tuvo solución. He seguido buscando y en Stack Overflow encontré un código que me ha dado la pista para encontrar la solución. Adaptado a Builder me queda así:
Código:
void __fastcall TfMenu::FormShow(TObject *Sender) { TRect WorkArea; HWND hTaskBar = FindWindow("Shell_TrayWnd", NULL); if (hTaskBar != 0) { GetWindowRect(hTaskBar, &WorkArea); this->Constraints->MinHeight = Screen->Height - (WorkArea.Bottom - WorkArea.Top); this->Height = this->Constraints->MinHeight; } this->Refresh(); } Si ejecuto depurando, para ver los valores que se van tomando, me encuentro que antes de ejecutarse GetWindowRect la altura del formulario fMenu es 768 que coincide con la de la pantalla (Screen->Height); WorkArea tiene como valores 0, 766, 136, 796 lo que significa que la barra de tareas tiene un altura de 30. Después de ejecutar las dos últimas líneas del if la altura del formulario es 738. En las propiedades del formulario Align está puesto como alNone por lo que al mostrarse el mismo debería ocupar toda la pantalla menos los últimos 30 pixeles. Sin embargo queda así, ocupando el 100% de la pantalla: ¿Qué estoy haciendo mal? |
#2
|
||||
|
||||
¡Solucionado! Estaba poniendo el código en mal sitio: en lugar de en OnShow debe ir en OnPaint.
|
#3
|
||||
|
||||
Ojo! que al menos en Delphi el evento OnPaint se lanza continuamente. Sólo debería ir en ese evento algo estrictamente obligatorio, de otra forma puedes sobrecargar el sistema mucho de forma innecesaria.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
||||
|
||||
Gracias por la apreciación. Y así debe ser porque al probar me he encontrado que pulse el botón que pulse de la barra superior, no se lanza nada. Al menos he encontrado el modo de hacerlo; ahora tengo que ver donde colocarlo.
|
#5
|
||||
|
||||
Pues al final me ha valido en el OnActivate.
|
#6
|
||||
|
||||
Ese mucho mejor. Es que piensa que (si no recuerdo mal) el OnPaint va saltandpo continuamente hasta cuando mueves el ratón por pantalla.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear barra de herramientas en barra de tareas de windows | codicia | Varios | 1 | 21-01-2013 13:44:26 |
barra de tareas | luis1980 | C++ Builder | 12 | 24-10-2008 17:23:27 |
No en la Barra de Tareas | D-MO | Varios | 4 | 13-10-2005 01:55:18 |
barra de tareas | agora18 | Varios | 1 | 17-02-2004 03:01:39 |
Barra de Tareas | frankmch | Varios | 3 | 04-09-2003 16:58:16 |
|