Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
1-17104
Opera
2003-02-26 01:34
2003.03.06
Едиты и текст


1-17048
XM-AD
2003-02-25 10:45
2003.03.06
Почему не могу прибить Shape?


1-17109
Sergey_El'f
2003-02-26 09:25
2003.03.06
Как выбрать строку в дбгриде под мышиным курсором?


1-17106
OlDemon
2003-02-26 07:03
2003.03.06
Преобразование числа в текст


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский