📄 piereg.~pas
字号:
unit PieReg;
//****************************接口部分******************************************
interface
uses
Windows, Classes, Graphics, Forms, Controls, Pies, Buttons, DesignIntf,
DesignWindows,StdCtrls, ComCtrls, DesignEditors, SysUtils, Dialogs;
{$R *.dfm}
type
//-----------------定制的角度属性编辑对话框TAngleEditDlg类----------------------
TAngleEditDlg = class(TForm)
//--------窗口内包含的对象---------------
OKButton: TButton; //一个OK按钮
SAngleLabel: TLabel; //两个标签
EAngleLabel: TLabel;
STrackBar: TTrackBar; //两个轨迹条
ETrackBar: TTrackBar;
//--------函数---------------
procedure STrackBarChange(Sender: TObject); //轨迹条滑块位置改变事件处理
procedure ETrackBarChange(Sender:TObject); //轨迹条滑块位置改变事件处理
private
FAngles:TAngles; //角度属性变量
procedure SetAngles(Value:TAngles); //设置角度属性函数
public
//建立一个内部的TAngles属性,用于传递TAngles的属性值
property pAngles:TAngles read FAngles write SetAngles stored True;
end;
//-----------------TAngles的属性编辑器类TAngleProperty--------------------------
TAnglesProperty=class(TClassProperty)
public
procedure Edit;override;
function GetAttributes:TPropertyAttributes;override;
end;
//---------------------组件注册函数声明-----------------------------------------
procedure Register;
//****************************执行部分******************************************
implementation
//-------------------------TAngleEditDlg类成员函数------------------------------
//----开始角度轨迹条改变事件处理函数------
procedure TAngleEditDlg.STrackBarChange(Sender:TObject);
begin
SAngleLabel.Caption:='Start Angle ='+IntToStr(STrackBar.Position);
FAngles.StartAngle:=STrackBar.Position; //传递变量
end;
//----结束角度轨迹条改变事件处理函数------
procedure TAngleEditDlg.ETrackBarChange(Sender:TObject);
begin
EAngleLabel.Caption:='End Angle ='+IntToStr(ETrackBar.Position);
FAngles.EndAngle:=ETrackBar.Position; //传递变量
end;
//------设置角度属性----------------------
//在对象查看器中单击带省略号按钮,弹出对话框前自动调用
procedure TAngleEditDlg.SetAngles(Value:TAngles);
begin
FAngles:=Value; //修改角度属性变量FAngles
STrackBar.Position:=Value.StartAngle;
SAngleLabel.Caption:='Start Angle ='+IntToStr(Value.StartAngle);
ETrackBar.Position:=Value.EndAngle;
EAngleLabel.Caption:='End Angle ='+IntToStr(Value.EndAngle);
end;
//-----------------TAngles属性编辑器类TAngleProperty的成员函数------------------
{//----重载Edit函数,以使用户设计程序时在对象查看器中单击属性右侧带省略符号的
按钮时,显示一个设置属性的对话框---------------//}
procedure TAnglesProperty.Edit;
var
Angles:TAngles;
AngleEditDlg:TAngleEditDlg;
begin
Angles:=TAngles(GetOrdValue); //初始化
AngleEditDlg:= TAngleEditDlg.Create(Application);
//将TAngles的属性传递给对话框内部TAngles属性的对象EditorAngles
try
AngleEditDlg.pAngles:=Angles; //用调整前的Angles属性传给对话框的pAngles
AngleEditDlg.ShowModal;
Modified; //通知属性被修改
finally
AngleEditDlg.Free;
end;
end;
function TAnglesProperty.GetAttributes:TPropertyAttributes;
begin
result :=[paDialog,paSubProperties{, paAutoUpdate}];
end;
//----------------------------组件注册函数--------------------------------------
procedure Register;
begin
RegisterComponents('YuRonghua', [TPie]);
RegisterPropertyEditor(TypeInfo(TAngles),
TPie,
'Angles',
TAnglesProperty);
end;
//------------------------------------------------------------------------------
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -