如何在Delphi 7的TMemo中将所选文本属性更改为粗体?

3

我使用 TMemo 来显示多行文本。

我希望能够通过快捷键 Ctrl + B 将 TMemo 中所选文本的属性改为粗体。

例如,用户在 TMemo 中输入“Hello, how are you?”,我希望当用户选择“How”并按下 Ctrl + B 时,只有“How”以粗体出现在 TMemo 中。

我使用的是 Delphi 7。

请给予建议以获得解决方案。感谢您的帮助。


4
TMemo默认不支持此功能,如果想实现需要大量工作。你最好改用TRichEdit并学习如何处理其格式。 - Marjan Venema
无法让 TMemo 完成此操作。使用 TRichEdit 很容易。 - David Heffernan
有任何提示可以使用TRichEdit实现吗?谢谢 - Nalu
我可以使用RichEdit将字体设置为加粗。有人能帮我设置快捷键Ctrl+B来调用xyz过程吗? - Nalu
@DavidHeffernan:你可能是对的。我保持了这种可能性,因为TMS组件套件在其备忘录组件中提供了突出显示功能,而我并不知道它们的祖先是什么。我检查了一下。它们直接从TCustomControl继承而来... - Marjan Venema
@naren 关于设置热键,可以在 OnKeyDown 事件中尝试以下代码:if (((GetKeyState(VK_control) AND 128)=128) AND (key=Ord('B'))) then begin //你的过程 end; - Shirish11
2个回答

3

你不能在备忘录控件中格式化文本。你需要一个富文本编辑控件,TRichEdit

为了使当前选择的文本加粗,你需要这样做:

RichEdit.SelAttributes.Style := RichEdit.SelAttributes.Style + [fsBold];

响应类似于CTRL+A快捷键的代码的首选方法是使用操作。将TActionList添加到窗体中并将一个操作添加到该操作列表中。将操作的OnExecute事件处理程序设置为指向执行所选文本加粗的代码。将Shortcut属性设置为Ctrl+A。使用操作以便您可以集中控制用户事件。通常可能还有一个工具按钮、菜单项和上下文菜单项执行相同的操作,这就是操作发挥作用的地方。


2

这是我写的一个程序的一部分,其中使用了RichEdit;一部分文本以黑色显示,一部分以蓝色显示,可能还有一部分以粗体红色显示。'Text'是RichEdit的一个字段。

procedure TWhatever.InsertText (const atext, btext, ctext: string);
begin
 with RichEdit1 do
  begin
   selstart:= length (text);
   sellength:= 0;
   SelAttributes.Color:= clBlack; 
   seltext:= '[' + atext + '] ';

   selstart:= length (text);
   sellength:= 0;
   SelAttributes.Color:= clBlue;
   seltext:= btext + ' ';

   if ctext <> '' then
    begin   // trap non-existent answers
     selstart:= length (text);
     sellength:= 0;
     SelAttributes.Color:= clRed;
     SelAttributes.Style:= [fsBold];
     seltext:= ctext + ' ';
     SelAttributes.Style:= [];
    end;
   lines.add ('');  // new line
  end;
end;

我能够使用RichEdit设置字体为粗体。有人可以帮我将快捷键Ctrl+B设置为调用xyz过程吗? - Nalu
为什么这个答案里没有加粗的字体? - David Heffernan
@David:因为我没有注意到问题中有“加粗”这个要求!我会编辑我的回答。 - No'am Newman
为了让Ctrl+B作为快捷键起作用,我建议使用TActionManager或TActionList来处理事件(操作)。将快捷键属性设置为Ctrl+B,然后当您在键盘上按下该组合键时,您的操作/事件将被触发。 - user1175743

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接