创建新的Tshape组件问题,Delphi 7

创建新的Tshape组件问题,Delphi 7,delphi,components,shapes,Delphi,Components,Shapes,我正在创建新的形状组件,其名称为:设备形状,但该组件未注册,且其未显示在组件板中 代码编译时没有任何错误,但我无法注册新组件 有人能帮忙吗 unit DeviceShape; interface uses SysUtils, Windows, Classes, Graphics, Controls,ExtCtrls; type TdeviceType=(Smoke,Heat,Control_Module,Monitor_Module,Bell,Break_Glass,Sirin);

我正在创建新的形状组件,其名称为:设备形状,但该组件未注册,且其未显示在组件板中

代码编译时没有任何错误,但我无法注册新组件

有人能帮忙吗

unit DeviceShape;
interface
uses
  SysUtils, Windows, Classes,
  Graphics, Controls,ExtCtrls;
  type
 TdeviceType=(Smoke,Heat,Control_Module,Monitor_Module,Bell,Break_Glass,Sirin);
 TdeviceShape=class(TShape)
private
   FDevType:TdeviceType;
   FdeviceTxt:string;
   procedure  SetDeviceTxt(Value:String);
   procedure SetDeviceType (Value:TdeviceType);
public
    constructor Create (AOwner: TComponent); override;
 protected
 procedure Paint; override   ;
 published
    property Text: string read FdeviceTxt write SetDeviceTxt default 'S' ;
    property DeviceType:TdeviceType read FDevType write SetDeviceType default Smoke;
    property OnClick;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDrag;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
end;
procedure register ;
implementation
    procedure Register;
begin
RegisterComponents('Issam', [TdeviceShape]);
end;
在这里您可以找到下一个程序体:

procedure TdeviceShape.Paint;
begin
Canvas.Font.Height:=Width-(Width div 4) ;
Canvas.TextOut(0,(Height div 2)-(Canvas.Font.Height div 2),FdeviceTxt);
inherited;
end;
procedure TdeviceShape.SetDeviceTxt(Value:String);
begin
case FDevType of
Smoke             : FdeviceTxt:='S';
Heat                  : FdeviceTxt:='H';
Control_Module : FdeviceTxt:='C';
Monitor_Module : FdeviceTxt:='M';
Bell                    : FdeviceTxt:='B';
Break_Glass     : FdeviceTxt:='BG';
Sirin                : FdeviceTxt:='SI' ;
end;
Invalidate;
end;
procedure TdeviceShape.SetDeviceType(Value: TdeviceType);
begin
  if FDevType <> Value then
  begin
    FDevType := Value;
    Invalidate;
  end;
end;
end. 
程序TdeviceShape.油漆;
开始
Canvas.Font.Height:=Width-(Width div 4);
Canvas.TextOut(0,(高度分区2)-(Canvas.Font.Height分区2),fdevicext);
继承;
结束;
过程TdeviceShape.SetDeviceText(值:字符串);
开始
病例类型
烟雾:fdevicext:='S';
加热:fdevicext:='H';
控制模块:fdevicext:='C';
监视器模块:fdevicext:='M';
Bell:fdevicext:='B';
碎玻璃:fdevicext:=“BG”;
Sirin:fdevicext:='SI';
结束;
使无效
结束;
程序TdeviceShape.SetDeviceType(值:TdeviceType);
开始
如果是FDevType值,则
开始
FDevType:=值;
使无效
结束;
结束;
结束。
来自:

注册涉及在包的一个单元中编写一个过程,该单元必须具有名称RegisterRegister过程必须出现在单元的接口部分,并且(与Delphi的其余部分不同)其名称区分大小写

注意:尽管Delphi是一种不区分大小写的语言,寄存器过程区分大小写,必须用大写的
R
拼写


因此,您似乎需要在界面部分编写
寄存器
,而不是
寄存器

您是否将其放入了一个包中?您是否有
注册程序?你安装了软件包吗?是的。抱歉,我已尝试附加代码。。。但是该网站要求提供更多细节。那么,你应该按照建议提供更多细节。所有相关代码(特别是
注册
过程),以及您如何尝试安装组件的说明:单元、软件包、方法(如右键单击软件包并选择“安装”),以及发生情况的说明:显示的消息文本。我已减少了所附的代码,当涉及到代码格式化时,您真的应该更加小心!作为一名软件开发人员,一个非常重要的部分就是关注细节。有太多的问题让我无法在评论中指出,但这里有几个例子:(1)为什么
setDeviceText
前面有两个空格?(2) 为什么你有时在
之前有空格,有时没有空格(
?(3)在
之后:
?(4)在
之前;
?(5)在
之后,
?(6)为什么你有时用大写字母
S
字符串,等等。我确实认为关注细节与最终结果的质量相关。