알짜게시판

[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]

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

번호 제목 글쓴이 조회 날짜
187 [그누보드] 1364 : Field 'xxxxx' doesn't have a default value 45,317 08-20
186 [그누보드] 웹폰트 적용하기 46,446 08-13
185 [그누보드] CKEditor 5 플러그인 107,622 08-11
184 [리눅스] 윈도우 프로그램 실행 (centos7, wine 7.0) 45,179 08-09
183 [시크릿DNS] 프록시 혼합 사용 예제 2 481,028 08-07
182 [윈도우] IPv6 켜기, 끄기 45,326 08-03
181 [그누보드] 회원 가입일 기준으로 이용기간 정하기 41,253 07-28
180 [그누보드] sql_fetch, sql_query 안쓰고 직접 mysql 사용하기 40,873 07-24
179 [리눅스] 웹서버 상태 확인 후 자동 재시작 쉘 스크립트 41,231 02-28
178 WinDivert 1753 에러 발생시 41,026 12-20
177 [PHP] PHP 수정시 적용이 안되는 경우 해결 (opcache 중지) 35,486 03-31
176 [맥OS] 마우스 휠 스크롤 방향 윈도우와 일치시키는 방법 26,173 02-28
175 [Ruby] 윈도우에서 pod install 실행시 UTF-8 오류 27,023 02-28
174 [Ruby] Could not open library 'libcurl' 25,343 02-28
173 WinDivert 서비스 종료 49,800 02-08
172 [Android] Error type 3: Activity class {com.?.MainActivity} … 16,670 02-02
171 [윈도우] 윈도우 서버 2016 IIS 중지 9,022 01-29
170 [그누보드] 새 글 정리하기 4,049 01-28
169 WinDivert 오류코드 4,339 01-24
168 [PHP] Curl 을 이용하여 파일 다운로드 6,165 01-19
167 [PHP] Curl 을 이용하여 json 을 post 보내기 6,723 01-19
166 [그누보드] CKEditor 5 플러그인 10 6,829 01-14
165 칼무리 자동실행이 안 되는 원인를 찾았습니다 1 2,751 12-31
164 [PHP] 워드프레스와 그누보드 연동 모듈 3,732 12-27
163 설치하려고 하는 앱이 Microsoft에서 확인된 앱이 아닙니다. 16,567 10-11
162 [Delphi] 권한상승 2,370 09-04
161 [Delphi] Glyph 에 사용할 이미지 생성하기 1,796 09-02
160 [윈도우] WMI 복구하기 1 8,028 08-20
159 파이썬 아나콘다 업데이트 2,051 08-06
열람 [Delphi] bsNone 인 폼에서 드래그 및 크기조절 3,363 07-11
157 윈도우7 에서 WinDivert 2.2 관련 오류 발생시 13,481 07-10