























uses Winapi.Messages, Winapi.Richedit; procedure TForm1.SetRichEditLineSpacing; var Para: TParaFormat2; begin // 初始化结构体大小 Para.cbSize := SizeOf(Para); // 指定要修改的格式为行距 Para.dwMask := PFM_LINESPACING; // 设置行距规则为“精确固定”(以缇为单位) Para.bLineSpacingRule := 4; // 设置行距的具体值,单位是缇 (1缇 = 1/20磅,即1磅=20缇) // 例如,120缇 = 6磅。对于12磅的字体,这将导致行与行之间略有重叠 [citation:1] Para.dyLineSpacing := 240; // 240缇 = 12磅 // 发送消息应用格式 SendMessage(RichEdit1.Handle, EM_SETPARAFORMAT, 0, LPARAM(@Para)); end;
参数详解:TParaFormat2 的关键字段
为了准确控制行距,你需要理解 TParaFormat2 (或 PARAFORMAT2)结构体中几个关键字段的含义 :
字段 作用 关键值/说明
cbSize 指明结构体大小 必须设置为 SizeOf(TParaFormat2),以便RichEdit识别是旧版PARAFORMAT还是扩展的PARAFORMAT2。
dwMask 位掩码,指定哪些格式参数生效 PFM_LINESPACING:表示我们要修改行距。
bLineSpacingRule 定义行距的类型(规则) 4:行距精确等于 dyLineSpacing 指定的值(单位是缇)。这是实现自定义行距最常用的规则。
5:行距为多倍行距。此时 dyLineSpacing 应被解释为倍数(例如,240 代表 2.4 倍行距)。但需注意,部分资料指出,在RichEdit中使用规则5可能无法实现小于单倍行距的效果,此时建议使用规则4 。
dyLineSpacing 行距的具体数值 单位是缇 (Twip)。1缇 = 1/20磅。如果 bLineSpacingRule 为 4,此值即为行距的绝对数值。如果需要将这个设置应用于文档中的选定文本,可以在发送消息前,先选中目标文本 。
补充说明
单位换算:dyLineSpacing 使用的单位是缇,而我们在设计时更习惯使用“磅”。记住换算关系会很有帮助:1磅 = 20缇。例如,如果你希望行距正好是字体大小(单倍行距),对于12磅的字体,就设置为 12 * 20 = 240。
第三方组件:如果你使用的是第三方的富文本编辑控件(如 TRichView 等),它们通常提供了更直观的 LineSpacing 属性可以直接设置,无需发送底层消息 。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。