[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]


 How to maximize your application without covering the TaskBar In =
Delphi???

procedure SizeForTaskBar(MyForm: TForm);

var

TaskBarHandle: HWnd; { Handle to the Win95 Taskbar }
TaskBarCoord: TRect; { Coordinates of the Win95 Taskbar }
CxScreen, { Width of screen in pixels }
CyScreen, { Height of screen in pixels }
CxFullScreen, { Width of client area in pixels }
CyFullScreen, { Heigth of client area in pixels }
CyCaption: Integer; { Height of a window's title bar in pixels }

begin

TaskBarHandle := FindWindow('Shell_TrayWnd',Nil); { Get Win95 Taskbar =
handle }
if TaskBarHandle = 0 then { We're running Win 3.x or WinNT w/o Win95 =
shell, so just maximize }
MyForm.WindowState := wsMaximized
else { We're running Win95 or WinNT w/Win95 shell }
begin
MyForm.WindowState := wsNormal;
GetWindowRect(TaskBarHandle,TaskBarCoord); { Get coordinates of Win95 =
Taskbar }
CxScreen := GetSystemMetrics(SM_CXSCREEN); { Get various screen =
dimensions and set form's width/height }
CyScreen := GetSystemMetrics(SM_CYSCREEN);
CxFullScreen := GetSystemMetrics(SM_CXFULLSCREEN);
CyFullScreen := GetSystemMetrics(SM_CYFULLSCREEN);
CyCaption := GetSystemMetrics(SM_CYCAPTION);
MyForm.Width := CxScreen - (CxScreen - CxFullScreen) + 1;
MyForm.Height := CyScreen - (CyScreen - CyFullScreen) + CyCaption + 1;
MyForm.Top := 0;
MyForm.Left := 0;
if (TaskBarCoord.Top = -2) and (TaskBarCoord.Left = -2) then { =
Taskbar on either top or left }
if TaskBarCoord.Right > TaskBarCoord.Bottom then { Taskbar on top }
MyForm.Top := TaskBarCoord.Bottom
else { Taskbar on left }
MyForm.Left := TaskBarCoord.Right;
end;

End;

[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]