|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Изменение размера формы без границ
Здравствуйте!
Ставлю у формы BorderStyle = bsNone. Подскажите пожалуйста как реализовать изменение размера формы мышкой? Первые мысли: разместить по периметру TPanel с похожим размером на стандартную границу обычной формы. Но как за них таскать, какое событие? |
#2
|
||||
|
||||
OnClick или что то подобное. Получаешь коордтнаты курсора и меняешь размер.
Gravitas |
#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
|
||||
|
||||
всегда был уверен, что это:
Цитата:
Цитата:
Пишу программы за еду. __________________ |
#7
|
|||
|
|||
Да пусть эта рамка будет, мне главное чтобы ресайз формы был!
|
#8
|
|||
|
|||
Я чего-то такого добивался при помощи:
Код:
ReleaseCapture(); Perform(WM_SYSCOMMAND, $F001, 0); |
#9
|
||||
|
||||
ТС, а что обязательно по всем форумам наштамповать свой вопрос не дождавшись ответа на одном форуме?
|