Componentes.Terceros.CCPack/internal/5/Sources/Boxes.pas
2007-09-09 18:20:50 +00:00

493 lines
12 KiB
ObjectPascal

{*******************************************************}
{ }
{ Delphi Visual Component Library }
{ Custom Containers Pack (CCPack) }
{ }
{ Copyright (c) 1997-99, Sergey Orlik }
{ }
{ Written by: }
{ Sergey Orlik }
{ product manager }
{ Russia, C.I.S. and Baltic States (former USSR) }
{ Inprise Moscow office }
{ e-mail: sorlik@inprise.ru }
{ WWW: http://www.inprise.ru }
{ }
{ Personal Home Page: }
{ www.geocities.com/SiliconValley/Way/9006/ }
{ }
{*******************************************************}
{$I CCPDEF.INC}
{$IFDEF VER_CB}
{$ObjExportAll On}
{$ENDIF}
unit Boxes;
{$C PRELOAD}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, ExtCtrls, StdCtrls, Dialogs, ActnList;
type
TBox = class(TCustomPanel)
private
FOnCreate: TNotifyEvent;
FOnDestroy: TNotifyEvent;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure SetParent(AParent: TWinControl); override;
procedure Paint; override;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
procedure SetChildOrder(Child: TComponent; Order: Integer); override;
property Caption;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property DockManager;
published
property Align;
property Alignment;
property Anchors;
property BevelInner;
property BevelOuter;
property BevelWidth;
property BiDiMode;
property BorderWidth;
property BorderStyle;
property DockSite;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property FullRepaint;
property Color;
property Constraints;
property Ctl3D;
property UseDockManager default True;
property Font;
property Locked;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
property OnClick;
property OnConstrainedResize;
property OnContextPopup;
property OnDockDrop;
property OnDockOver;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnGetSiteInfo;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
property OnResize;
property OnStartDock;
property OnStartDrag;
property OnUnDock;
property OnCreate: TNotifyEvent read FOnCreate write FOnCreate;
property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
end;
TControlGroupBox = class(TCustomGroupBox)
private
FOnCreate: TNotifyEvent;
FOnDestroy: TNotifyEvent;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure SetParent(AParent: TWinControl); override;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
procedure SetChildOrder(Child: TComponent; Order: Integer); override;
public
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
published
property Align;
property Anchors;
property BiDiMode;
property Caption;
property Color;
property Constraints;
property Ctl3D;
property DockSite;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
property OnClick;
property OnConstrainedResize;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDockDrop;
property OnDockOver;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnGetSiteInfo;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
property OnResize;
property OnStartDock;
property OnStartDrag;
property OnUnDock;
property OnCreate: TNotifyEvent read FOnCreate write FOnCreate;
property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
end;
TControlScrollBox = class(TScrollBox)
private
FOnCreate: TNotifyEvent;
FOnDestroy: TNotifyEvent;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure SetParent(AParent: TWinControl); override;
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
procedure SetChildOrder(Child: TComponent; Order: Integer); override;
public
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
published
property OnCreate: TNotifyEvent read FOnCreate write FOnCreate;
property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
end;
implementation
resourcestring
sResNotFound = 'Resource for %s is not found.';
{ TBox }
constructor TBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
if (ClassType <> TBox) and not (csDesignInstance in ComponentState) then
begin
if not InitInheritedComponent(Self, ClassType.ClassParent) then
raise EResNotFound.CreateFmt(SResNotFound, [ClassName]);
if Assigned(FOnCreate) then
try
FOnCreate(Self);
except
Application.HandleException(Self);
end;
end
else
begin
Width := 320;
Height := 240;
end;
end;
destructor TBox.Destroy;
begin
if Assigned(FOnDestroy) then
try
FOnDestroy(Self);
except
Application.HandleException(Self);
end;
inherited Destroy;
end;
procedure TBox.CreateParams(var Params: TCreateParams);
begin
inherited;
if Parent = nil then
Params.WndParent := Application.Handle;
end;
procedure TBox.SetParent(AParent: TWinControl);
begin
if (Parent = nil) and HandleAllocated then
DestroyHandle;
inherited;
end;
procedure TBox.Paint;
var
Rect: TRect;
TopColor, BottomColor: TColor;
const
Alignments: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
procedure AdjustColors(Bevel: TPanelBevel);
begin
TopColor := clBtnHighlight;
if Bevel = bvLowered then TopColor := clBtnShadow;
BottomColor := clBtnShadow;
if Bevel = bvLowered then BottomColor := clBtnHighlight;
end;
begin
Rect := GetClientRect;
if BevelOuter <> bvNone then
begin
AdjustColors(BevelOuter);
Frame3D(Canvas, Rect, TopColor, BottomColor, BevelWidth);
end;
Frame3D(Canvas, Rect, Color, Color, BorderWidth);
if BevelInner <> bvNone then
begin
AdjustColors(BevelInner);
Frame3D(Canvas, Rect, TopColor, BottomColor, BevelWidth);
end;
with Canvas do
begin
Brush.Color := Color;
FillRect(Rect);
Brush.Style := bsClear;
Font := Self.Font;
end;
end;
procedure TBox.GetChildren(Proc: TGetChildProc; Root: TComponent);
var
I: Integer;
OwnedComponent: TComponent;
begin
inherited GetChildren(Proc, Root);
if Root = Self then
for I := 0 to ComponentCount - 1 do
begin
OwnedComponent := Components[I];
if not OwnedComponent.HasParent then Proc(OwnedComponent);
end;
end;
procedure TBox.SetChildOrder(Child: TComponent; Order: Integer);
var
I, J: Integer;
begin
if Child is TControl then
inherited SetChildOrder(Child, Order)
else
begin
Dec(Order, ControlCount);
J := -1;
for I := 0 to ComponentCount - 1 do
if not Components[I].HasParent then
begin
Inc(J);
if J = Order then
begin
Child.ComponentIndex := I;
Exit;
end;
end;
end;
end;
{ TControlGroupBox }
constructor TControlGroupBox.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
if (ClassType <> TControlGroupBox) and not (csDesignInstance in ComponentState) then
begin
if not InitInheritedComponent(Self, ClassType.ClassParent) then
raise EResNotFound.CreateFmt(sResNotFound, [ClassName]);
if Assigned(FOnCreate) then
try
FOnCreate(Self);
except
Application.HandleException(Self);
end;
end
else
begin
Width := 320;
Height := 240;
end;
end;
destructor TControlGroupBox.Destroy;
begin
if Assigned(FOnDestroy) then
try
FOnDestroy(Self);
except
Application.HandleException(Self);
end;
inherited Destroy;
end;
procedure TControlGroupBox.CreateParams(var Params: TCreateParams);
begin
inherited;
if Parent = nil then
Params.WndParent := Application.Handle;
end;
procedure TControlGroupBox.SetParent(AParent: TWinControl);
begin
if (Parent = nil) and HandleAllocated then
DestroyHandle;
inherited;
end;
procedure TControlGroupBox.GetChildren(Proc: TGetChildProc; Root: TComponent);
var
I: Integer;
OwnedComponent: TComponent;
begin
inherited GetChildren(Proc, Root);
if Root = Self then
for I := 0 to ComponentCount - 1 do
begin
OwnedComponent := Components[I];
if not OwnedComponent.HasParent then Proc(OwnedComponent);
end;
end;
procedure TControlGroupBox.SetChildOrder(Child: TComponent; Order: Integer);
var
I, J: Integer;
begin
if Child is TControl then
inherited SetChildOrder(Child, Order)
else
begin
Dec(Order, ControlCount);
J := -1;
for I := 0 to ComponentCount - 1 do
if not Components[I].HasParent then
begin
Inc(J);
if J = Order then
begin
Child.ComponentIndex := I;
Exit;
end;
end;
end;
end;
{ TControlScrollBox }
constructor TControlScrollBox.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
if (ClassType <> TControlScrollBox) and not (csDesignInstance in ComponentState) then
begin
if not InitInheritedComponent(Self, ClassType.ClassParent) then
raise EResNotFound.CreateFmt(sResNotFound, [ClassName]);
if Assigned(FOnCreate) then
try
FOnCreate(Self);
except
Application.HandleException(Self);
end;
end
else
begin
Width := 320;
Height := 240;
end;
end;
destructor TControlScrollBox.Destroy;
begin
if Assigned(FOnDestroy) then
try
FOnDestroy(Self);
except
Application.HandleException(Self);
end;
inherited Destroy;
end;
procedure TControlScrollBox.CreateParams(var Params: TCreateParams);
begin
inherited;
if Parent = nil then
Params.WndParent := Application.Handle;
end;
procedure TControlScrollBox.SetParent(AParent: TWinControl);
begin
if (Parent = nil) and HandleAllocated then
DestroyHandle;
inherited;
end;
procedure TControlScrollBox.GetChildren(Proc: TGetChildProc; Root: TComponent);
var
I: Integer;
OwnedComponent: TComponent;
begin
inherited GetChildren(Proc, Root);
if Root = Self then
for I := 0 to ComponentCount - 1 do
begin
OwnedComponent := Components[I];
if not OwnedComponent.HasParent then Proc(OwnedComponent);
end;
end;
procedure TControlScrollBox.SetChildOrder(Child: TComponent; Order: Integer);
var
I, J: Integer;
begin
if Child is TControl then
inherited SetChildOrder(Child, Order)
else
begin
Dec(Order, ControlCount);
J := -1;
for I := 0 to ComponentCount - 1 do
if not Components[I].HasParent then
begin
Inc(J);
if J = Order then
begin
Child.ComponentIndex := I;
Exit;
end;
end;
end;
end;
end.