我使用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;