Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизИзменение размеров формы Найти похожие ветки
← →
EvgeniyR (2005-03-15 15:06) [0]Есть форма BorderStyle := bsNone, как сделать, что бы можно было менять размеры формы? Скрывать заголовок стандартной формы не выход. Заранее спасибо.
← →
Юрий Зотов © (2005-03-15 15:18) [1]Обрабатывать WM_NCHITTEST и возвращать нужный результат, когда мышь находится на краях формы.
← →
_1 (2005-03-15 15:29) [2]
type
TForm1 = class(TForm)
private
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:= params.Style or WS_SIZEBOX;
end;
← →
EvgeniyR (2005-03-15 16:18) [3]Прошу прощения за неточность, на форме лежит Panel и надо что бы не было видно Border"a формы, т.е. что бы панель создавала видимость, что она и есть форма.
Спасибо за ответы.
← →
_1 (2005-03-15 16:36) [4]
> EvgeniyR (15.03.05 16:18) [3]
- а зачем, можно же панель сделать совершенно плоской (BevelOuter = brNone, BorderStyle = bsNone). (И тогда, если панель только для того чтобы иммитировать Border формы, то в сочетании с [2] панель вообще не нужна).
← →
Antonn © (2005-03-15 16:47) [5]Вот пожалста, один из моих велосипедов:) Cуть такова - если схватить форму(или панель) за правый нижний угол, то она будет менять размеры(см плейлист вынампа)
isFormRES:boolean;
procedure TForm1.Form1MouseDown(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ((x<= Form1.clientWidth) and (x>=Form1.clientWidth-25)) and ((y<=Form1.clientHeight) and (y>=Form1.clientHeight-25) ) then
isFormRES:=true else isFormRES:=false;
end;
procedure TForm1.Form1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var CoorMouse: TMouse;
begin
if isformres then begin
if ((((CoorMouse.CursorPos.y-Form1.top) div 28)*28+28)>25) then
Form1.Height:=(((CoorMouse.CursorPos.y-Form1.top) div 28)*28+28) else Form1.Height:=25;
if ((((CoorMouse.CursorPos.x-Form1.left) div 25)*25+25)>25) then
Form1.Width:=(((CoorMouse.CursorPos.x-Form1.left) div 25)*25+25) else Form1.Width:=25;
end;
end;
procedure TForm1.form1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
isFormRES:=false;
end;
← →
EvgeniyR (2005-03-16 09:18) [6]>_1 (15.03.05 16:36) [4]
В том-то все и дело, что Border вообще не нужен.
>Antonn © (15.03.05 16:47) [5]
Спасибо, но хотелось бы, что б как в стандартной форме.
← →
Юрий Зотов © (2005-03-16 10:33) [7]> EvgeniyR (16.03.05 09:18) [6]
Итак, плоская панель с Align=alClient лежит на плоской форме с BorderStyle=bsNone.
Сразу возникает вопрос - а зачем вообще нужна такая панель? Ведь она ровно ничего не дает, только бесполезно съедает ресурсы.
Вывод - выкинуть эту панель, и все становится элементарно:
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
var
W: integer;
P: TPoint;
begin
W := GetSystemMetrics(SM_CXSIZEFRAME);
with Message do
begin
P := ScreenToClient(SmallPointToPoint(Pos));
if PtInRect(Rect(0, 0, W, W), P) then
Result := HTTOPLEFT else
if PtInRect(Rect(W, 0, Width - W, W), P) then
Result := HTTOP else
if PtInRect(Rect(Width - W, 0, Width, W), P) then
Result := HTTOPRIGHT else
if PtInRect(Rect(Width - W, W, Width, Height - W), P) then
Result := HTRIGHT else
if PtInRect(Rect(Width - W, Height - W, Width, Height), P) then
Result := HTBOTTOMRIGHT else
if PtInRect(Rect(W, Height - W, Width - W, Height), P) then
Result := HTBOTTOM else
if PtInRect(Rect(0, Height - W, W, Height), P) then
Result := HTBOTTOMLEFT else
if PtInRect(Rect(0, W, W, Height -W), P) then
Result := HTLEFT else
inherited
end
end;
← →
Юрий Зотов © (2005-03-16 10:38) [8]> EvgeniyR (16.03.05 09:18) [6]
А уж если без панели никак не обойтись, то просто не ставить ей Align=alClient, а поставить Align=alNone, выставить размеры чуть меньше размеров формы и привязать к краям формы через Anchors.
← →
EvgeniyR (2005-03-16 12:50) [9]> Юрий Зотов © (16.03.05 10:33) [7]
Спасибо большое, то, что я хотел.
← →
Юрий Зотов © (2005-03-16 14:51) [10]> EvgeniyR (16.03.05 12:50) [9]
Эх, Евгений... об этом же сразу, еще в [1] было сказано. Наверное ведь, не просто так.
:-(
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.055 c