2009-03-25 20 views
8

Poniższy kod działa prawidłowo w Delphi 7. Jednak w Delphi 2009 formularz pozostaje ukryty, ale pojawia się przycisk na pasku zadań.Ukryj główny formularz w aplikacji Delphi 2009

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

Powyższy kod wywoływany jest w metodzie FormCreate.

+0

Formularz NIE pozostanie dla mnie ukryty w D2007 ani D2009 z dokładnym kodem. Który wydaje się, co chcesz z jakiegokolwiek powodu, jeśli to wstawisz: ShowWindow (Handle, SW_SHOW); Wydawało mi się, że chcesz POKAZAĆ, nie ukrywaj tego. Proszę zaktualizować i precyzyjne pytanie jak się wydaje chcesz odwrotnie .. –

+0

Powyższy kod służy do usuwania przycisk formularz z paska zadań wstępnego 2009. Celem jest, aby dostać się przycisk paska zadań formularz, aby zatrzymać się pojawiają. Piszę małą aplikację testową i ten kod wydaje się działać dobrze. Jednak w tym konkretnym przypadku wydaje się, że jest to ukryta forma aplikacji. – James

+0

Usunięto moją odpowiedź, gdyż nie wydają się działać ... – onnodb

Odpowiedz

10

Okazuje się, że powodem, dla którego widzieliśmy okno aplikacji na pasku zadań było proste ustawienie podobne do odpowiedzi stukelly'ego, ale niezupełnie.

Aby dostać główną formą pojawiać się na pasku zadań i ukryć menu aplikacji, który stosuje się:

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

No kod związany formie wymaganej tworzenia lub cokolwiek.

+0

Dzięki za komentarz swoje rozwiązanie z powrotem na przepełnienie stosu. Myślałem, że chcesz ukryć przycisk paska zadań i główny formularz. – stukelly

+0

To nie działa, jeśli masz kod w FormActivate(). Formularz nigdy się nie pokazuje, więc FormActivate() nigdy nie jest wywoływana. – TheSteven

+0

@TheSteven, który ma sens, forma nigdy nie powinna stać się aktywna ... jest ukryta. Jeśli masz kod w "FormActivate" dla ukrytego formularza, to oczywiście jest to złe miejsce. – James

5

Musisz ustawić właściwości ShowMainForm i na False przed utworzeniem formularza.

Otwórz źródło projektu i ustawić MainFormOnTaskBar i ShowMainForm False, zanim zostanie utworzony formularz.

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

Następnie na głównej postaci dodaj następujący kod do FormActivate i FormShow wydarzeń.

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; 

Ja testowałem z Dephi 2007 i 2009. Dodatkowe informacje są dostępne here.

Powiązane problemy