单击按钮(例如Bold)时是否可以避免TRichEdit失去焦点?

时间:2011-04-18 19:08:52

标签: delphi controls focus trichedit

使用delphi和rich edit,我需要按照我正在编写的这个编辑器的行来复制一些东西,当你选择一个文本并按下Bold按钮时,文本仍然被选中而不是取消选择并失去焦点。

我怎样才能做到这一点?

谢谢。

1 个答案:

答案 0 :(得分:7)

好的,现在我觉得我看到了这个问题。您有TRichEditTButton。然后你做一些像

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

当您点击Button1时Rich Edit控件失去焦点时,您会感到很恼火。通常,您使用TToolButton中的TToolbar作为“粗体”按钮。这不会使编辑器失去焦点,因为TToolButton不是窗口控件。

如果您不想使用TToolBar(或任何等效控件),只需使用TSpeedButton代替TButton

然而,正常的做法是使用TActionList。在表单上删除此类控件,然后添加一个新操作,将其命名为ActnBold或其他内容。将标题设置为'Bold',将提示设置为'Make the selection bold.',添加快捷方式Ctrl+B,然后编写

with RichEdit1.SelAttributes do
  Style := Style + [fsBold];

OnExecute事件中。然后,只需将控件的Action属性设置为ActnBold,就可以将此操作关联到任何按钮,速度按钮,工具栏按钮,菜单项...... p>

如果你确实想要使用窗口控件,例如TButton,那么你可以做

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

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