我使用TMemo来显示多行。
我想使用快捷键Ctrl + B将TMemo中的选定文本属性更改为粗体。
例如,用户输入“你好,你好吗?”在Tmemo中,我希望当用户选择“How”并按Ctrl + B然后只有“How”应该在该TMemo中以粗体显示。
我使用Delphi 7。
请建议解决方案。谢谢你的帮助。
答案 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;