
20.04.2011, 15:08
|
 |
Let Me Show You
|
|
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
|
|
а зачем таймер? есть же message WM_WINDOWPOSCHANGING; да и не красиво будет по таймеру окно назад двигать. проще сразу не дать ему выезжать за границы главной формы.
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure WMWINDOWPOSCHANGING(var Message: TMessage); message WM_WINDOWPOSCHANGING;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.WMWINDOWPOSCHANGING(var Message: TMessage);
begin
if PWindowPos(Message.LParam).x<Application.MainForm.Left then
PWindowPos(Message.LParam).x:=Application.MainForm.Left;
if PWindowPos(Message.LParam).y<Application.MainForm.Top then
PWindowPos(Message.LParam).y:=Application.MainForm.Top;
if PWindowPos(Message.LParam).x+PWindowPos(Message.LParam).cx>Application.MainForm.Left+Application.MainForm.Width
then PWindowPos(Message.LParam).x:=Application.MainForm.Left+Application.MainForm.Width-Width;
if PWindowPos(Message.LParam).y+PWindowPos(Message.LParam).cy>Application.MainForm.Top+Application.MainForm.Height
then PWindowPos(Message.LParam).y:=Application.MainForm.Top+Application.MainForm.Height-Height;
Message.Result:=DefWindowProc(Handle, Message.Msg, Message.WParam, Message.LParam);
end;
end.
http://data.cod.ru/98186
__________________
Пишу программы за еду.
__________________
|