使用 delphi 和富编辑,我需要按照我正在编写的这个编辑器的行复制一些内容,当您选择文本并按下粗体按钮时,文本保持选中状态,而不是取消选择并失去焦点。
我怎样才能做到这一点?
谢谢你。
好的,现在我想我看到了这个问题。你有一个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;
但它并不漂亮(恕我直言)。