알짜게시판

[Delphi] bsNone 인 폼에서 드래그 및 크기조절

[code] unit Area; interface uses<br />   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,<br />   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.ExtCtrls,<br />   JvExControls, JvButton, JvNavigationPane, Vcl.Buttons; type<br />   TFrmArea = class(TForm)<br />     Panel1: TPanel;<br />     Panel2: TPanel;<br />     Label1: TLabel;<br />     Memo1: TMemo;<br />     JvNavIconButton1: TJvNavIconButton;<br />     Button1: TButton;<br />     BitBtn1: TBitBtn;<br />     SpeedButton1: TSpeedButton;<br />     procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;<br />       Shift: TShiftState; X, Y: Integer);<br />     procedure FormResize(Sender: TObject);<br />     procedure FormCreate(Sender: TObject);<br />   protected<br />     procedure CreateParams(var Params: TCreateParams); override;<br />     procedure WMNCHitTest(var message: TWMNCHitTest); message WM_NCHITTEST;<br />   private<br />   public<br />     { Public declarations }<br />   end; const<br />   Edge = 5; var<br />   FrmArea: TFrmArea; implementation {$R *.dfm} { TFrmArea } procedure TFrmArea.CreateParams(var Params: TCreateParams);<br /> begin<br />   BorderStyle := bsNone;   inherited;   Params.WndParent := 0;<br />   Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;<br /> end; procedure TFrmArea.FormCreate(Sender: TObject);<br /> begin<br />   FormResize(Sender);<br /> end; procedure TFrmArea.FormResize(Sender: TObject);<br /> var<br />   WindowRgn, HoleRgn : HRgn;<br /> begin<br />   WindowRgn := 0;<br />   GetWindowRgn(Handle, WindowRgn);<br />   DeleteObject(WindowRgn);<br />   WindowRgn := CreateRectRgn(0, 0, Width, Height);<br />   HoleRgn := CreateRectRgn(Edge, Edge+Panel1.Height+Edge, Width-Edge, Height-Edge);<br />   CombineRgn(WindowRgn, WindowRgn, HoleRgn, RGN_DIFF);<br />   SetWindowRgn(Handle, WindowRgn, TRUE);<br />   DeleteObject(HoleRgn);<br /> end; procedure TFrmArea.Panel1MouseDown(Sender: TObject; Button: TMouseButton;<br />   Shift: TShiftState; X, Y: Integer);<br /> begin<br />   ReleaseCapture;<br />   SendMessage(Handle, WM_NCLBUTTONDOWN, htCaption, 0);<br /> end; procedure TFrmArea.WMNCHitTest(var Message: TWMNCHitTest);<br /> var<br />   P: TPoint;<br /> begin<br />   inherited;   P := ScreenToClient(Message.Pos);   with Message do<br />   begin<br />     if Result = htClient then Exit;     Result := htCaption;     if P.Y < Edge then<br />     begin<br />       if P.X < Edge then<br />         Result := htTopLeft<br />       else if P.X > ClientWidth - Edge then<br />         Result := htTopRight<br />       else<br />         Result := htTop;<br />     end<br />     else if P.Y > ClientHeight - Edge then<br />     begin<br />       if P.X < Edge then<br />         Result := htBottomLeft<br />       else if P.X > ClientWidth - Edge then<br />         Result := htBottomRight<br />       else<br />         Result := htBottom;<br />     end<br />     else<br />     begin<br />       if P.X < Edge then<br />         Result := htLeft<br />       else if P.X > ClientWidth - Edge then<br />         Result := htRight<br />     end;<br />   end;<br /> end; end.<br /> [/code]

로그인 후 댓글내용을 입력해주세요

번호 제목 글쓴이 조회 날짜
40 [윈도우] 윈도우11 시작 메뉴 위치 변경(가운데, 왼쪽) 60,629 10-10
39 [Delphi] 중복 실행 방지 59,075 09-21
38 [리눅스] yum 에서 Thread died in Berkeley DB library 오류 59,227 09-18
37 [리눅스] VNSTAT 설치하기 56,234 09-17
36 [리눅스] 로그 삭제 및 비우기(?) 58,325 09-09
35 [FTP] 500 Illegal PORT command. 47,579 09-03
34 [리눅스] .htaccess 를 이용해서 https 이동하기 45,455 08-31
33 [PHP] Imagek 를 이용한 썸네일 생성 45,857 08-26
32 [그누보드] 1364 : Field 'xxxxx' doesn't have a default value 45,323 08-20
31 [리눅스] 윈도우 프로그램 실행 (centos7, wine 7.0) 45,190 08-09
30 [윈도우] IPv6 켜기, 끄기 45,343 08-03
29 [그누보드] 회원 가입일 기준으로 이용기간 정하기 41,259 07-28
28 [그누보드] sql_fetch, sql_query 안쓰고 직접 mysql 사용하기 40,877 07-24
27 [PHP] PHP 수정시 적용이 안되는 경우 해결 (opcache 중지) 35,494 03-31
26 [맥OS] 마우스 휠 스크롤 방향 윈도우와 일치시키는 방법 26,178 02-28
25 [Ruby] 윈도우에서 pod install 실행시 UTF-8 오류 27,031 02-28
24 [Ruby] Could not open library 'libcurl' 25,352 02-28
23 [Android] Error type 3: Activity class {com.?.MainActivity} … 16,676 02-02
22 [PHP] Curl 을 이용하여 파일 다운로드 6,170 01-19
21 [PHP] Curl 을 이용하여 json 을 post 보내기 6,736 01-19
20 설치하려고 하는 앱이 Microsoft에서 확인된 앱이 아닙니다. 16,577 10-11
19 [Delphi] Glyph 에 사용할 이미지 생성하기 1,800 09-02
18 파이썬 아나콘다 업데이트 2,056 08-06
열람 [Delphi] bsNone 인 폼에서 드래그 및 크기조절 3,372 07-11
16 [리눅스] Composer 설치하기 1,983 07-06
15 [윈도우] WinHTTP 사용에서 12175 에러 발생시 5,109 04-04
14 [MYSQL] 날짜필드 연장하기 2,161 03-20
13 [리눅스] Swap 생성/수정 2,412 09-04
12 [리눅스] 바이러스 검사 2,221 09-04
11 [PHP] 실시간 화면 출력 4,439 08-04
10 [윈도우] 원격 데스크탑 접속 기록 삭제하기 3,510 07-24
목록