unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Windows ,
Classes , SysUtils , Forms , Controls , Graphics , Dialogs , ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
pnlRight: TPanel;
pnlLeft: TPanel;
procedure pnlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X , Y: Integer);
procedure pnlMouseMove(Sender: TObject; Shift: TShiftState; X ,
Y: Integer);
procedure pnlMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X , Y: Integer);
strict private
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.pnlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X , Y: Integer);
begin
if (Button <> mbLeft) then
Exit;
SetCapture(TWinControl(Sender).Handle);
end;
procedure TForm1.pnlMouseMove(Sender: TObject; Shift: TShiftState; X ,
Y: Integer);
var
newPos: TPoint;
tmpL: Integer;
begin
tmpL := Left;
if ssLeft in Shift then
begin
Screen.Cursor := crSizeWE;
if (Sender = pnlLeft) then
begin
GetCursorPos(newPos);
Left := newPos.X;
Width := Width - Left + tmpL;
end
else
begin
newPos := ScreenToClient(Mouse.CursorPos);
Width := newPos.X;
end;
Invalidate;
end;
end;
procedure TForm1.pnlMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X , Y: Integer);
begin
if (Button <> mbLeft) then
Exit;
Screen.Cursor := crDefault;
ReleaseCapture;
end;
end.