2009-03-25 24 views
8

El siguiente código funciona bien en Delphi 7. Sin embargo, en Delphi 2009 el formulario permanece oculto pero el botón en la barra de tareas está apareciendo ahora.Ocultar el formulario principal en una aplicación Delphi 2009

ShowWindow(Handle, SW_HIDE); 
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW); 
ShowWindow(Handle, SW_SHOW); 

El código anterior se llama en el método FormCreate.

+0

El formulario NO permanece oculto para mí en D2007 ni D2009 con su código exacto. Lo que parece ser lo que quieras por cualquier razón si pones esto: ShowWindow (Handle, SW_SHOW); Me pareció que quería MOSTRARLO NO OCULTARLO. Actualice y precise su pregunta, ya que parece que desea lo contrario. –

+0

El código anterior se utiliza para eliminar el botón de formulario de la barra de tareas anterior a 2009. El objetivo es lograr que el botón de la barra de tareas del formulario deje de aparecer. Escribí una pequeña aplicación de prueba y ese código parece funcionar bien. Sin embargo, en este caso particular, parece que es la forma oculta de Aplicaciones. – James

+0

Eliminé mi respuesta, ya que no parecía funcionar ... – onnodb

Respuesta

10

Resulta que la razón por la que estábamos viendo la ventana de la aplicación en la barra de tareas era una configuración simple similar a la respuesta de stukelly pero no del todo.

Para conseguir que aparezca el formulario principal en la barra de tareas y ocultar el menú de la aplicación solicite:

Application.MainFormOnTaskbar := True; 
Application.ShowMainForm := False; 

Ningún código detrás de la forma crean o cualquier cosa necesaria.

+0

Gracias por publicar su solución en el desbordamiento de la pila. Pensé que querías ocultar el botón de la barra de tareas y el formulario principal. – stukelly

+0

Esto no funciona si tiene código en FormActivate(). El formulario nunca se muestra, por lo que nunca se llama a FormActivate(). – TheSteven

+0

@TheSteven que tiene todo el sentido, la forma nunca debe activarse ... está oculta. Si tiene un código en 'FormActivate' para un formulario oculto, obviamente es el lugar equivocado. – James

5

Debe establecer las propiedades ShowMainForm y MainFormOnTaskBar en False antes de crear el formulario.

Abra su fuente del proyecto y establecer MainFormOnTaskBar y ShowMainForm en False, antes de que se crea el formulario.

Application.Initialize; 
Application.MainFormOnTaskbar := false; 
Application.ShowMainForm := false; 
Application.CreateForm(TForm1, Form1); 

A continuación, en su forma principal agregue el código siguiente al FormActivate y FormShow eventos.

procedure TForm1.FormActivate(Sender: TObject); 
begin 
// hide taskbar button 
ShowWindow(Application.Handle, SW_HIDE); 
end; 
procedure TForm1.FormShow(Sender: TObject); 
begin 
// hide taskbar button 
ShowWindow(Application.Handle, SW_HIDE); 
end; 

He probado con Dephi 2007 y 2009. Información adicional está disponible here.

Cuestiones relacionadas