【delphi开源代码栏目提醒】:网学会员--在 delphi开源代码编辑为广大网友搜集整理了:DSNHANDLE.PAS绩等信息,祝愿广大网友取得需要的信息,参考学习。
unit DsnHandle;
// Runtime Design System Version 2.x June/08/1998
// Copyright(c) 1998 Kazuhiro Sasaki.
interface
uses
Windows, Classes, Forms, Controls, Messages, Dialogs, Graphics,
StdCtrls, DsnShape, DsnList, DsnMes;
type
THandlerRect = class;
TMultiHandler = class(TReceiveTargets)
protected
FList: TList;
function CreateHandlerRect(Control:TControl):THandlerRect;virtual;
public
Size: Integer;
CutSizeX:Integer;
CutSizeY:Integer;
ColorSingle: TColor;
ColorMulti: TColor;
Color: TColor;
PenWidth:Integer;
constructor Create; virtual;
destructor Destroy; override;
procedure ItemDeath(Index:Integer); override;
procedure Add(Item:Pointer);override;
procedure Clear; override;
procedure Delete(Index:Integer); override;
procedure SetPosition; override;
end;
THandlerRect = class
private
ChildDeth:Boolean;
protected
SmallRects: TList;
SWidth: Integer;
SHeight: Integer;
SLeft: Integer;
STop: Integer;
procedure CreateSmallRect;virtual;
procedure SetControl;virtual;
public
Control:TControl;
Size: Integer;
CutSizeX:Integer;
CutSizeY:Integer;
ColorSingle: TColor;
ColorMulti: TColor;
Color: TColor;
PenWidth:Integer;
constructor Create(AControl:TControl;ASize,ACutSizeX,ACutSizeY,APenWidth:Integer;clMulti,clSingle,ShapeColor:TColor);
destructor Destroy; override;
procedure ChangeColorMulti;
end;
TSmallRect = class(TCustomControl)
private
HandlerRect: THandlerRect;
protected
FShape: TMultiShape;
FX: Integer;
FY: Integer;
procedure Cutting(var X, Y: Integer);
function CreateRectShape:TMultiShape;virtual;
public
Control:TControl;
Size: Integer;
CutSizeX:Integer;
CutSizeY:Integer;
ColorSingle: TColor;
ColorMulti: TColor;
ShapeColor: TColor;
PenWidth:Integer;
constructor Create2(AControl:TControl;ASize,ACutSizeX,ACutSizeY:Integer;clMulti,clSingle:TColor);
destructor Destroy; override;
procedure SetControl; virtual; abstract;
procedure Paint; override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer);override;
procedure MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);override;
procedure ChangeColorMulti;
end;
TMigiueRect = class(TSmallRect)
public
procedure SetControl;override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer);override;
procedure MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);override;
end;
TMigishitaRect = class(TSmallRect)
public
procedure SetControl;override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer);override;
procedure MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);override;
end;
THidariueRect = class(TSmallRect)
public
procedure SetControl;override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer);override;
procedure MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);override;
end;
THidarishitaRect = class(TSmallRect)
public
procedure SetControl;override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer);override;
procedure MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);override;
end;
implementation
{TMultiHandler}
constructor TMultiHandler.Create;
begin
Size:= 6;
CutSizeX:= 6;
CutSizeY:= 6;
PenWidth:= 2;
ColorSingle:= clBlack;
ColorMulti:= clGray;
Color:= clGray;
end;
destructor TMultiHandler.Destroy;
var
i:integer;
begin
if Assigned(FList) then
begin
for i:= 0 to FList.Count -1 do
THandlerRect(FList[i]).Free;
FList.Free;
end;
inherited Destroy;
end;
procedure TMultiHandler.ItemDeath(Index:I