【delphi开源代码栏目提醒】:网学会员为需要delphi开源代码的朋友们搜集整理了DrawGuage.pas相关资料,希望对各位网友有所帮助!
unit DrawGuage;
interface
uses
SysUtils, Classes, Controls,Windows,Graphics,ExtCtrls,Messages;
type
TCustomDrawGuage = class(TGraphicControl)
private
FControl:TControl;
FGuageLength:Integer;
procedure SetControl(value:TControl);
procedure SetGuageLength(value:Integer);
protected
procedure Paint;override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Control:TControl read FControl write SetControl;
property GuageLength:Integer read FGuageLength write SetGuageLength default 10;
end;
TDrawGuage = class(TCustomDrawGuage)
private
protected
{ Protected declarations }
public
{ Public declarations }
published
property Control;
property GuageLength;
property Color;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TDrawGuage]);
end;
{ TCustomDrawGuage }
constructor TCustomDrawGuage.Create(AOwner: TComponent);
begin
inherited;
GuageLength := 15;
ControlStyle := ControlStyle + [csReplicatable];
Color := clRed;
end;
destructor TCustomDrawGuage.Destroy;
begin
inherited;
end;
procedure TCustomDrawGuage.Paint;
begin
inherited;
Canvas.Pen.Color := Color;
Canvas.MoveTo(GuageLength,0);
Canvas.LineTo(GuageLength,GuageLength);
Canvas.MoveTo(Width-GuageLength ,0);
Canvas.LineTo(Width-GuageLength,GuageLength);
Canvas.MoveTo(GuageLength,GuageLength div 2);
Canvas.LineTo(Width - GuageLength,GuageLength div 2);
Canvas.TextOut( Width div 2 - 6,0,IntToStr(Width - GuageLength*2));
Canvas.MoveTo(0,GuageLength);
Canvas.LineTo(GuageLength,GuageLength);
Canvas.MoveTo(0,Height - GuageLength);
Canvas.LineTo(GuageLength,Height - GuageLength);
Canvas.MoveTo(GuageLength div 2,GuageLength);
Canvas.LineTo(GuageLength div 2,Height - GuageLength);
Canvas.TextOut(0,Height div 2 - 6,IntToStr(Height - GuageLength*2));
end;
procedure TCustomDrawGuage.SetControl(value: TControl);
begin
FControl := value;
if FControl <> nil then
begin
Width := Control.Width + GuageLength * 2;
Height := Control.Height + GuageLength * 2;
Left := FControl.Left - GuageLength;
Top := FControl.Top - GuageLength;
Parent := FControl.Parent;
end;
end;
procedure TCustomDrawGuage.SetGuageLength(value: Integer);
begin
FGuageLength := value;
Invalidate;
end;
end.
上一篇:
DrawBtn.pas
下一篇:
盘点士兵的各种搞笑失误,连老纳都笑了!