-
Notifications
You must be signed in to change notification settings - Fork 5
/
forminterlinearverserules.pas
100 lines (81 loc) · 2.83 KB
/
forminterlinearverserules.pas
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
89
90
91
92
93
94
95
96
97
98
99
unit formInterlinearVerseRules;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Grids,
StdCtrls, ComCtrls, Clipbrd, StrUtils, Math, Projeto;
type
{ TFormInterlinearVerseRules }
TFormInterlinearVerseRules = class(TForm)
ButtonOK: TButton;
Button2: TButton;
PageControlVerseRules: TPageControl;
StringGridIntralinear: TStringGrid;
StringGridInterlinear: TStringGrid;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
procedure ButtonOKClick(Sender: TObject);
private
FProject: TProjeto;
procedure SetProject(AValue: TProjeto);
procedure LoadGrid(grid: TStringGrid; values: string);
function GetVerseRules(grid: TStringGrid): string;
public
property Project: TProjeto read FProject write SetProject;
end;
var
frmInterlinearVerseRules: TFormInterlinearVerseRules;
implementation
{ TFormInterlinearVerseRules }
procedure TFormInterlinearVerseRules.ButtonOKClick(Sender: TObject);
begin
FProject.AtribuirInfo('propriedades.interlinearview.verserules', GetVerseRules(StringGridInterlinear));
FProject.AtribuirInfo('propriedades.intralinearview.verserules', GetVerseRules(StringGridIntralinear));
end;
procedure TFormInterlinearVerseRules.SetProject(AValue: TProjeto);
begin
FProject := AValue;
LoadGrid(StringGridInterlinear, FProject.ObterInfo('propriedades.interlinearview.verserules'));
LoadGrid(StringGridIntralinear, FProject.ObterInfo('propriedades.intralinearview.verserules'));
PageControlVerseRules.PageIndex := IfThen(FProject.InterlinearMode = imInterlinear, 0, 1);
end;
procedure TFormInterlinearVerseRules.LoadGrid(grid: TStringGrid; values: string
);
var
rule: string;
fromTo: TStringArray;
begin
grid.RowCount := 1; // clearing grid
if not values.IsEmpty then
for rule in values.Split(#13) do
if not rule.StartsWith(#10#10) then // not an empty rule
begin
fromTo := rule.Split(#10);
grid.RowCount := grid.RowCount + 1;
grid.Cells[0, grid.RowCount-1] := fromTo[0];
grid.Cells[1, grid.RowCount-1] := fromTo[1];
grid.Cells[2, grid.RowCount-1] := IfThen(length(fromTo) = 2, '1', fromTo[2]);
grid.Cells[3, grid.RowCount-1] := IfThen(length(fromTo) = 2, '1', fromTo[3]);
end;
if grid.RowCount = 1 then
grid.RowCount := 2; // add an empty row
grid.AutoSizeColumns;
end;
function TFormInterlinearVerseRules.GetVerseRules(grid: TStringGrid): string;
var
i: integer;
begin
result := '';
for i:=1 to grid.RowCount-1 do
begin
if not result.IsEmpty then
result := result + #13;
result := Concat(result, grid.Cells[0, i], #10,
grid.Cells[1, i], #10,
grid.Cells[2, i], #10,
grid.Cells[3, i]);
end;
end;
initialization
{$I formInterlinearVerseRules.lrs}
end.