2011-02-09 50 views
6

Đây là mã Tôi đang sử dụng:App ở đằng sau thanh tác vụ khi khởi động trong toàn màn hình

BorderStyle := bsNone; 
WindowState := wsMaximized; 

Vấn đề của tôi là ứng dụng sẽ không bao gồm các thanh tác vụ, nhưng đi đằng sau nó.

Nó hoạt động tốt khi chuyển sang chế độ toàn màn hình khi chạy, nhưng nó không hoạt động khi khởi động ứng dụng khi khởi động hệ thống.

CẬP NHẬT

Nó chỉ ra rằng những người hai dòng làm việc rất tốt. Chúng nằm trong trình xử lý sự kiện FormShow. Nếu tôi phá vỡ điểm cho đến khi kết thúc FormShow, ứng dụng dường như ở chế độ toàn màn hình; Tôi có thể thấy máng ứng dụng trên thanh tác vụ. Nhưng sau khi FormShow, thuộc tính Top của ứng dụng được thay đổi bằng cách nào đó. Tôi không thay đổi nó trong mã - giá trị là -20, do đó, các ứng dụng không được tối đa nữa.

Có cách nào để theo dõi vị trí hoặc thời điểm thay đổi không?

Cảm ơn trước!

CẬP NHẬT

bài này được gắn cờ. Vui lòng không đăng bất kỳ câu trả lời nào! Cảm ơn bạn.

+1

Nơi nào bạn sử dụng mã này? Trong xử lý sự kiện nào? – jpfollenius

+0

Đây là "khu vực làm việc" có nghĩa là, khu vực trên màn hình chính bị bỏ ra khỏi thanh công cụ ứng dụng dành cho máy tính để bàn (thanh tác vụ là một). –

+0

Bạn đã sửa đổi câu hỏi sao cho nó không chỉ hiển thị các câu trả lời và nhận xét hiện có mà không liên quan nhưng cũng không hỏi cùng một điều mà tiêu đề của câu hỏi yêu cầu. -1. Bạn nên giải quyết vấn đề ban đầu bằng cách nào đó và hỏi một câu hỏi mới .. –

Trả lời

1

thử:

Form.Left := 0; // set the x 
Form.Top := 0; // set the y 
Form.Width := Screen.Width; // width of the form 
Form.Height := Screen.Height; // height of the form 
// and 
Form.FormStyle := fsStayOnTop; // taskbar is always on top as well, setting the Style property to always on top will allow the form to cover the taskbar 

nếu bạn muốn ẩn các chú thích sau đó đặt BorderStyle để bsnone

+0

Không hoạt động (trên Win7) nếu bạn nhấn phím Windows: thanh tác vụ hoặc nút menu Windows tròn (dưới cùng) được đặt trên đầu trang –

+2

@ André - AFAIU câu hỏi không liên quan đến việc ngăn chặn kích hoạt thanh tác vụ sau khi biểu mẫu được hiển thị. –

+0

@Sertac: đúng, nhưng tôi nghĩ anh ấy không muốn nhìn thấy thanh tác vụ, vì vậy nó sẽ là một vấn đề một lần nữa nếu taksbar ở trên đầu sau khi phím "Windows" (cùng một vấn đề trở lại). Xem câu trả lời của riêng tôi cho giải pháp hoàn chỉnh (bằng cách thay đổi kiểu) –

2

Thay đổi phong cách param, theo blog này MSDN: http://blogs.msdn.com/b/oldnewthing/archive/2005/05/05/414910.aspx

procedure TForm1.CreateParams(var Params: TCreateParams); 
begin 
    inherited; 
    Params.Style := WS_POPUP or WS_VISIBLE; //will overlay taskbar 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    Self.WindowState := wsMaximized; //fullscreen 
end; 

====================================

Full mã để chuyển từ chế độ toàn màn hình Windowed đến và ngược lại (thử nghiệm trên Win7 64bit, Aero)
(Edit: làm việc trong Windows XP (vmware) quá)

var 
    _OrgWindowedStyle: DWORD; 

procedure TForm6.btnWindowedClick(Sender: TObject); 
begin 
    Self.WindowState := wsNormal; 
    //set original style 
    SetWindowLong(Application.Handle, GWL_STYLE, 
       _OrgWindowedStyle); 
    //re-create window, to use changed style 
    RecreateWnd; 
end; 

procedure TForm6.btnFullScreenClick(Sender: TObject); 
begin 
    _OrgWindowedStyle := 0; //clear: re-applies fullscreen mode in CreateParams 
    Self.WindowState := wsMaximized; 
    //re-create window, to use changed style 
    RecreateWnd; 
end; 

procedure TForm6.CreateParams(var Params: TCreateParams); 
begin 
    inherited; 

    //first time? default fullscreen 
    if _OrgWindowedStyle = 0 then 
    begin 
    _OrgWindowedStyle := Params.Style; 
    Params.Style := //WS_POPUP or    //not needed? 
        WS_VISIBLE 
        or WS_BORDER or WS_CAPTION //comment this line to remove border + titlebar 
    end; 
end; 

procedure TForm6.FormCreate(Sender: TObject); 
begin 
    Self.WindowState := wsMaximized;  //default fullscreen 
end; 
Các vấn đề liên quan