📄 unit1.pas
字号:
unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls, StdCtrls, FileCtrl, Buttons;
const
CornerWidth = 10;
type
TResize = (rsNone,rsLeft,rsRight,rsTop,rsBottom,
rsTopLeft,rsTopRight,rsBottomLeft,rsBottomRight);
TForm1 = class(TForm)
Panel1: TPanel;
ScrollBox1: TScrollBox;
Memo1: TMemo;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
ResizeMode : TResize;
Resizing : Boolean;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Resizing := True;
end;
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Resizing := False;
end;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not Resizing then begin
{ Check top left corner }
if (X < CornerWidth) and (Y < CornerWidth) then begin
ResizeMode := rsTopLeft;
Panel1.Cursor := crSizeNWSE;
end
{ Check top right corner }
else if (X > Panel1.Width-CornerWidth-1) and (Y < CornerWidth) then begin
ResizeMode := rsTopRight;
Panel1.Cursor := crSizeNESW;
end
{ Check bottom left corner }
else if (X < CornerWidth) and (Y > Panel1.Height-CornerWidth-1) then begin
ResizeMode := rsBottomLeft;
Panel1.Cursor := crSizeNESW;
end
{ Check bottom right corner }
else if (X > Panel1.Width-CornerWidth-1) and (Y > Panel1.Height-CornerWidth-1) then begin
ResizeMode := rsBottomRight;
Panel1.Cursor := crSizeNWSE;
end
{ Check left border }
else if X = 0 then begin
ResizeMode := rsLeft;
Panel1.Cursor := crSizeWE;
end
{ Check right border }
else if X = Panel1.Width-1 then begin
ResizeMode := rsRight;
Panel1.Cursor := crSizeWE;
end
{ Check top border }
else if Y = 0 then begin
ResizeMode := rsTop;
Panel1.Cursor := crSizeNS;
end
{ Check bottom border }
else if Y = Panel1.Height-1 then begin
ResizeMode := rsBottom;
Panel1.Cursor := crSizeNS;
end;
end;
if Resizing then
with Panel1 do
case ResizeMode of
rsLeft : begin
{
Width := Width-X;
}
Left := Left+X;
end;
rsRight : Width := X;
rsTop : begin
{
Height := Height-Y;
}
Top := Top+Y;
end;
rsBottom : Height := Y;
rsTopLeft : begin
{
Width := Width-X;
}
Left := Left+X;
{
Height := Height-Y;
}
Top := Top+Y;
end;
rsTopRight : begin
Width := X;
Height := Height-Y;
Top := Top+Y;
end;
rsBottomLeft : begin
Width := Width-X;
Left := Left+X;
Height := Y;
end;
rsBottomRight : begin
Width := X;
Height := Y;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -