root / UFResBesGestE.pas
Historique | Voir | Annoter | Télécharger (13,597 ko)
1 |
unit UFResBesGestE;
|
---|---|
2 |
|
3 |
interface
|
4 |
|
5 |
uses
|
6 |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
7 |
Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, CheckLst, Menus, Printers, |
8 |
Math, Contnrs, PBNumEdit, PBSuperSpin, Grids, TeEngine, Series, TeeProcs, |
9 |
Chart, TeeEdit, UVariables, gnugettext; |
10 |
|
11 |
type
|
12 |
TFResBesGestE = class(TForm)
|
13 |
PC: TPageControl; |
14 |
TabNRJ: TTabSheet; |
15 |
TabAA: TTabSheet; |
16 |
CBAA3: TComboBox; |
17 |
CBAA4: TComboBox; |
18 |
GBAAY: TGroupBox; |
19 |
Graph: TChart; |
20 |
GBNRJY: TGroupBox; |
21 |
CBNRJ3: TComboBox; |
22 |
LBAA: TListBox; |
23 |
LBNRJ: TListBox; |
24 |
TSAli: TTabSheet; |
25 |
TSMin: TTabSheet; |
26 |
GBMinY: TGroupBox; |
27 |
CBMin3: TComboBox; |
28 |
CBMin4: TComboBox; |
29 |
CBNRJ4: TComboBox; |
30 |
PM: TPopupMenu; |
31 |
MI3D: TMenuItem; |
32 |
MIPreview: TMenuItem; |
33 |
MIPrint: TMenuItem; |
34 |
PD: TPrintDialog; |
35 |
procedure FormClose(Sender: TObject; var Action: TCloseAction); |
36 |
procedure FormShow(Sender: TObject);
|
37 |
procedure PCChange(Sender: TObject);
|
38 |
procedure CBNRJ3Change(Sender: TObject);
|
39 |
procedure CBNRJ4Change(Sender: TObject);
|
40 |
procedure CBAA3Change(Sender: TObject);
|
41 |
procedure CBAA4Change(Sender: TObject);
|
42 |
procedure CBAli2Change(Sender: TObject);
|
43 |
procedure CBMin3Change(Sender: TObject);
|
44 |
procedure CBMin4Change(Sender: TObject);
|
45 |
procedure MI3DClick(Sender: TObject);
|
46 |
procedure MIPreviewClick(Sender: TObject);
|
47 |
procedure MIPrintClick(Sender: TObject);
|
48 |
procedure FormCreate(Sender: TObject);
|
49 |
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; |
50 |
private
|
51 |
{ D?clarations priv?es }
|
52 |
BarAli : TBarSeries ; |
53 |
ListNRJ : TStrings ; |
54 |
BarNRJ : array of TBarSeries ; |
55 |
ListAA : TStrings ; |
56 |
BarAA35 : TBarSeries ; |
57 |
BarAA105 : TBarSeries ; |
58 |
BarMin35 : TBarSeries ; |
59 |
BarMin105 : TBarSeries ; |
60 |
procedure ResetGraph ;
|
61 |
procedure InitAli ;
|
62 |
procedure AffGraphAli ;
|
63 |
procedure InitNRJ ;
|
64 |
procedure AffGraphNRJ ;
|
65 |
procedure InitAA ;
|
66 |
procedure AffGraphAA ;
|
67 |
procedure InitMin ;
|
68 |
procedure AffGraphMin ;
|
69 |
public
|
70 |
{ D?clarations publiques }
|
71 |
end;
|
72 |
|
73 |
var
|
74 |
FResBesGestE: TFResBesGestE; |
75 |
|
76 |
implementation
|
77 |
|
78 |
uses
|
79 |
UStrings, UFindRec, UUtil, UEchelle, UFBesGestE, UFPrevGraph ; |
80 |
|
81 |
{$R *.dfm}
|
82 |
|
83 |
{ TFResBesGestE }
|
84 |
|
85 |
procedure TFResBesGestE.FormCreate(Sender: TObject);
|
86 |
begin
|
87 |
if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1 |
88 |
then
|
89 |
Font.Name := 'Arial Unicode MS';
|
90 |
TranslateComponent(Self); |
91 |
Constraints.MinWidth := 544 + (Width - ClientWidth);
|
92 |
Width := 640;
|
93 |
Constraints.MinHeight := 400 + (Height - ClientHeight);
|
94 |
Height := 480;
|
95 |
CBNRJ3.ItemIndex := 0;
|
96 |
CBNRJ4.Items.Add(Format('%s/%s', [StrMJ, StrJ]));
|
97 |
CBNRJ4.Items.Add('%');
|
98 |
CBNRJ4.ItemIndex := 0;
|
99 |
CBAA3.ItemIndex := 0;
|
100 |
CBAA4.Items.Add(Format('%s/%s', [StrG, StrJ]));
|
101 |
CBAA4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
|
102 |
CBAA4.ItemIndex := 0;
|
103 |
CBMin3.ItemIndex := 0;
|
104 |
CBMin4.Items.Add(Format('%s/%s', [StrG, StrJ]));
|
105 |
CBMin4.Items.Add(Format('%s/%s %s', [StrG, StrKg, StrAlimentUnit]));
|
106 |
CBMin4.ItemIndex := 0;
|
107 |
end;
|
108 |
|
109 |
procedure TFResBesGestE.FormShow (Sender : TObject) ;
|
110 |
begin
|
111 |
MIPrint.Enabled := IsComplete or IsEducation ;
|
112 |
// Aliment
|
113 |
InitAli ; |
114 |
// Energie
|
115 |
InitNRJ ; |
116 |
// Acides Amin?s
|
117 |
InitAA ; |
118 |
// Min?raux
|
119 |
InitMin ; |
120 |
// Affichage principal
|
121 |
PC.ActivePageIndex := 0 ;
|
122 |
PCChange (nil) ;
|
123 |
end ;
|
124 |
|
125 |
procedure TFResBesGestE.FormClose (Sender : TObject ; var Action : TCloseAction) ; |
126 |
var
|
127 |
i : integer ; |
128 |
begin
|
129 |
// Aliment
|
130 |
BarAli.Free ; |
131 |
// Energie
|
132 |
for i := 0 to ListNRJ.Count - 1 do |
133 |
BarNRJ[i].Free ; |
134 |
SetLength (BarNRJ, 0) ;
|
135 |
ListNRJ.Free ; |
136 |
// Acides Amin?s
|
137 |
BarAA35.Free ; |
138 |
BarAA105.Free ; |
139 |
ListAA.Free ; |
140 |
// Min?raux
|
141 |
BarMin35.Free ; |
142 |
BarMin105.Free ; |
143 |
end ;
|
144 |
|
145 |
procedure TFResBesGestE.PCChange (Sender : TObject) ;
|
146 |
begin
|
147 |
case PC.ActivePageIndex of |
148 |
0 : // Aliment |
149 |
AffGraphAli ; |
150 |
1 : // Energie |
151 |
AffGraphNRJ ; |
152 |
2 : // Acides Amin?s |
153 |
AffGraphAA ; |
154 |
3 : // Min?raux |
155 |
AffGraphMin ; |
156 |
end ;
|
157 |
end ;
|
158 |
|
159 |
procedure TFResBesGestE.ResetGraph ;
|
160 |
var
|
161 |
i : integer ; |
162 |
begin
|
163 |
Graph.UndoZoom ; |
164 |
Graph.View3D := FALSE ; |
165 |
Graph.Legend.Visible := TRUE ; |
166 |
Graph.Legend.Inverted := TRUE ; |
167 |
Graph.Title.Text.Clear ; |
168 |
Graph.SubTitle.Text.Clear ; |
169 |
Graph.LeftAxis.Automatic := FALSE ; |
170 |
Graph.BottomAxis.MinimumOffset := 0;
|
171 |
Graph.BottomAxis.MaximumOffset := 0;
|
172 |
// Aliment
|
173 |
BarAli.Active := FALSE ; |
174 |
// Energie
|
175 |
for i := 0 to ListNRJ.Count - 1 do |
176 |
BarNRJ[i].Active := FALSE ; |
177 |
// Acides Amin?s
|
178 |
BarAA35.Active := FALSE ; |
179 |
BarAA105.Active := FALSE ; |
180 |
// Min?raux
|
181 |
BarMin35.Active := FALSE ; |
182 |
BarMin105.Active := FALSE ; |
183 |
end ;
|
184 |
|
185 |
procedure TFResBesGestE.MI3DClick (Sender : TObject) ;
|
186 |
begin
|
187 |
Graph.View3D := not (Graph.View3D) ;
|
188 |
end ;
|
189 |
|
190 |
procedure TFResBesGestE.MIPreviewClick (Sender : TObject) ;
|
191 |
begin
|
192 |
FPrevGraph := TFPrevGraph.Create (Self) ; |
193 |
with FPrevGraph do |
194 |
begin
|
195 |
TPPGraph.Panels.Add (Graph) ; |
196 |
ShowModal ; |
197 |
Release ; |
198 |
end ;
|
199 |
end ;
|
200 |
|
201 |
procedure TFResBesGestE.MIPrintClick (Sender : TObject) ;
|
202 |
begin
|
203 |
if PD.Execute
|
204 |
then
|
205 |
begin
|
206 |
Printer.Orientation := poLandscape ; |
207 |
Graph.Print ; |
208 |
end ;
|
209 |
end ;
|
210 |
|
211 |
/////////////////
|
212 |
// Aliment //
|
213 |
/////////////////
|
214 |
procedure TFResBesGestE.InitAli ;
|
215 |
begin
|
216 |
// BarAli : s?rie (barre) graphique
|
217 |
BarAli := TBarSeries.Create (Graph) ; |
218 |
BarAli.ParentChart := Graph ; |
219 |
BarAli.Title := ' ' ;
|
220 |
BarAli.SeriesColor := clTeal ; |
221 |
BarAli.BarPen.Color := BarAli.SeriesColor ; |
222 |
BarAli.Marks.Style := smsValue ; |
223 |
BarAli.Marks.ArrowLength := 0 ;
|
224 |
BarAli.Marks.Arrow.Visible := FALSE ; |
225 |
BarAli.Marks.Brush.Style := bsClear ; |
226 |
BarAli.Marks.Frame.Visible := FALSE ; |
227 |
BarAli.Marks.Font.Style := [fsBold] ; |
228 |
Graph.AddSeries (BarAli) ; |
229 |
end ;
|
230 |
|
231 |
procedure TFResBesGestE.AffGraphAli ;
|
232 |
var
|
233 |
j : integer ; |
234 |
|
235 |
// Ordonn?e
|
236 |
function AliY : double ;
|
237 |
begin
|
238 |
with FBesGestE do |
239 |
if (AppEMTot[j] = 0) |
240 |
then
|
241 |
result := 0
|
242 |
else
|
243 |
result := BesEMTot[j] * AppAliTot[j] / AppEMTot[j] ; |
244 |
end ;
|
245 |
|
246 |
// AffGraphAli
|
247 |
begin
|
248 |
ResetGraph ; |
249 |
Graph.Legend.Visible := FALSE ; |
250 |
Graph.Title.Text.Add (TSAli.Caption) ; |
251 |
Graph.LeftAxis.Title.Caption := Format ('%s (%s/%s)', [TSAli.Caption, StrKg, StrJ]) ;
|
252 |
Graph.BottomAxis.Title.Caption := _('Litter');
|
253 |
// Affichage de la barre
|
254 |
BarAli.Active := TRUE ; |
255 |
BarAli.Clear ; |
256 |
for j := 1 to NB_CYCLES do |
257 |
BarAli.AddBar (AliY, Format ('%d', [j]), clTeeColor) ;
|
258 |
AjustEchelle (Graph) ; |
259 |
end ;
|
260 |
|
261 |
procedure TFResBesGestE.CBAli2Change(Sender: TObject);
|
262 |
begin
|
263 |
|
264 |
end;
|
265 |
|
266 |
/////////////////
|
267 |
// Energie //
|
268 |
/////////////////
|
269 |
procedure TFResBesGestE.InitNRJ ;
|
270 |
const
|
271 |
TabColor : array[0..4] of TColor |
272 |
= (clOlive, clGray, clAqua, clPurple, clNavy) ; |
273 |
var
|
274 |
i : integer ; |
275 |
begin
|
276 |
// ListNRJ : liste pour l'?nergie
|
277 |
ListNRJ := TStringList.Create ; |
278 |
ListNRJ.Assign (LBNRJ.Items) ; |
279 |
// BarNRJ : s?ries (barres) graphiques
|
280 |
SetLength (BarNRJ, ListNRJ.Count) ; |
281 |
for i := 0 to ListNRJ.Count - 1 do |
282 |
begin
|
283 |
BarNRJ[i] := TBarSeries.Create (Graph) ; |
284 |
BarNRJ[i].ParentChart := Graph ; |
285 |
BarNRJ[i].Title := ListNRJ[i] ; |
286 |
BarNRJ[i].SeriesColor := TabColor[i] ; |
287 |
BarNRJ[i].BarPen.Color := BarNRJ[i].SeriesColor ; |
288 |
BarNRJ[i].Marks.Visible := FALSE ; |
289 |
Graph.AddSeries (BarNRJ[i]) ; |
290 |
end ;
|
291 |
end ;
|
292 |
|
293 |
procedure TFResBesGestE.AffGraphNRJ ;
|
294 |
var
|
295 |
i, j : integer ; |
296 |
m : double ; |
297 |
|
298 |
// Ordonn?e
|
299 |
function NRJY : double ;
|
300 |
begin
|
301 |
case i of |
302 |
0 : // Entretien |
303 |
result := FBesGestE.BesEMEntTot[j] ; |
304 |
1 : // Activit? |
305 |
result := FBesGestE.BesEMActTot[j] ; |
306 |
2 : // Thermor?gulation |
307 |
result := FBesGestE.BesEMTheTot[j] ; |
308 |
3 : // Port?e |
309 |
result := FBesGestE.BesEMPortTot[j] ; |
310 |
4 : // R?serve |
311 |
result := FBesGestE.BesEMResTot[j] ; |
312 |
else
|
313 |
result := 0 ;
|
314 |
end ;
|
315 |
end ;
|
316 |
|
317 |
// AffGraphNRJ
|
318 |
begin
|
319 |
ResetGraph ; |
320 |
Graph.Title.Text.Add (TabNRJ.Caption) ; |
321 |
Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBNRJ3.Text, CBNRJ4.Text]) ;
|
322 |
Graph.BottomAxis.Title.Caption := _('Litter');
|
323 |
// Affichage des barres
|
324 |
for i := 0 to ListNRJ.Count - 1 do |
325 |
BarNRJ[i].Active := TRUE ; |
326 |
for i := 0 to ListNRJ.Count - 1 do |
327 |
BarNRJ[i].Clear ; |
328 |
if (CBNRJ4.ItemIndex = 1) |
329 |
then
|
330 |
for i := 0 to ListNRJ.Count - 1 do |
331 |
BarNRJ[i].MultiBar := mbStacked100 |
332 |
else
|
333 |
for i := 0 to ListNRJ.Count - 1 do |
334 |
BarNRJ[i].MultiBar := mbStacked ; |
335 |
for j := 1 to NB_CYCLES do |
336 |
begin
|
337 |
case CBNRJ3.ItemIndex of |
338 |
0 : // Energie digestible |
339 |
m := FBesGestE.AppEDTot[j] / FBesGestE.AppEMTot[j] ; |
340 |
2 : // Energie nette |
341 |
m := FBesGestE.AppENTot[j] / FBesGestE.AppEMTot[j] ; |
342 |
else
|
343 |
m := 1 ;
|
344 |
end ;
|
345 |
for i := 0 to ListNRJ.Count - 1 do |
346 |
BarNRJ[i].AddBar (NRJY * m, Format ('%d', [j]), clTeeColor) ;
|
347 |
end ;
|
348 |
AjustEchelle (Graph) ; |
349 |
end ;
|
350 |
|
351 |
procedure TFResBesGestE.CBNRJ3Change (Sender : TObject) ;
|
352 |
begin
|
353 |
AffGraphNRJ ; |
354 |
end ;
|
355 |
|
356 |
procedure TFResBesGestE.CBNRJ4Change (Sender : TObject) ;
|
357 |
begin
|
358 |
AffGraphNRJ ; |
359 |
end ;
|
360 |
|
361 |
///////////////////////
|
362 |
// Acides amin?s //
|
363 |
///////////////////////
|
364 |
procedure TFResBesGestE.InitAA ;
|
365 |
const
|
366 |
TabColor : array[0..3] of TColor |
367 |
= (clOlive, clPurple, clNavy, clGreen) ; |
368 |
begin
|
369 |
// ListAA : liste pour les acides amin?s
|
370 |
ListAA := TStringList.Create ; |
371 |
ListAA.Assign (LBAA.Items) ; |
372 |
// BarAA35 et BarAA105 : s?ries (barres) graphiques
|
373 |
BarAA35 := TBarSeries.Create (Graph) ; |
374 |
BarAA35.ParentChart := Graph ; |
375 |
BarAA35.Title := Str35j ; |
376 |
BarAA35.SeriesColor := clGreen ; |
377 |
BarAA35.BarPen.Color := BarAA35.SeriesColor ; |
378 |
BarAA35.Marks.Visible := FALSE ; |
379 |
Graph.AddSeries (BarAA35) ; |
380 |
BarAA105 := TBarSeries.Create (Graph) ; |
381 |
BarAA105.ParentChart := Graph ; |
382 |
BarAA105.Title := Str105j ; |
383 |
BarAA105.SeriesColor := clNavy ; |
384 |
BarAA105.BarPen.Color := BarAA105.SeriesColor ; |
385 |
BarAA105.Marks.Visible := FALSE ; |
386 |
Graph.AddSeries (BarAA105) ; |
387 |
end ;
|
388 |
|
389 |
procedure TFResBesGestE.AffGraphAA ;
|
390 |
var
|
391 |
h, i, j : integer ; |
392 |
|
393 |
// Ordonn?e
|
394 |
function AAY : double ;
|
395 |
var
|
396 |
a : integer ; |
397 |
d : double ; |
398 |
begin
|
399 |
case h of |
400 |
3 : // met+cys |
401 |
a := 13 ;
|
402 |
7 : // phe+tyr |
403 |
a := 14 ;
|
404 |
else
|
405 |
a := h ; |
406 |
end ;
|
407 |
// Diviseur
|
408 |
case CBAA4.ItemIndex of |
409 |
1 : // Aliment |
410 |
d := FBesGestE.BesEMTot[j] * FBesGestE.AppAliTot[j] / FBesGestE.AppEMTot[j] ; |
411 |
else
|
412 |
d := 1 ;
|
413 |
end ;
|
414 |
result := FBesGestE.BesAA[j, a, i] / d ; |
415 |
end ;
|
416 |
|
417 |
// AffGraphAA
|
418 |
begin
|
419 |
ResetGraph ; |
420 |
Graph.Title.Text.Add (TabAA.Caption) ; |
421 |
Graph.SubTitle.Text.Add(StrDigestStd); |
422 |
Graph.Legend.Inverted := FALSE ; |
423 |
Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBAA3.Text, CBAA4.Text]) ;
|
424 |
Graph.BottomAxis.Title.Caption := _('Litter');
|
425 |
// Affichage des barres
|
426 |
BarAA35.Active := TRUE ; |
427 |
BarAA105.Active := TRUE ; |
428 |
BarAA35.Clear ; |
429 |
BarAA105.Clear ; |
430 |
BarAA35.MultiBar := mbSide ; |
431 |
BarAA105.MultiBar := mbSide ; |
432 |
h := CBAA3.ItemIndex + 1 ;
|
433 |
for j := 1 to NB_CYCLES do |
434 |
begin
|
435 |
i := 35 ;
|
436 |
BarAA35.AddBar (AAY, Format ('%d', [j]), clTeeColor) ;
|
437 |
i := 105 ;
|
438 |
BarAA105.AddBar (AAY, Format ('%d', [j]), clTeeColor) ;
|
439 |
end ;
|
440 |
AjustEchelle (Graph) ; |
441 |
end ;
|
442 |
|
443 |
procedure TFResBesGestE.CBAA3Change (Sender : TObject) ;
|
444 |
begin
|
445 |
AffGraphAA ; |
446 |
end ;
|
447 |
|
448 |
procedure TFResBesGestE.CBAA4Change (Sender : TObject) ;
|
449 |
begin
|
450 |
AffGraphAA ; |
451 |
end ;
|
452 |
|
453 |
//////////////////
|
454 |
// Min?raux //
|
455 |
//////////////////
|
456 |
procedure TFResBesGestE.InitMin ;
|
457 |
begin
|
458 |
// BarMin35 et BarMin105 : s?ries (barres) graphiques
|
459 |
BarMin35 := TBarSeries.Create (Graph) ; |
460 |
BarMin35.ParentChart := Graph ; |
461 |
BarMin35.Title := Str35j ; |
462 |
BarMin35.SeriesColor := clGreen ; |
463 |
BarMin35.BarPen.Color := BarMin35.SeriesColor ; |
464 |
BarMin35.Marks.Visible := FALSE ; |
465 |
Graph.AddSeries (BarMin35) ; |
466 |
BarMin105 := TBarSeries.Create (Graph) ; |
467 |
BarMin105.ParentChart := Graph ; |
468 |
BarMin105.Title := Str105j ; |
469 |
BarMin105.SeriesColor := clNavy ; |
470 |
BarMin105.BarPen.Color := BarMin105.SeriesColor ; |
471 |
BarMin105.Marks.Visible := FALSE ; |
472 |
Graph.AddSeries (BarMin105) ; |
473 |
end ;
|
474 |
|
475 |
procedure TFResBesGestE.AffGraphMin ;
|
476 |
var
|
477 |
i, j : integer ; |
478 |
|
479 |
// Ordonn?e
|
480 |
function MinY : double ;
|
481 |
var
|
482 |
d : double ; |
483 |
begin
|
484 |
// Diviseur
|
485 |
case CBMin4.ItemIndex of |
486 |
1 : // Aliment |
487 |
d := FBesGestE.AppAli[j, i] ; |
488 |
else
|
489 |
d := 1 ;
|
490 |
end ;
|
491 |
case CBMin3.ItemIndex of |
492 |
0 : // Phosphore digestible |
493 |
result := FBesGestE.BesP[j, i] / d ; |
494 |
1 : // Calcium total |
495 |
result := FBesGestE.BesCa[j, i] / d ; |
496 |
else
|
497 |
result := 0 ;
|
498 |
end ;
|
499 |
end ;
|
500 |
|
501 |
// AffGraphMin
|
502 |
begin
|
503 |
ResetGraph ; |
504 |
Graph.Title.Text.Add (TSMin.Caption) ; |
505 |
Graph.Legend.Inverted := FALSE ; |
506 |
Graph.LeftAxis.Title.Caption := Format ('%s (%s)', [CBMin3.Text, CBMin4.Text]) ;
|
507 |
Graph.BottomAxis.Title.Caption := _('Litter');
|
508 |
// Affichage de la barre
|
509 |
BarMin35.Active := TRUE ; |
510 |
BarMin105.Active := TRUE ; |
511 |
BarMin35.Clear ; |
512 |
BarMin105.Clear ; |
513 |
BarMin35.MultiBar := mbSide ; |
514 |
BarMin105.MultiBar := mbSide ; |
515 |
for j := 1 to NB_CYCLES do |
516 |
begin
|
517 |
i := 35 ;
|
518 |
BarMin35.AddBar (MinY, Format ('%d', [j]), clTeeColor) ;
|
519 |
i := 105 ;
|
520 |
BarMin105.AddBar (MinY, Format ('%d', [j]), clTeeColor) ;
|
521 |
end ;
|
522 |
AjustEchelle (Graph) ; |
523 |
end ;
|
524 |
|
525 |
procedure TFResBesGestE.CBMin3Change(Sender: TObject);
|
526 |
begin
|
527 |
AffGraphMin ; |
528 |
end;
|
529 |
|
530 |
procedure TFResBesGestE.CBMin4Change(Sender: TObject);
|
531 |
begin
|
532 |
AffGraphMin ; |
533 |
end;
|
534 |
|
535 |
procedure TFResBesGestE.WMSysCommand(var Message: TWMSysCommand); |
536 |
begin
|
537 |
if Message.CmdType = SC_MINIMIZE
|
538 |
then
|
539 |
Application.Minimize |
540 |
else
|
541 |
inherited;
|
542 |
end;
|
543 |
|
544 |
end.
|