Posto il codice per visualizzare, muovere, nascondere massimizzare, minimizzare un pannello all'interno di una form.
Volevo allegare l'esempio ma il file è troppo grande, potete scaricarlo da questo link:
www.genuardi.eu/download/MuoveSpostaOggettiRuntime.zip
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
Buttons;
type
{ TForm1 }
TForm1 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
Panel1: TPanel;
Panel2: TPanel;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer
);
procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ private declarations }
FDownPoint: TPoint;
FDragging: Boolean;
FAllowDrag: Boolean;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
uses
{$IFNDEF FPC}
Windows,
{$ELSE}
LCLIntf, LCLType, LMessages, Variants;
{$ENDIF}
{$R *.lfm}
{ TForm1 }
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
FDragging := True;
GetCursorPos(FDownPoint);
FDownPoint.X := FDownPoint.X - Panel1.Left;
FDownPoint.Y := FDownPoint.Y - Panel1.Top;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FAllowDrag := True;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Panel1.Align:=alClient;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Panel1.Align:=alnone;
Panel1.Height:=30;
Panel1.Width:=300;
Panel1.Top:=Form1.Height-60;
Panel1.Left:=0;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Panel1.Align:=alnone;
Panel1.Width:=400;
Panel1.Height:=400;
Panel1.Top:=200;
Panel1.Left:=200;
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
Panel1.Visible:=True;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Panel1.Visible:=False;
end;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
MovePoint : TPoint;
begin
if FDragging and FAllowDrag then
begin
GetCursorPos(MovePoint);
Panel1.SetBounds(
MovePoint.X - FDownPoint.X,
MovePoint.Y - FDownPoint.Y,
Panel1.Width, Panel1.Height
);
end;
end;
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
FDragging := False;
end;
end.