Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

Доброго времени суток   Найти похожие ветки 

 
Лысеющий Самурай   (2007-05-12 11:00) [0]

Доброго времени суток, подскажите пожалуйста как можно менять размер формы если у неё

BorderStyle:= bsNone;

и при загрузке

procedure TForm1.FormCreate(Sender: TObject);
var
 hRgn: integer;
begin
 hRgn:=CreateRoundRectRgn(1,1,ClientWidth,ClientHeight,5,5);
 SetWindowRgn(Handle, hRgn, true);
end;


 
Loginov Dmitry ©   (2007-05-12 11:25) [1]

> Доброго времени суток, подскажите пожалуйста как можно менять
> размер формы если у неё
>
> BorderStyle:= bsNone;


Без рамочки нельзя вручную изменять размеры формы.


 
Юрий Зотов ©   (2007-05-12 13:50) [2]

Можно обрабатывать WM_NCHITTEST и искусственно эмулировать рамку, возвращая нужный результат. Но при изменении размеров регион, видимо, придется пересоздавать.


 
Лысеющий Самурай   (2007-05-12 18:17) [3]

Спасибо


 
DVM ©   (2007-05-12 18:28) [4]

Как-то так:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
   procedure WMNCHitTest(var Message: TMessage); message WM_NCHITTEST;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMNCHitTest(var Message: TMessage);
const
 Delta = 5;
var
 X, Y: Integer;
 Point: TPoint;
Begin
 inherited;
 if (not (csDesigning in ComponentState)) then
   begin
     Point.x := Message.LParamLo ;
     Point.y := Message.LParamHi;
     Point := ScreenToClient(Point);
     x := Point.x;
     y := Point.y;
     // Message.Result:=HTCLIENT;
     if (Align = alNone) then
       begin
         Message.Result := HTCAPTION;
        end;
     if Align <> alClient Then
       begin
         if ((Width - x) <= Delta) and ((Height - y) <= Delta) and (Align = alNone) then
           begin
             Message.Result := HTBOTTOMRIGHT;
             Exit;
           end;
         if (x <= Delta) and (y <= Delta) and (Align = alNone) then
           begin
             Message.Result := HTTOPLEFT;
             Exit;
           end;
         if ((Width - x) <= Delta) and (y  <= Delta) and (Align = alNone) then
           begin
             Message.Result := HTTOPRIGHT;
             Exit;
           end;
         if (x <= Delta) and (Height - y  <= Delta) and (Align = alNone) then
           begin
             Message.Result := HTBOTTOMLEFT;
             Exit;
           end;
         if ((Width - x) <= Delta) and (Align in [alNone,alLeft]) then
           Message.Result := HTRIGHT;
         if (x  <= Delta) and (Align in [alNone,alRight]) then
           Message.Result := HTLEFT;
         if ((Height - y) <= Delta) and (Align in [alNone , alTop]) then
           Message.Result := HTBOTTOM;
         if (y  <= Delta) and (Align in [alNone , alBottom]) then
           Message.Result := HTTOP;
       end;
   end;

end;

end.




Страницы: 1 вся ветка

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
2-1179147314
TempUser
2007-05-14 16:55
2007.06.03
И всё таки как скинуть программу в трей?


1-1176217171
I-New
2007-04-10 18:59
2007.06.03
вывод TPopupMenu с Timage при нажатии на левую кнопку мыши


6-1164146047
frozen_eye1
2006-11-22 00:54
2007.06.03
В WebBrowser из Memo


15-1177685755
easy
2007-04-27 18:55
2007.06.03
PHP DM Client - клиент для форумов сайта "Мастера Delphi"


2-1178941012
Iv_
2007-05-12 07:36
2007.06.03
Цветная бегущая строка