![]() |
Form a pantalla completa
Hola, como el tema lo indica estoy tratando de poner una form a pantalla completa, hasta aora solo e logrado que esta ocupe el area de trabajo. E estado consultamdo en la web de Microsoft y he encontrado las API GetSystemMetric y SystemParameterInfo pero solo ocupa elarea de trabajo. Esto es lo que tengo:
Trucomania Truco.495-Que tu appli ocupe toda la pantalla excepto la barra de tarea. Dependiendo de la posición y el tamaño de la barra de tareas, nuestra aplicación tendrá a su disposición un espacio de trabajo determiando en la pantalla que debera respatar para no 'pisar' la propia barra de tareas. Este espacio de trabajo disponible, lo podremos hallar mediante esta llamada al API de Windows: var R: TRect; begin SystemParametersInfo(SPI_GETWORKAREA, 0, @R, 0); ... ... con ello, podremos redimensionar nuestra form en el momento de su creación, colocando esto en su evento OnCreate: procedure TForm1.FormCreate(Sender: TObject); var R: TRect; begin SystemParametersInfo(SPI_GETWORKAREA, 0, @R, 0); SetBounds(R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top); end; Ahora bien, si al usuario le da por redimensionar la barra de tareas o bien le da por colocarla en otro sitio, nuestra aplicación debería tener la capacidad de autoredimensionarse para ocupar el nuevo espacio disponible. Esto lo podremos hacer mediante la captura del mensaje de Windows WM_SETTINGCHANGE con la salvedad Msg.WParam=SPI_SETWORKAREA Así que, capturemos el mensajillo pues... Pondremos esta linea en la parte private de la form: type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } procedure WMSettingChange( var Msg: TMessage); message WM_SETTINGCHANGE; public { Public declarations } end; y la correspondiente declaración en la parte implementation de la form: procedure TForm1.WMSettingChange( var Msg: TMessage); var R: TRect; begin Exit; if (Msg.WParam=SPI_SETWORKAREA) then begin SystemParametersInfo(SPI_GETWORKAREA, 0, @R, 0); SetBounds(R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top); end; Msg.Result:=0; end; Este codigo solo ocupa el area de trabajo y lo que deseo es que pise la barra de tareas tambien, como lo hace los reproductores de video cuando lo pones a pantalla completa. Gracias por la ayuda que me puedan dar... |
Hola, no hace falta ningún código, es muy fácil solo debes cambiar dos propiedades del form, BorderStyle:=bsNone y WindowsState:=wsMaximized.
Con esto el formulario ocupa toda la pantalla como los reproductores que comentas. Un Saludo. |
Cita:
|
gracias
gracias white_zombie por responder lo he probado y me ha pinchado ok.
|
La franja horaria es GMT +2. Ahora son las 00:42:19. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi