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

时间:2011-12-26 10:26:18

标签: delphi tmemo

我使用TMemo来显示多行。

我想使用快捷键Ctrl + B将TMemo中的选定文本属性更改为粗体。

例如,用户输入“你好,你好吗?”在Tmemo中,我希望当用户选择“How”并按Ctrl + B然后只有“How”应该在该TMemo中以粗体显示。

我使用Delphi 7。

请建议解决方案。谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

您无法在备忘录控件中设置文本格式。您需要一个丰富的编辑控件TRichEdit

为了使当前选择变粗,你可以这样做:

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

调用代码以响应 CTRL + A 之类的快捷方式的首选方法是使用操作。向表单添加TActionList并向该操作列表添加操作。将操作的OnExecute事件处理程序设置为指向执行所选文本的粗体的代码。将Shortcut属性设置为Ctrl+A。使用操作以便集中控制用户事件。通常情况下,可能还有一个工具按钮,一个菜单项和一个执行相同操作的上下文菜单项,这就是他们自己采取行动的地方。

答案 1 :(得分: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;