2009-03-25 26 views
8

Mã sau hoạt động tốt trong Delphi 7. Tuy nhiên, trong Delphi 2009 biểu mẫu vẫn ẩn nhưng nút trên thanh tác vụ hiện đang xuất hiện.Ẩn biểu mẫu chính trong ứng dụng Delphi 2009

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

Mã trên được gọi trong phương pháp FormCreate.

+0

Biểu mẫu KHÔNG được ẩn cho tôi trong D2007 hoặc D2009 bằng mã chính xác của bạn. Có vẻ như những gì bạn muốn vì bất kỳ lý do gì nếu bạn đặt điều này: ShowWindow (Xử lý, SW_SHOW); Dường như với tôi bạn muốn HIỂN THỊ nó không che giấu nó. Vui lòng cập nhật và chính xác câu hỏi của bạn vì có vẻ bạn muốn đối diện .. –

+0

Đoạn mã trên được sử dụng để xóa nút biểu mẫu khỏi thanh tác vụ trước 2009. Mục tiêu chỉ là để nút thanh tác vụ của biểu mẫu ngừng xuất hiện. Tôi đã writtin một ứng dụng thử nghiệm nhỏ và mã đó dường như làm việc tốt. Tuy nhiên, trong trường hợp cụ thể này có vẻ như nó là biểu mẫu Ẩn ứng dụng. – James

+0

Đã xóa câu trả lời của tôi, vì nó dường như không hoạt động ... – onnodb

Trả lời

10

Hóa ra lý do chúng tôi thấy cửa sổ Ứng dụng trên thanh tác vụ là một cài đặt đơn giản tương tự câu trả lời của stukelly nhưng không hoàn toàn.

Để có được hình thức chính để xuất hiện trên thanh tác vụ và ẩn ứng dụng đơn bạn áp dụng:

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

Không có mã đằng sau những hình thức tạo ra hoặc yêu cầu bất cứ điều gì.

+0

Cảm ơn bạn đã đăng giải pháp của mình trở lại tràn ngăn xếp. Tôi nghĩ bạn muốn ẩn nút thanh tác vụ và biểu mẫu chính. – stukelly

+0

Điều này không hoạt động nếu bạn có mã trong FormActivate(). Biểu mẫu không bao giờ cho thấy FormActivate() không bao giờ được gọi. – TheSteven

+0

@TheSteven có ý nghĩa hoàn chỉnh, biểu mẫu sẽ không bao giờ hoạt động ... nó bị ẩn. Nếu bạn có mã trong 'FormActivate' cho một biểu mẫu ẩn thì đó rõ ràng là địa điểm sai cho nó. – James

5

Bạn cần đặt các thuộc tính ShowMainFormMainFormOnTaskBar thành False trước khi biểu mẫu được tạo.

Mở nguồn dự án của bạn và thiết lập MainFormOnTaskBarShowMainForm False, trước khi form được tạo ra.

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

Sau đó vào mẫu chính của bạn thêm đoạn mã sau vào FormActivateFormShow sự kiện.

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; 

Tôi đã thử nghiệm với Dephi 2007 và 2009. Thông tin bổ sung có sẵn here.

Các vấn đề liên quan