2009-03-25 4 views
8

В Delphi 7 код работает отлично. Однако в Delphi 2009 форма остается скрытой, но теперь появляется кнопка на панели задач.Скрыть основную форму в приложении Delphi 2009

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

Вышеупомянутый код вызывается в методе FormCreate.

+0

Форма не остается скрытой для меня в D2007 и D2009 с вашим точным кодом. Кажется, что вы хотите по какой-либо причине, если вы положили это: ShowWindow (Handle, SW_SHOW); Казалось, вы хотели ПОКАЗАТЬ его, а не СКРЫТЬ его. Пожалуйста, уточните и уточните свой вопрос, поскольку он кажется, что вы хотите обратное. –

+0

Вышеприведенный код используется для удаления кнопки формы с панели задач до 2009 года. Цель состоит в том, чтобы заставить кнопку панели задач формы перестать появляться. У меня есть небольшое тестовое приложение, и этот код работает нормально. Однако в этом конкретном случае кажется, что это скрытая форма приложения. – James

+0

Удалил мой ответ, так как он не работал ... – onnodb

ответ

10

Оказывается, причина, по которой мы видели окно приложения на панели задач, было простой настройкой, аналогичной ответу со стороны, но не совсем.

Чтобы получить основную форму, чтобы появиться на панели задач и скрыть меню приложения Вы претендуете:

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

Нет коды позади формы не создавать или что-нибудь требуется.

+0

Спасибо, что отправили свое решение обратно на переполнение стека. Я думал, что вы хотите скрыть кнопку панели задач и основную форму. – stukelly

+0

Это не работает, если у вас есть код в FormActivate(). Форма никогда не показывает так, что FormActivate() никогда не будет вызван. – TheSteven

+0

@ TheSteven, который имеет полный смысл, форма никогда не должна становиться активной ... она скрыта. Если у вас есть код в 'FormActivate' для скрытой формы, то это, очевидно, неправильное место для него. – James

5

Перед созданием формы вам необходимо установить свойства ShowMainForm и MainFormOnTaskBar.

Откройте исходный код проекта и установить MainFormOnTaskBar и ShowMainForm в False, то перед созданием формы.

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

Затем на главную форму добавьте следующий код в FormActivate и FormShow событий.

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; 

я испытал с Dephi 2007 и 2009. Дополнительная информация доступна here.

Смежные вопросы