![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Липкие окошки
Oddin © (2005-01-11 01:56:00)Как сделать чтобы форма клеилась "примагничивалась" к краям экрана???
Поручик (2005-01-11 02:56:00) [1]Проверять ее left, top, left+width и top+height чтобы не выходили за края
правый край - screen.width
нижний край - screen.height;
а остальные нули
Удачи
Oddin (2005-01-11 02:21:00) [2]Спасибо. Еще один вопрос. Как не дать форме выходить за края экрана.
GanibalLector (2005-01-11 02:05:00) [3]
...
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMEXITSIZEMOVE(var Msg: TMessage); message WM_EXITSIZEMOVE;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMEXITSIZEMOVE(var Msg: TMessage);
var Screen: TRect;
begin
inherited;
SystemParametersInfo(SPI_GETWORKAREA, 0, @Screen, 0);
if Left < Screen.Left then Left := Screen.Left;
if Top < Screen.Top then Top := Screen.Top;
if (Left + Width) > Screen.Right then Left := (Screen.Right - Width);
if (Top + Height) > Screen.Bottom then Top := (Screen.Bottom - Height);
Msg.Result := 0;
end;
Unleashed (2005-01-11 02:03:00) [4]Можно обработать wm_move , а в нём сравнивать координаты углов формы с экраном (screen.width,screen.height). пример:
...
with form1 do begin
if left <= 15 then form1.left:=0;
if screen.width-(left+width) >= 15 then .left:=
screen.width- width;
...
и т.д.