1

使用 delphi 和富编辑,我需要按照我正在编写的这个编辑器的行复制一些内容,当您选择文本并按下粗体按钮时,文本保持选中状态,而不是取消选择并失去焦点。

我怎样才能做到这一点?

谢谢你。

4

1 回答 1

7

好的,现在我想我看到了这个问题。你有一个TRichEdit和一个TButton。然后你做类似的事情

procedure TForm1.Button1Click(Sender: TObject);
begin
  with RichEdit1.SelAttributes do
    Style := Style + [fsBold];
end;

当您单击 时,Rich Edit 控件失去了焦点,这让您感到恼火Button1。通常,您使用 a TToolButtonin 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;

但它并不漂亮(恕我直言)。

于 2011-04-18T19:20:58.900 回答