使用 delphi 和富编辑,我需要按照我正在编写的这个编辑器的行复制一些内容,当您选择文本并按下粗体按钮时,文本保持选中状态,而不是取消选择并失去焦点。
我怎样才能做到这一点?
谢谢你。
好的,现在我想我看到了这个问题。你有一个TRichEdit
和一个TButton
。然后你做类似的事情
procedure TForm1.Button1Click(Sender: TObject);
begin
with RichEdit1.SelAttributes do
Style := Style + [fsBold];
end;
当您单击 时,Rich Edit 控件失去了焦点,这让您感到恼火Button1
。通常,您使用 a TToolButton
in aTToolbar
作为“粗体”按钮。这不会使编辑器失去焦点,因为 aTToolButton
不是窗口控件。
如果您不想使用 a TToolBar
(或任何等效控件),只需使用 aTSpeedButton
而不是 a TButton
。
但是,执行此操作的正常方法是使用TActionList
. 在您的表单上放置这样一个控件,然后添加一个新操作,调用它ActnBold
或其他东西。将标题设置为'Bold'
,将提示设置为'Make the selection bold.'
,添加快捷方式Ctrl+B
,然后写入
with RichEdit1.SelAttributes do
Style := Style + [fsBold];
在其OnExecute
事件中。然后,您可以将此操作关联到任何按钮、速度按钮、工具栏按钮、菜单项……,只需将控件的Action
属性设置为ActnBold
.
如果您真的非常想使用窗口控件,例如 a TButton
,那么您可以这样做
procedure TForm1.Button1Click(Sender: TObject);
begin
with RichEdit1.SelAttributes do
Style := Style + [fsBold];
RichEdit1.SetFocus;
end;
但它并不漂亮(恕我直言)。