使用delphi和rich edit,我需要按照我正在编写的这个编辑器的行来复制一些东西,当你选择一个文本并按下Bold按钮时,文本仍然被选中而不是取消选择并失去焦点。
我怎样才能做到这一点?
谢谢。
答案 0 :(得分:7)
好的,现在我觉得我看到了这个问题。您有TRichEdit
和TButton
。然后你做一些像
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;
但它不漂亮(恕我直言)。