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

Вниз

Форма на вообще весь экран   Найти похожие ветки 

 
Vinum   (2008-05-21 22:56) [0]

Здравствуйте. Делаю так:

begin
fs:=not(fs); //fullscreen
if fs then
begin
 form1.form.StayOnTop:=true;
 fh:=form1.form.Height;
 fw:=form1.form.Width;
 fl:=form1.form.Left;
 ft:=form1.form.Top;
 form1.form.Left:=0;
 form1.form.Top:=0;
 form1.form.Width:=screenwidth;
 form1.form.Height:=screenheight;
 form1.form.HasBorder:=false;
 form1.form.HasCaption:=false;
end else
begin
 form1.form.StayOnTop:=false;
 form1.form.Left:=fl;
 form1.form.Top:=ft;
 form1.form.Width:=fw;
 form1.form.Height:=fh;
 form1.form.HasBorder:=true;
 form1.form.HasCaption:=true;
end;
end;


Код работает, но не всегда правильно, а именно тогда, когда сначала максимизируешь форму, а потом ее фуллскрин делаешь, таскбар не исчезает, ну и форма неправильные размеры принимает.
С этим что-нибудь можно поделать?


 
Дмитрий К ©   (2008-05-22 00:08) [1]

Как вариант:
program testMouseWheel;

uses
 Windows, KOL;

var Form, PB: PControl;

procedure FormMouseWheel(Dummy, Sender: PControl; var Mouse: TMouseEventData);
var zDelta: SmallInt; r:TRect; p: TPoint;
begin
 GetWindowRect(PB.Handle, r);
 GetCursorPos(p);
 if PointInRect(p, r) then
 begin
   zDelta := HiWord(Mouse.Shift);
   if zDelta < 0 then
   begin
     PB.Width := PB.Width - 10;
     PB.Height := PB.Height - 10;
   end
   else begin
     PB.Width := PB.Width + 10;
     PB.Height := PB.Height + 10;
   end;
 end;
end;

procedure PBPaint(Dummy, Sender: PControl; DC: HDC);
begin
 Sender.Canvas.FillRect(Sender.ClientRect);
end;

var wp: TWindowPlacement; FullScreened: Boolean; (***)

procedure FullScreen(Undo: Boolean); (***)
begin
 if Undo then
 begin
   Form.Style := Form.Style or (WS_CAPTION or WS_THICKFRAME);
   SetWindowPlacement(Form.Handle, @wp);
   FullScreened := False;
 end
 else begin
   wp.length := SizeOf(wp);
   GetWindowPlacement(Form.Handle, @wp);
   Form.Style := Form.Style and not (WS_CAPTION or WS_THICKFRAME);
   Form.BoundsRect := MakeRect(0, 0, ScreenWidth, ScreenHeight);
   FullScreened := True;
 end;
end;

procedure FormKeyUp(Dummy, Sender: PControl; var Key: Longint; Shift: DWORD); (***)
begin
 if (Key = VK_F11) and (Shift and (MK_ALT or MK_CONTROL or MK_SHIFT) = 0) then
 begin
   FullScreen(FullScreened);
 end;
end;

begin
 Form := NewForm(nil, "test");
 PB := NewPaintBox(Form);
 PB.Style := PB.Style or WS_BORDER;
 PB.Canvas.Brush.Color := clRed;
 PB.OnPaint := TOnPaint(MakeMethod(nil, @PBPaint));
 Form.OnMouseWheel := TOnMouse(MakeMethod(nil, @FormMouseWheel));
 Form.ExStyle := Form.ExStyle or WS_EX_LAYERED;
 Form.OnKeyUp := TOnKey(MakeMethod(nil, @FormKeyUp)); (***)
 SetLayeredWindowAttributes(Form.GetWindowHandle, clRed, 200, LWA_COLORKEY or LWA_ALPHA);

 Run(Form);
end.

Все что относится к развертыванию формы помечено "(***)".


 
Vinum   (2008-05-22 08:19) [2]

Дмитрий К, большое спасибо



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

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

Наверх




Память: 0.47 MB
Время: 0.011 c
2-1260967410
JohnKorsh
2009-12-16 15:43
2010.02.14
Можно ли в Delphi 7 работать с двумя проектами одновременно?


2-1260784227
JohnKorsh
2009-12-14 12:50
2010.02.14
Вопрос по бееспроводным сетям.


1-1237817783
Дмитрий Белькевич
2009-03-23 17:16
2010.02.14
SHBrowseForFolder открывается пустым


15-1260394794
kyn66
2009-12-10 00:39
2010.02.14
Avast тормозит загрузку таблиц


2-1260872714
Андрей_11
2009-12-15 13:25
2010.02.14
Combobox