1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| type
TFLineSpacing = class(TForm)
ListLineSpacing: TRadioGroup;
{ Form Show }
procedure FormShow(Sender: TObject);
{ ListLineSpacing Click }
procedure ListLineSpacingClick(Sender: TObject);
private
{ Private declarations }
{ SetLineSpacing }
procedure SetLineSpacing(RichEdit: TRichEdit; LineSpacing: Byte);
{ GetLineSpacing }
function GetLineSpacing(RichEdit: TRichEdit): Byte;
end;
var
FLineSpacing: TFLineSpacing;
implementation
{$R *.dfm}
uses
Unit1;
{ SetLineSpacing }
procedure TFLineSpacing.SetLineSpacing(RichEdit: TRichEdit; LineSpacing: Byte);
var
ParaFormat: ParaFormat2;
begin
FillChar(ParaFormat, SizeOf(ParaFormat), 0);
with ParaFormat do
begin
cbSize := SizeOf(ParaFormat2);
dwMask := PFM_LINESPACING;
bLineSpacingRule := 5;
dyLineSpacing := LineSpacing;
end;
SendMessage(RichEdit.Handle, EM_SETPARAFORMAT, 0, Longint(@ParaFormat));
end;
{ GetLineSpacing }
function TFLineSpacing.GetLineSpacing(RichEdit: TRichEdit): Byte;
var
ParaFormat: ParaFormat2;
begin
FillChar(ParaFormat, SizeOf(ParaFormat), 0);
ParaFormat.cbSize := SizeOf(ParaFormat2);
SendMessage(RichEdit.Handle, EM_GETPARAFORMAT, 0, Longint(@ParaFormat));
Result := ParaFormat.dyLineSpacing;
end;
{ Form Show }
procedure TFLineSpacing.FormShow(Sender: TObject);
begin
case GetLineSpacing(Form1.RichEdit) of
20:
ListLineSpacing.ItemIndex := 0;
23:
ListLineSpacing.ItemIndex := 1;
30:
ListLineSpacing.ItemIndex := 2;
40:
ListLineSpacing.ItemIndex := 3;
50:
ListLineSpacing.ItemIndex := 4;
60:
ListLineSpacing.ItemIndex := 5;
else
ListLineSpacing.ItemIndex := 0;
end;
end;
{ ListLineSpacing Click }
procedure TFLineSpacing.ListLineSpacingClick(Sender: TObject);
const
LineSpacing = 20;
var
ValInt: Byte;
begin
ValInt := 0;
ValInt := Trunc(LineSpacing * StrToFloat(ListLineSpacing.Items.Strings
[ListLineSpacing.ItemIndex])); // Strings = (1,00 - 1,15 - 1,50) etc...
SetLineSpacing(Form1.RichEdit, ValInt);
end; |
Partager