将Custom控件添加到另一个自定义控件

时间:2011-03-27 18:25:36

标签: delphi custom-controls

我想要完成的是创建新的触摸键盘。

首先我创建了从速度按钮派生的按钮。 完成,现在我需要创建多个按钮并将它们布局在某处。这是我被卡住了。

我创建了一个新组件,我从TGraphicControl派生(这应该是我的新触摸键盘),但我不知道如何向画布添加组件。我实际上不知道我是否应该将它们添加到画布或其他组件(例如面板)!?!

我的方法好吗?

提前致谢。

2 个答案:

答案 0 :(得分:6)

如果您要创建自定义可视控件,则需要创建按钮并手动定位它们。例如:

TOnScreenKeyboard = class(TWinControl)
public
  constructor Create(AOwner: TComponent);
end;

[...]

constructor TOnScreenKeyboard.Create(AOwner : TComponent)
var
  TempButton : TSpeedButton;
begin
  inherited;
  TempButton := TSpeedButton.Create(self);
  TempButton.Parent := self;
  TempButton.Top := 10;
  TempButton.Left := 15;
  TempButton.Caption := 'A';
end;

您可以将按钮创建放入循环中,并根据应该放置的位置对每个按钮进行定位。

(我把它写在了我的头顶,我不再写很多Pascal,所以可能会有一些小错误!但它应该让你开始。)

答案 1 :(得分:1)

由于你在Panel,Canvas和自定义控件之间的措辞和混淆,我认为你是Delphi的初学者。您需要了解框架:embarcadero docwiki link on frames

框架允许您创建GUI的可重用部分。您可以使用IDE“绘制”框架,然后可以将该复合控件(框架)放置到窗体或其他框架上。它是一个非常强大的功能,它在概念上非常接近其他语言所谓的“自定义控件”(非常接近asp.net或WPF认为的自定义控件)。

在Delphi世界中,当您说“自定义控件”时,人们通常会希望您创建一个可重复使用的控件,该控件放在一个包中并安装在IDE中。这是一个相当先进的主题。如果这就是你想要的,那么我误解了这个问题,抱歉。