home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Plus! (NZ) 2001 June
/
HDC50.iso
/
Runimage
/
Delphi50
/
Demos
/
Docking
/
TABHOST.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1999-08-11
|
2KB
|
79 lines
unit TabHost;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;
type
TTabDockHost = class(TForm)
PageControl1: TPageControl;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure PageControl1UnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
procedure PageControl1GetSiteInfo(Sender: TObject;
DockClient: TControl; var InfluenceRect: TRect; MousePos: TPoint;
var CanDock: Boolean);
procedure PageControl1DockOver(Sender: TObject;
Source: TDragDockObject; X, Y: Integer; State: TDragState;
var Accept: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
TabDockHost: TTabDockHost;
implementation
{$R *.DFM}
uses DockForm;
procedure TTabDockHost.FormClose(Sender: TObject;
var Action: TCloseAction);
var
ARect: TRect;
begin
if PageControl1.DockClientCount = 1 then
begin
with PageControl1.DockClients[0] do
begin
ARect.TopLeft := ClientToScreen(Point(0, 0));
ARect.BottomRight := ClientToScreen(Point(UndockWidth, UndockHeight));
ManualFloat(ARect);
end;
Action := caFree;
end else
Action := caHide;
end;
procedure TTabDockHost.PageControl1UnDock(Sender: TObject;
Client: TControl; NewTarget: TWinControl; var Allow: Boolean);
begin
//only 2 dock clients means the host must be destroyed and
//the remaining window undocked to its old position and size.
if (PageControl1.DockClientCount = 2) and (NewTarget <> Self) then
PostMessage(Self.Handle, WM_CLOSE, 0, 0);
end;
procedure TTabDockHost.PageControl1GetSiteInfo(Sender: TObject;
DockClient: TControl; var InfluenceRect: TRect; MousePos: TPoint;
var CanDock: Boolean);
begin
CanDock := DockClient is TDockableForm;
end;
procedure TTabDockHost.PageControl1DockOver(Sender: TObject;
Source: TDragDockObject; X, Y: Integer; State: TDragState;
var Accept: Boolean);
begin
Accept := Source.Control is TDockableForm;
end;
end.