Главная страница
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.489 c
2-1179176488
redlord
2007-05-15 01:01
2007.06.03
ограничение скорости чтения из файла


11-1160821604
vampir_infernal
2006-10-14 14:26
2007.06.03
Exception, TNotifyEvent и не только


1-1175524308
DelphiLexx
2007-04-02 18:31
2007.06.03
Аналог TNotebook, но поддерживающий наследование


15-1178590615
Slider007
2007-05-08 06:16
2007.06.03
С днем рождения ! 8 мая


2-1179214892
GRT_
2007-05-15 11:41
2007.06.03
из string в ChekListBox