Repository navigation
Expand file tree
/
Copy pathReportEngine.Reprint.cs
More file actions
144 lines (123 loc) · 4.09 KB
/
Copy pathReportEngine.Reprint.cs
File metadata and controls
144 lines (123 loc) · 4.09 KB
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
using System.Collections.Generic;
namespace FastReport.Engine
{
public partial class ReportEngine
{
#region Fields
private List<BandBase> reprintHeaders;
private List<BandBase> keepReprintHeaders;
private List<BandBase> reprintFooters;
private List<BandBase> keepReprintFooters;
#endregion Fields
#region Private Methods
private void InitReprint()
{
reprintHeaders = new List<BandBase>();
keepReprintHeaders = new List<BandBase>();
reprintFooters = new List<BandBase>();
keepReprintFooters = new List<BandBase>();
}
private void ShowReprintHeaders()
{
float saveOriginX = originX;
foreach (BandBase band in reprintHeaders)
{
band.Repeated = true;
originX = band.ReprintOffset;
ShowBand(band);
band.Repeated = false;
}
originX = saveOriginX;
}
private void ShowReprintFooters()
{
ShowReprintFooters(true);
}
private void ShowReprintFooters(bool repeated)
{
float saveOriginX = originX;
// show footers in reverse order
for (int i = reprintFooters.Count - 1; i >= 0; i--)
{
BandBase band = reprintFooters[i];
band.Repeated = repeated;
band.FlagCheckFreeSpace = false;
originX = band.ReprintOffset;
ShowBand(band);
band.Repeated = false;
band.FlagCheckFreeSpace = true;
}
originX = saveOriginX;
}
private void AddReprint(BandBase band)
{
// save current offset and use it later when reprinting a band.
// it is required when printing subreports
band.ReprintOffset = originX;
if (keeping)
{
if (band is DataHeaderBand || band is GroupHeaderBand)
keepReprintHeaders.Add(band);
else
keepReprintFooters.Add(band);
}
else
{
if (band is DataHeaderBand || band is GroupHeaderBand)
reprintHeaders.Add(band);
else
reprintFooters.Add(band);
}
}
private void RemoveReprint(BandBase band)
{
if (keepReprintHeaders.Contains(band))
keepReprintHeaders.Remove(band);
if (reprintHeaders.Contains(band))
reprintHeaders.Remove(band);
if (keepReprintFooters.Contains(band))
keepReprintFooters.Remove(band);
if (reprintFooters.Contains(band))
reprintFooters.Remove(band);
}
private void StartKeepReprint()
{
keepReprintHeaders.Clear();
keepReprintFooters.Clear();
}
private void EndKeepReprint()
{
foreach (BandBase band in keepReprintHeaders)
{
reprintHeaders.Add(band);
}
foreach (BandBase band in keepReprintFooters)
{
reprintFooters.Add(band);
}
keepReprintHeaders.Clear();
keepReprintFooters.Clear();
}
private float GetFootersHeight()
{
float result = 0;
bool saveRepeated = false;
foreach (BandBase band in reprintFooters)
{
saveRepeated = band.Repeated;
band.Repeated = true;
result += GetBandHeightWithChildren(band);
band.Repeated = saveRepeated;
}
foreach (BandBase band in keepReprintFooters)
{
saveRepeated = band.Repeated;
band.Repeated = true;
result += GetBandHeightWithChildren(band);
band.Repeated = saveRepeated;
}
return result;
}
#endregion Private Methods
}
}