如何改变选定的文本属性为粗体在TMemo在delphi 7



我使用TMemo来显示多行。

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

例如,用户在备忘录中输入"Hello, how are you?",我希望当用户选择"how"并按Ctrl+B时,该备忘录中只应以粗体显示"how"。

我使用Delphi 7.

请给出建议以获得解决方案。谢谢你的帮助。

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

为了使当前选择的内容加粗,你可以这样做:

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

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

这是我写的一个程序的一部分,它使用了richhedit;线条的一部分显示为黑色,一部分显示为蓝色,可能还有一部分显示为粗体红色。"Text"是richit的一个字段。

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;

相关内容

  • 没有找到相关文章

最新更新