0

我正在尝试创建一个 TCustomRichEdit,上面有一些速度按钮。我怎样才能完成这种行为?组件的高度需要是按钮+richedit。

[B][I][U]
+-------+
|A1REdit|
|       |
+-------+

目前我有以下代码:

private
  FBoldButton: TSpeedButton;

constructor TA1RichEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FBoldButton := TSpeedButton.Create(Self);
  FBoldButton.Parent := Self;
end;

destructor TA1RichEdit.Destroy;
begin
  FreeAndNil(FBoldButton);

  inherited;
end;

这会在richedit 上绘制速度按钮(因为richedit 是父级),我需要按钮位于richedit 上方。在这段代码之后,richedit 不会像它应该的那样绘制自己。

4

2 回答 2

5

使用TToolbar.

还要在表格上加上 aTImageList和 a TActionList

将 ImageList 分配给 ActionList 和 ToolBar。

然后,您可以将一些所谓的标准操作添加到您的 ActionList(“新操作”按钮上的下拉菜单)。

Format类别中,您会找到TRichEditBold和。选择它们并单击。TRichEditItalicTRichEditUnderlineOK

然后您将 3 个工具按钮添加到您的工具栏并将您的操作分配给它们。

Everything like the pressed state when something is selected that has this state and automatically setting bold, italic or underlined will be handled without writing any code.

于 2012-06-12T15:37:48.330 回答
2

考虑制作一个框架。框架是制作“复合控件”的常用方法,不需要任何编码,在您的情况下,只需表单设计器和属性检查器即可完成。

单击文件-> 新建-> 框架(您可能必须单击文件-> 新建-> 其他,然后如果它不在您的新项目菜单中,则查找框架)。

现在添加按钮和 Rich Edit。将 Rich Edit 上的 Anchors 设置为 Top + Left + Right + Bottom(全部四个 On)。

现在你可以把这个“框架”放在你的应用程序的任何地方,它就像一个单独的控件。

我不喜欢 Frames 的地方在于,您不能阻止实例化框架的人编辑其布局,默认情况下,他们可以在框架内移动控件并添加更多控件,这实际上是一种关于 Frames 的痛苦。

您可以查看的第二种方法是“复合控件”。从 TPanel 继承,并添加 RIch Edit 和您的按钮,全部用代码编写。高度和布局代码由您自己编写,随心所欲。这与您所建议的区别在于您试图使 Rich Edit 包含其他控件,正如 David 明确表示的那样,这是不可能的。

于 2012-06-13T01:59:14.860 回答