실행중 (Run Time) TPanel의 크기를 변경
(참고)
http://cysnim12.tistory.com/entry/폼-처럼-표시가-나오며-크기가-변하는-코딩법
위의 참고 웹페이지가 복사방지가 되어있어 애좀 먹고 다시 작성했다.
상수 선언하고, 패널의 MouseDown, MouseMove 이벤트에 작성하면 된다.
const
SC_DRAG_RESIZEL = $f001; // left resize
SC_DRAG_RESIZER = $f002; // right resize
SC_DRAG_RESIZEU = $f003; // upper resize
SC_DRAG_RESIZEUL = $f004; // upper-left resize
SC_DRAG_RESIZEUR = $f005; // upper-right resize
SC_DRAG_RESIZED = $f006; // down resize
SC_DRAG_RESIZEDL = $f007; // down-left resize
SC_DRAG_RESIZEDR = $f008; // down-right resize
SC_DRAG_MOVE = $f012; // move
procedure TForm21.Panel20MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var SenderControl: TWinControl;
SysCommWparam: integer;
begin
SenderControl := TWinControl(Sender);
if (X < 4 )and ( Y < 4) then
SysCommWparam := SC_DRAG_RESIZEUL
else if(X > SenderControl.Width-4) and (Y > SenderControl.Height-4) then
SysCommWparam := SC_DRAG_RESIZEDR
else if(X < 4) and (Y > SenderControl.Height-4) then
SysCommWparam := SC_DRAG_RESIZEDL
else if(X > SenderControl.Width-4 ) and ( Y < 4) then
SysCommWparam := SC_DRAG_RESIZEUR
else if(X < 4) then
SysCommWparam := SC_DRAG_RESIZEL
else if(X > SenderControl.Width-4) then
SysCommWparam := SC_DRAG_RESIZER
else if(Y < 4) then
SysCommWparam := SC_DRAG_RESIZEU
else if(Y > SenderControl.Height-4) then
SysCommWparam := SC_DRAG_RESIZED
else
SysCommWparam := SC_DRAG_MOVE; // 이동할 때
ReleaseCapture();
SendMessage(SenderControl.Handle, WM_SYSCOMMAND, SysCommWparam, 0);
end;
procedure TForm21.Panel20MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var SenderControl: TControl;
begin
SenderControl := TControl(Sender);
if ((X < 4) AND (Y < 4))or ((X > SenderControl.Width-4) and (Y > SenderControl.Height-4)) then
SenderControl.Cursor := crSizeNWSE
else if ((X < 4) and (Y > SenderControl.Height-4)) or ((X > SenderControl.Width-4) and (Y < 4))then
SenderControl.Cursor := crSizeNESW
else if ((X < 4 )or (X > SenderControl.Width-4))then
SenderControl.Cursor := crSizeWE
else if ((Y < 4) or (Y > SenderControl.Height-4))then
SenderControl.Cursor := crSizeNS
else
SenderControl.Cursor := crDefault;
end;