![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте!
Ставлю у формы BorderStyle = bsNone. Подскажите пожалуйста как реализовать изменение размера формы мышкой? Первые мысли: разместить по периметру TPanel с похожим размером на стандартную границу обычной формы. Но как за них таскать, какое событие? ![]() |
|
#2
|
||||
|
||||
|
OnClick или что то подобное. Получаешь коордтнаты курсора и меняешь размер.
|
|
#3
|
|||
|
|||
|
Цитата:
Вообще-то, OnMouseDown/OnMouseUp. Можно просто проверить координаты мышки и если они умещаются в, например, 3 пиксела, то меняем размер формы, иначе - перемещаем ее. |
|
#4
|
||||
|
||||
|
вроде уже выкладывал по этой теме:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
procedure WndProc(var Message: TMessage); override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.WndProc(var Message: TMessage);
const
n = 4;
var
x, y: Integer;
begin
case Message.Msg of
WM_NCHITTEST: begin
x:=LOWORD(Message.LParam);
y:=HIWORD(Message.LParam);
if (Abs(Left+Width-x)<n) and (Abs(Top+Height-y)<n) then Message.Result:=HTBOTTOMRIGHT
else if (Abs(Left-x)<n) and (Abs(Top+Height-y)<n) then Message.Result:=HTBOTTOMLEFT
else if (Abs(Left+Width-x)<n) and (Abs(Top-y)<n) then Message.Result:=HTTOPRIGHT
else if (Abs(Left-x)<n) and (Abs(Top-y)<n) then Message.Result:=HTTOPLEFT
else if Abs(Left-x)<n then Message.Result:=HTLEFT
else if Abs(Top-y)<n then Message.Result:=HTTOP
else if Abs(Left+Width-x)<n then Message.Result:=HTRIGHT
else if Abs(Top+Height-y)<n then Message.Result:=HTBOTTOM
// опционально
else Message.Result:=HTCAPTION; // можно таскать за клиентскую область
// else Message.Result:=HTCLIENT; // нельзя таскать за клиентскую область
Exit;
end;
end;
inherited WndProc(Message);
end;
end. |
|
#5
|
|||
|
|||
|
Спасибо всем
, я нашел ответ, один хороший человек написал код:Код:
private
procedure CreateParams(var Params: TCreateParams) ; override;
...
procedure TForm1.CreateParams(var Params: TCreateParams) ;
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_EX_STATICEDGE;
Params.Style := Params.Style or WS_SIZEBOX;
end;Последний раз редактировалось Admin, 19.06.2011 в 14:46. |
|
#6
|
||||
|
||||
|
всегда был уверен, что это:
Цитата:
Цитата:
![]() |