相关疑难解决方法(0)

组件创建 - 将组件连接在一起?

我是组件创建的新手,正在尝试使用Delphi的标准问题VCL创建一些自己的自定义派生组件.

我想我可以将两个组件混合在一起,创建一个单独的组件.从目前为止,我的想法是将TImage放在TScrollBox中:

unit MyComponent;

interface

uses
  Windows,
  Classes, 
  Controls,
  Forms,
  ExtCtrls;

type
  TMyPanel = class(TScrollBox)
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TMyPanel]);
end;

{ TMyPanel }

constructor TMyPanel.Create(AOwner: TComponent);
var
  AImage: TImage;
begin
  inherited Create(AOwner);

  AImage := TImage.Create(AOwner);
  AImage.Align := alClient;
  AImage.Parent := Self;
end;

destructor TMyPanel.Destroy;
begin
  inherited;
end;

end.
Run Code Online (Sandbox Code Playgroud)

如果我将上面的代码编译并安装到一个包中,结果如下所示:

在此输入图像描述

在此输入图像描述

问题

我希望我的组件被注册为一个单独的组件.但该组件应该是TScrollBox和TImage的组合.主要组件将是TScrollBox,但它现在应该可以访问TImage的属性和事件等.

例如,TMyPanel可以共享TImage和TScrollBox的属性:

  • 自动尺寸
  • 边框
  • HorzScrollBar
  • ParentBackground
  • 图片
  • VertScrollBar

我认为完全编写一个新的组件来完成上述行为是不合适的,我真的不知道从哪里开始.如果可以实现这一点,您可以创建一些有趣的组件,这些组件合并为一个,但保留原始属性,方法和事件等.

这就是我想在TScrollBox中使用TImage实现的目标.

Uwe Raabe的答案按预期工作.TImage现在在TScrollBox中注册,但显示为一个组件.TImage的属性在Object Inspector中显示为Image.>这将揭示TImage的属性:)

delphi

10
推荐指数
1
解决办法
2544
查看次数

标签 统计

delphi ×1