Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.06;
Скачать: CL | DM;

Вниз

Оконо во весь экран...   Найти похожие ветки 

 
KPV-10k ©   (2002-12-19 21:04) [0]

Здравствуйте господа мастера! Подскажите как растопырить окно, чтобы оно накрывало панель задач т.е. растопырить во весь экран типа Fullscreen, но в оконном режиме...


 
Ich Hasse ©   (2002-12-19 22:06) [1]

FormStyle:=fsStayOnTop;


 
Danlicha ©   (2002-12-19 22:25) [2]

BorderStyle := bsNone;
WindowState := wsMaximize;


 
KPV-10k ©   (2003-01-15 23:31) [3]

А если надо BorderStyle := bsSingle, то как?


 
Diamond Cat ©   (2003-01-16 00:01) [4]

with form1 do begin
left:=0;
top:=0;
height:=screen.height;
width:=screen.width;
FormStyle:=fsStayOnTop;
end


 
Игорь Шевченко ©   (2003-01-16 09:36) [5]

{
Модуль: FullScreenUnit

Описание: Поддержка разворота клиентской части окна во весь экран.
Источник: статья Пола Дилация в MSDN Magazine № 6(12) 2002 г.

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

Авторы: Пол Дилация (С++, MFC), Игорь Шевченко (Delphi)

Дата создания: 09.01.2003

История изменений:
}
unit FullScreenUnit;

interface
uses
Windows, Controls;

type
TFullScreenHandler = class
private
FRestoreRect : TRect;
function GetInFullScreenMode : Boolean;
function GetMaxSize : SIZE;
public
{ Развернуть клиентскую область окна во весь экран }
procedure Maximize (AWinControl : TWinControl);
{ Восстановить клиентскую область окна }
procedure Restore (AWinControl : TWinControl);
{ Развернута ли клиентская область окна во весь экран }
property InFullScreenMode : Boolean read GetInFullScreenMode;
{ Максимально возможный размер окна, такой, чтобы клиентская область
уместилась во весь экран. }
property MaxSize : SIZE read GetMaxSize;
end;

var
FullScreenHandler : TFullScreenHandler;

implementation
uses
Forms; { Для Screen }

function TFullScreenHandler.GetInFullScreenMode : Boolean;
begin
Result := not IsRectEmpty(FRestoreRect);
end;

function TFullScreenHandler.GetMaxSize : SIZE;
var
ARect : TRect;
begin
{
При большом желании обращение к свойствам переменной Screen можно заменить
на вызовы функции GetSystemMetrics(SM_CXSCREEN) и
GetSystemMetrics(SM_CYSCREEN).
}
SetRect(ARect, 0, 0, Screen.Width, Screen.Height);
InflateRect(ARect, 10, 50); //Любые числа, лишь бы превышали размер
//неклиентской области окон
Result.cx := ARect.Right - ARect.Left;
Result.cy := ARect.Bottom - ARect.Top;
end;

procedure TFullScreenHandler.Maximize (AWinControl : TWinControl);
var
RcClient, RcNewWindow : TRect;
begin
RcClient := AWinControl.ClientRect;
{ Перевод координат клиентской области окна в экранные }
MapWindowPoints(AWinControl.Handle, HWND_DESKTOP, RcClient, 2);
{ Сохраним размеры окна для восстановления }
GetWindowRect(AWinControl.Handle, FRestoreRect);
{
При большом желании обращение к свойствам переменной Screen можно заменить
на вызовы функции GetSystemMetrics(SM_CXSCREEN) и
GetSystemMetrics(SM_CYSCREEN).
}
SetRect(RcNewWindow, 0, 0, Screen.Width, Screen.Height);
with RcNewWindow do begin
Inc(Left, FRestoreRect.Left - RcClient.Left);
Inc(Top, FRestoreRect.Top - RcClient.Top);
Inc(Right, FRestoreRect.Right - RcClient.Right);
Inc(Bottom, FRestoreRect.Bottom - RcClient.Bottom);
SetWindowPos (AWinControl.Handle, 0, Left, Top, Right - Left, Bottom - Top,
SWP_NOZORDER);
end;
end;

procedure TFullScreenHandler.Restore (AWinControl : TWinControl);
begin
with FRestoreRect do
SetWindowPos (AWinControl.Handle, 0, Left, Top, Right - Left, Bottom - Top,
SWP_NOZORDER);
SetRectEmpty(FRestoreRect);
end;

initialization
FullScreenHandler := TFullScreenHandler.Create();
finalization
FullScreenHandler.Free();
end.


Пример использования:

TfMain = class(TForm)
MainMenu: TMainMenu;
View1: TMenuItem;
miFullScreen: TMenuItem;
Image: TImage;
miHelp: TMenuItem;
About: TMenuItem;
procedure miFullScreenClick(Sender: TObject);
procedure ImageDblClick(Sender: TObject);
procedure AboutClick(Sender: TObject);
private
procedure WMGetMinMaxInfo(var Message : TWMGetMinMaxInfo);
message WM_GETMINMAXINFO;
end;
.....
procedure TfMain.miFullScreenClick(Sender: TObject);
begin
if NOT FullScreenHandler.InFullScreenMode then
FullScreenHandler.Maximize(Self)
else
FullScreenHandler.Restore(Self);
miFullScreen.Checked := FullScreenHandler.InFullScreenMode;
end;

procedure TfMain.WMGetMinMaxInfo(var Message : TWMGetMinMaxInfo);
var
Sz : SIZE;
begin
Sz := FullScreenHandler.MaxSize;
with Message.MinMaxInfo^ do begin
ptMaxSize := TPoint(Sz);
ptMaxTrackSize := TPoint(Sz);
end;
end;



 
Nick_N_A ©   (2003-01-18 06:13) [6]

A Мне понравилось развернуть во весь экран, App.Maximize,
а за тем раз в секунду делать StayOnTheTop with SetWindowPos.
Коротко, ясно, и смерть всяким всплывающим Task-Baram/panelsam


 
Yuri-7 ©   (2003-01-18 08:10) [7]

Все значительно проще. Надо сделать в свойствах формы следующее:
1. BorderIcons/biMaximize = False
2. Position = poScreenCenter
3. WindowState = wsMaximized



Страницы: 1 вся ветка

Текущий архив: 2003.03.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
1-17087
ark
2003-02-25 21:34
2003.03.06
try.....exception


3-16880
Кило
2003-02-18 11:28
2003.03.06
Как указать процедуре что она відает множество?


7-17424
Miwa
2003-01-06 17:33
2003.03.06
Мониторинг спулера печати


14-17288
Palladin
2003-02-19 22:23
2003.03.06
Необычная просьба...


6-17232
Anton
2003-01-17 11:54
2003.03.06
Что за ошибка EidSocketError : SocketError #10110