我正在尝试创建一个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并没有像应该的那样自我画画。
答案 0 :(得分:5)
使用TToolbar
。
还在表单上添加TImageList
和TActionList
。
将ImageList分配给ActionList和ToolBar。
然后,您可以向ActionList添加一些所谓的标准操作(“新操作”按钮上的下拉菜单)。
在Format
类别中,您会找到TRichEditBold
,TRichEditItalic
和TRichEditUnderline
。选择它们并单击OK
。
然后,在工具栏中添加3个工具按钮,并将操作分配给它们。
当选择具有此状态的内容并自动设置粗体,斜体或下划线时,所有类似于按下状态的操作都将在不编写任何代码的情况下进行处理。
答案 1 :(得分:2)
考虑制作一个框架。框架是制作“复合控件”的常用方法,并且不需要任何编码,在您的情况下,只需使用表单设计器和属性检查器即可。
点击文件 - >新 - >框架(您可能必须单击文件 - >新建 - >其他,然后找到框架,如果它不在您的新项目菜单中。)
现在添加按钮和Rich Edit。将Rich Edit上的Anchors设置为Top + Left + Right + Bottom(全部四个On)。
现在,您可以将此“框架”放置在应用程序的任何位置,它将像单个控件一样。
我对Frames不喜欢的是你无法阻止实例化框架的人编辑其布局,默认情况下他们可以在框架内移动控件并添加更多控件,这是在事实上,对于Frames来说是一种痛苦。
您可以看到的第二种方法是“复合控制”。继承自TPanel,并添加RIch Edit和按钮,将其全部写入代码中。您喜欢的高度和布局代码是您自己编写的。它与您建议的内容之间的区别在于,您正在尝试使Rich Edit包含其他控件,正如David明确指出的那样,这是不可能的。