Jak wiadomo ustawienie stanu formy na wsMaximized powoduje jej maksymalizację. Niestety okno powiększa swoje rozmiary przykrywając pulpit, ale pozostawiając na
wierzchu pasek zadań z Menu Start. Aby tego uniknąć wystarczyc wywołać poniższą procedurkę:
procedure ExtraMaximize(MyForm: TForm);
begin
if FindWindow('Shell_TrayWnd',nil) = 0
then MyForm.WindowState := wsMaximized
else with MyForm do
begin
WindowState:=wsNormal;
BorderStyle:=bsSingle;
Top:=0;
Left:=0;
Width:=GetSystemMetrics(SM_CXSCREEN);
Height:=GetSystemMetrics(SM_CYSCREEN)+GetSystemMetrics(SM_CYCAPTION);
end;
end;
Parametrem funkcji jest obiekt reprezentujący okienko, które chcemy poddać modyfikacji. W pierwszym kroku sprawdzamy, czy istnieje pasek zadań:
if FindWindow('Shell_TrayWnd',nil) = 0
Jeśli funkcja zwróci wartość 0, to pasek nie istnieje, czyli pracujemy w Windows 3.x lub NT 3.x. W takim przypadku wystarczy zwykła maksymalizacja okienka poprzez
modyfikację właściwości WindowState. Jeżeli jednak pasek istnieje, konieczne staje się wykonanie bardziej skomplikowanych działań. Najważniejszym z nich jest
modyfikacja szerokości i wysokości. Aby ustalić rozmiary pełnego ekranu posługujemy się funkcją GetSystemMetrics. Szerokość ustawiamy zgodnie z wartością
SM_CXSCREEN. Jednak już dla wysokości należy zsumować wysokość ekranu (SM_CYSCREEN) oraz rozmiar paska tytułowego okna (SM_CYCAPTION). Równie
ważne jest ustawienie właściwości BorderStyle na bsSingle. Dzięki temu użytkownik nie będzie miał możliwości zmniejszenia rozmiaru okienka, a jednocześnie
zachowa zdolność do jego minimalizacji.
Funkcję najwygodniej jest wywołać w module projektu zaraz po Application.CreateForm.--Pozdrowienia dla całego FORUM !!!
Marco_99