2009-03-25 9 views
8

Il codice seguente funziona correttamente in Delphi 7. Tuttavia, in Delphi 2009 il modulo rimane nascosto ma ora viene visualizzato il pulsante sulla barra delle applicazioni.Nascondere il modulo principale in un'applicazione Delphi 2009

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

Il codice sopra riportato viene chiamato nel metodo FormCreate.

+0

Il modulo NON rimane nascosto per me in D2007 né D2009 con il codice esatto. Quale sembra quello che vuoi per qualsiasi motivo se lo metti: ShowWindow (Handle, SW_SHOW); Mi è sembrato che tu volessi MOSTRARLO non NASCONDERLO. Si prega di aggiornare e precisare la domanda in quanto sembra che si desideri il contrario. –

+0

Il codice sopra riportato viene utilizzato per rimuovere il pulsante del modulo dalla barra delle applicazioni pre 2009. L'obiettivo è solo quello di interrompere la visualizzazione del pulsante sulla barra delle applicazioni. Ho scritto una piccola app di test e quel codice sembra funzionare correttamente. Tuttavia, in questa particolare istanza sembra che sia la forma nascosta Applicazioni. – James

+0

Eliminata la mia risposta, dal momento che non sembrava funzionare ... – onnodb

risposta

10

La ragione per cui stavamo vedendo la finestra dell'applicazione sulla barra delle applicazioni era un'impostazione semplice simile alla risposta di stukelly ma non del tutto.

per ottenere la forma principale di apparire sulla barra delle applicazioni e nascondere il menu delle applicazioni si applica:

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

No codice della maschera creare o qualsiasi cosa necessaria.

+0

Grazie per aver postato la soluzione su overflow dello stack. Pensavo volessi nascondere il pulsante della barra delle applicazioni e il modulo principale. – stukelly

+0

Questo non funziona se si dispone di codice in FormActivate(). Il modulo non viene mai mostrato in modo che FormActivate() non venga mai chiamato. – TheSteven

+0

@TheSteven che ha perfettamente senso, la forma non dovrebbe mai diventare attiva ... è nascosta. Se hai un codice in 'FormActivate' per un modulo nascosto, ovviamente è il posto sbagliato. – James

5

È necessario impostare le proprietà ShowMainForm e MainFormOnTaskBar su False prima che il modulo venga creato.

apre l'origine del progetto e impostare MainFormOnTaskBar e ShowMainForm False, prima della creazione del modulo.

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

Poi sul modulo principale aggiungere il seguente codice al FormActivate e FormShow eventi.

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; 

Ho testato con Dephi 2007 e il 2009. Ulteriori informazioni sono disponibili here.

Problemi correlati