root / UFRationT.pas
Historique | Voir | Annoter | Télécharger (28,407 ko)
1 | 3 | avalancogn | unit UFRationT ;
|
---|---|---|---|
2 | |||
3 | interface
|
||
4 | |||
5 | uses
|
||
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
||
7 | Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, Math, PBNumEdit, PBSuperSpin, |
||
8 | TeEngine, Series, TeeProcs, Chart, JvExControls, JvComponent, JvEnterTab, |
||
9 | UVariables, gnugettext; |
||
10 | |||
11 | type
|
||
12 | TFRationT = class(TForm)
|
||
13 | GBRation: TGroupBox; |
||
14 | SBAddRation: TSpeedButton; |
||
15 | SBDelRation: TSpeedButton; |
||
16 | CBRation: TComboBox; |
||
17 | GBRule: TGroupBox; |
||
18 | LModeFin: TLabel; |
||
19 | LNo: TLabel; |
||
20 | SBAddRule: TSpeedButton; |
||
21 | SBDelRule: TSpeedButton; |
||
22 | LAli: TLabel; |
||
23 | LBRule: TListBox; |
||
24 | GBEnd: TGroupBox; |
||
25 | LUnitFin: TLabel; |
||
26 | PBValFin: TPBNumEdit; |
||
27 | GBAjust: TGroupBox; |
||
28 | LUnite: TLabel; |
||
29 | CBUnite: TComboBox; |
||
30 | PBa: TPBNumEdit; |
||
31 | PBb: TPBNumEdit; |
||
32 | La: TLabel; |
||
33 | Graph: TChart; |
||
34 | SeriesLigne: TLineSeries; |
||
35 | SBRename: TSpeedButton; |
||
36 | SBComment: TSpeedButton; |
||
37 | CBModeFin: TComboBox; |
||
38 | LType: TLabel; |
||
39 | CBType: TComboBox; |
||
40 | TC: TTabControl; |
||
41 | LMoyenne: TLabel; |
||
42 | PBMoyenne: TPBNumEdit; |
||
43 | Pa: TPanel; |
||
44 | Pc: TPanel; |
||
45 | Lc: TLabel; |
||
46 | PBc: TPBNumEdit; |
||
47 | Pb: TPanel; |
||
48 | Lb: TLabel; |
||
49 | Pd: TPanel; |
||
50 | Ld: TLabel; |
||
51 | PQuantite: TPanel; |
||
52 | LQuantite: TLabel; |
||
53 | PBQuantite: TPBNumEdit; |
||
54 | PBd: TPBSuperSpin; |
||
55 | SBSave: TSpeedButton; |
||
56 | SBPrint: TSpeedButton; |
||
57 | GBParam: TGroupBox; |
||
58 | PRation: TPanel; |
||
59 | JvEnterAsTab: TJvEnterAsTab; |
||
60 | procedure FormClose(Sender: TObject; var Action: TCloseAction); |
||
61 | procedure FormShow(Sender: TObject);
|
||
62 | procedure CBRationChange(Sender: TObject);
|
||
63 | procedure SBAddRationClick(Sender: TObject);
|
||
64 | procedure SBDelRationClick(Sender: TObject);
|
||
65 | procedure LBRuleClick(Sender: TObject);
|
||
66 | procedure LBRuleDrawItem(Control: TWinControl; Index: Integer;
|
||
67 | Rect: TRect; State: TOwnerDrawState); |
||
68 | procedure SBAddRuleClick(Sender: TObject);
|
||
69 | procedure SBDelRuleClick(Sender: TObject);
|
||
70 | procedure PBValFinChange(Sender: TObject);
|
||
71 | procedure CBUniteChange(Sender: TObject);
|
||
72 | procedure PBaChange(Sender: TObject);
|
||
73 | procedure PBbChange(Sender: TObject);
|
||
74 | procedure FormDeactivate(Sender: TObject);
|
||
75 | procedure SBRenameClick(Sender: TObject);
|
||
76 | procedure SBCommentClick(Sender: TObject);
|
||
77 | procedure CBTypeChange(Sender: TObject);
|
||
78 | procedure FormActivate(Sender: TObject);
|
||
79 | procedure TCChange(Sender: TObject);
|
||
80 | procedure PBcChange(Sender: TObject);
|
||
81 | procedure PBdChange(Sender: TObject);
|
||
82 | procedure PBQuantiteChange(Sender: TObject);
|
||
83 | procedure SBSaveClick(Sender: TObject);
|
||
84 | procedure SBPrintClick(Sender: TObject);
|
||
85 | procedure FormCreate(Sender: TObject);
|
||
86 | private
|
||
87 | { D?clarations priv?es }
|
||
88 | Update, Modified : boolean ; |
||
89 | IdxRationT, NbRule, NumRule : integer ; |
||
90 | Rule : array[1..MAX_RULE] of RecRuleRationT ; |
||
91 | procedure Save ;
|
||
92 | procedure AffGraph ;
|
||
93 | public
|
||
94 | { D?clarations publiques }
|
||
95 | function StrModeFin (etat, regle : integer) : string ; |
||
96 | function StrEquation (etat, regle : integer) : string ; |
||
97 | end;
|
||
98 | |||
99 | var
|
||
100 | FRationT: TFRationT; |
||
101 | |||
102 | implementation
|
||
103 | |||
104 | uses
|
||
105 | UStrings, UInit, UUtil, UFindRec, UEchelle, UCalcul, UFComment, UFRapRationT ; |
||
106 | |||
107 | {$R *.dfm}
|
||
108 | |||
109 | { TFRationT }
|
||
110 | |||
111 | procedure TFRationT.FormCreate(Sender: TObject);
|
||
112 | begin
|
||
113 | if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1 |
||
114 | then
|
||
115 | Font.Name := 'Arial Unicode MS';
|
||
116 | TranslateComponent(Self); |
||
117 | Constraints.MinWidth := 616 + (Width - ClientWidth);
|
||
118 | Width := Constraints.MinWidth; |
||
119 | Constraints.MinHeight := 476 + (Height - ClientHeight);
|
||
120 | Height := Constraints.MinHeight; |
||
121 | CBUnite.ItemIndex := 0;
|
||
122 | CBModeFin.ItemIndex := 0;
|
||
123 | CBType.ItemIndex := 0;
|
||
124 | end;
|
||
125 | |||
126 | procedure TFRationT.FormShow (Sender : TObject) ;
|
||
127 | begin
|
||
128 | Modified := FALSE ; |
||
129 | StringsRationT (CBRation.Items, TRUE) ; |
||
130 | SBAddRation.Enabled := IsComplete or (ListRationT.Count < 5) ; |
||
131 | SBSave.Enabled := IsComplete or IsEducation ;
|
||
132 | IdxRationT := -1 ;
|
||
133 | // CBRationChange (nil) ;
|
||
134 | end ;
|
||
135 | |||
136 | procedure TFRationT.FormClose (Sender : TObject ; var Action : TCloseAction) ; |
||
137 | begin
|
||
138 | if Modified then Save ; |
||
139 | Action := caFree ; |
||
140 | NumWinRationT := -1 ;
|
||
141 | end ;
|
||
142 | |||
143 | procedure TFRationT.FormActivate (Sender : TObject) ;
|
||
144 | begin
|
||
145 | // if IdxRationT <> -1
|
||
146 | // then
|
||
147 | // PRationT := ListRationT[IdxRationT] ;
|
||
148 | CBRationChange (nil) ;
|
||
149 | GBParam.Enabled := IsComplete or IsEducation or IsEvaluation ; |
||
150 | SBAddRule.Visible := GBParam.Enabled ; |
||
151 | SBDelRule.Visible := GBParam.Enabled ; |
||
152 | end ;
|
||
153 | |||
154 | procedure TFRationT.FormDeactivate (Sender : TObject) ;
|
||
155 | begin
|
||
156 | if Modified then Save ; |
||
157 | end ;
|
||
158 | |||
159 | procedure TFRationT.Save ;
|
||
160 | var
|
||
161 | s : string ;
|
||
162 | begin
|
||
163 | Modified := FALSE ; |
||
164 | if IsComplete or IsEducation |
||
165 | then
|
||
166 | if MessageDlg (Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes |
||
167 | then
|
||
168 | begin
|
||
169 | SaveRationT ; |
||
170 | if not RationTValid (PRationT) |
||
171 | then
|
||
172 | MessageDlg(Format (MsgInvalidData, [Caption, PRationT.Nom]), mtWarning, [mbOK], 0) ;
|
||
173 | end
|
||
174 | else
|
||
175 | begin
|
||
176 | LoadRationT ; |
||
177 | s := CBRation.Text ; |
||
178 | StringsRationT (CBRation.Items, TRUE) ; |
||
179 | if FindIdxRationT (s) = -1 |
||
180 | then
|
||
181 | begin
|
||
182 | IdxRationT := -1 ;
|
||
183 | CBRationChange (nil) ;
|
||
184 | end
|
||
185 | else
|
||
186 | CBRation.ItemIndex := CBRation.Items.IndexOf (s) ; |
||
187 | end ;
|
||
188 | end ;
|
||
189 | |||
190 | procedure TFRationT.CBRationChange (Sender : TObject) ;
|
||
191 | begin
|
||
192 | if (IdxRationT <> -1) and (CBRation.Text <> PRationT.Nom) |
||
193 | then
|
||
194 | if Modified then Save ; |
||
195 | IdxRationT := FindIdxRationT (CBRation.Text) ; |
||
196 | if IdxRationT = -1 |
||
197 | then
|
||
198 | begin
|
||
199 | CBRation.Repaint ; |
||
200 | SBDelRation.Enabled := FALSE ; |
||
201 | SBRename.Enabled := FALSE ; |
||
202 | SBComment.Enabled := FALSE ; |
||
203 | SBSave.Enabled := FALSE ; |
||
204 | SBPrint.Enabled := FALSE ; |
||
205 | TC.Visible := FALSE ; |
||
206 | end
|
||
207 | else // Affichage de l'enregistrement |
||
208 | begin
|
||
209 | SBDelRation.Enabled := TRUE ; |
||
210 | SBRename.Enabled := TRUE ; |
||
211 | SBComment.Enabled := TRUE ; |
||
212 | SBSave.Enabled := TRUE ; |
||
213 | SBPrint.Enabled := TRUE ; |
||
214 | TC.Visible := TRUE ; |
||
215 | PRationT := ListRationT[IdxRationT] ; |
||
216 | with PRationT^ do |
||
217 | CBRation.Hint := Memo ; |
||
218 | TCChange (nil) ;
|
||
219 | end ;
|
||
220 | end ;
|
||
221 | |||
222 | procedure TFRationT.SBAddRationClick (Sender : TObject) ;
|
||
223 | var
|
||
224 | i, n, q : integer ; |
||
225 | s : string ;
|
||
226 | ok : boolean ; |
||
227 | PBackup : PRecRationT ; |
||
228 | begin
|
||
229 | if Modified then Save ; |
||
230 | if IdxRationT = -1 |
||
231 | then
|
||
232 | q := mrNo |
||
233 | else
|
||
234 | q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
|
||
235 | // saisie du nouveau nom
|
||
236 | s := '' ;
|
||
237 | repeat
|
||
238 | if InputQuery (FRationT.Caption, MsgName, s)
|
||
239 | then // V?rification du nom |
||
240 | begin
|
||
241 | s := Trim (s) ; // Suppression des espaces au d?but et ? la fin
|
||
242 | if s = '' |
||
243 | then // Pas de nom |
||
244 | begin
|
||
245 | ok := FALSE ; |
||
246 | MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
|
||
247 | end
|
||
248 | else
|
||
249 | if Length (s) > 25 |
||
250 | then // Nom trop long |
||
251 | begin
|
||
252 | ok := FALSE ; |
||
253 | MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ; |
||
254 | s := Copy (s, 1, 25) ; |
||
255 | end
|
||
256 | else
|
||
257 | begin
|
||
258 | ok := TRUE ; |
||
259 | i := 0 ;
|
||
260 | while ok and (i < ListRationT.Count) do |
||
261 | begin
|
||
262 | PRationT := ListRationT[i] ; |
||
263 | if PRationT.Nom = s
|
||
264 | then // Nom d?j? utilis? |
||
265 | begin
|
||
266 | ok := FALSE ; |
||
267 | MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
|
||
268 | end
|
||
269 | else
|
||
270 | Inc (i) ; |
||
271 | end ;
|
||
272 | end ;
|
||
273 | end
|
||
274 | else // Annulation |
||
275 | begin
|
||
276 | s := '' ;
|
||
277 | if (IdxRationT <> -1) |
||
278 | then
|
||
279 | PRationT := ListRationT[IdxRationT] ; |
||
280 | ok := TRUE ; |
||
281 | end ;
|
||
282 | until ok ;
|
||
283 | if s <> '' |
||
284 | then // Cr?ation du nouvel enregistrement |
||
285 | begin
|
||
286 | // recherche du premier num?ro libre
|
||
287 | n := 0 ;
|
||
288 | repeat
|
||
289 | Inc (n) ; |
||
290 | ok := TRUE ; |
||
291 | i := 0 ;
|
||
292 | while ok and (i < ListRationT.Count) do |
||
293 | begin
|
||
294 | PRationT := ListRationT[i] ; |
||
295 | if PRationT.Num = n
|
||
296 | then
|
||
297 | ok := FALSE |
||
298 | else
|
||
299 | Inc (i) ; |
||
300 | end ;
|
||
301 | until ok ;
|
||
302 | New (PRationT) ; |
||
303 | with PRationT^ do |
||
304 | begin
|
||
305 | Nom := s ; |
||
306 | Num := n ; |
||
307 | if q = mrYes
|
||
308 | then
|
||
309 | begin
|
||
310 | PBackup := ListRationT[IdxRationT] ; |
||
311 | Memo := PBackup.Memo ; |
||
312 | NbRuleGest := PBackup.NbRuleGest ; |
||
313 | RuleGest := PBackup.RuleGest ; |
||
314 | UniteGest := PBackup.UniteGest ; |
||
315 | NbRuleLact := PBackup.NbRuleLact ; |
||
316 | RuleLact := PBackup.RuleLact ; |
||
317 | UniteLact := PBackup.UniteLact ; |
||
318 | NbRuleISSF := PBackup.NbRuleISSF ; |
||
319 | RuleISSF := PBackup.RuleISSF ; |
||
320 | UniteISSF := PBackup.UniteISSF ; |
||
321 | end
|
||
322 | else
|
||
323 | begin
|
||
324 | Memo := '' ;
|
||
325 | NbRuleGest := 1 ;
|
||
326 | for i := 1 to MAX_RULE do |
||
327 | with RuleGest[i] do |
||
328 | begin
|
||
329 | ModeFin := -1 ;
|
||
330 | ValFin := 0 ;
|
||
331 | Equation := 0 ;
|
||
332 | a := 0 ;
|
||
333 | b := 0 ;
|
||
334 | c := 0 ;
|
||
335 | d := 0 ;
|
||
336 | end ;
|
||
337 | UniteGest := 0 ;
|
||
338 | NbRuleLact := 1 ;
|
||
339 | for i := 1 to MAX_RULE do |
||
340 | with RuleLact[i] do |
||
341 | begin
|
||
342 | ModeFin := -1 ;
|
||
343 | ValFin := 0 ;
|
||
344 | Equation := 0 ;
|
||
345 | a := 0 ;
|
||
346 | b := 0 ;
|
||
347 | c := 0 ;
|
||
348 | d := 28 ;
|
||
349 | end ;
|
||
350 | UniteLact := 0 ;
|
||
351 | NbRuleISSF := 1 ;
|
||
352 | for i := 1 to MAX_RULE do |
||
353 | with RuleISSF[i] do |
||
354 | begin
|
||
355 | ModeFin := -1 ;
|
||
356 | ValFin := 0 ;
|
||
357 | Equation := 0 ;
|
||
358 | a := 0 ;
|
||
359 | b := 0 ;
|
||
360 | c := 0 ;
|
||
361 | d := 0 ;
|
||
362 | end ;
|
||
363 | UniteISSF := 0 ;
|
||
364 | end ;
|
||
365 | end ;
|
||
366 | ListRationT.Add (PRationT) ; |
||
367 | CBRation.Items.Add (PRationT.Nom) ; |
||
368 | CBRation.ItemIndex := CBRation.Items.IndexOf (PRationT.Nom) ; |
||
369 | CBRationChange (nil) ;
|
||
370 | Modified := TRUE ; |
||
371 | SBAddRation.Enabled := IsComplete or (ListRationT.Count < 5) ; |
||
372 | SBCommentClick (nil) ;
|
||
373 | end ;
|
||
374 | end;
|
||
375 | |||
376 | procedure TFRationT.SBDelRationClick (Sender : TObject) ;
|
||
377 | var
|
||
378 | i, j : integer ; |
||
379 | begin
|
||
380 | if RationTUsed (PRationT.Num)
|
||
381 | then // Enregistrement utilis? |
||
382 | MessageDlg (MsgDelErr, mtWarning, [mbOk], 0)
|
||
383 | else // Suppression de l'enregistrement |
||
384 | if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes |
||
385 | then
|
||
386 | begin
|
||
387 | // Mise ? jour du 30/11/2006
|
||
388 | // Suppression des r?f?rences masqu?es dans des simulations
|
||
389 | if ListSimulT.Count > 0 |
||
390 | then
|
||
391 | for i := 0 to ListSimulT.Count - 1 do |
||
392 | begin
|
||
393 | PSimulT := ListSimulT[i] ; |
||
394 | for j := 1 to NB_CYCLES do |
||
395 | if PSimulT.Ration[j] = PRationT.Num
|
||
396 | then
|
||
397 | PSimulT.Ration[j] := -1 ;
|
||
398 | end ;
|
||
399 | SaveSimulT ; // Sauvegarde !
|
||
400 | // Fin de mise ? jour
|
||
401 | Dispose (PRationT) ; |
||
402 | ListRationT.Delete (IdxRationT) ; |
||
403 | SaveRationT ; // Sauvegarde !
|
||
404 | Modified := FALSE ; |
||
405 | CBRation.DeleteSelected ; |
||
406 | IdxRationT := -1 ;
|
||
407 | CBRation.ItemIndex := -1 ;
|
||
408 | CBRationChange (nil) ;
|
||
409 | SBAddRation.Enabled := IsComplete or (ListRationT.Count < 5) ; |
||
410 | end ;
|
||
411 | end ;
|
||
412 | |||
413 | procedure TFRationT.SBRenameClick (Sender : TObject) ;
|
||
414 | var
|
||
415 | i : integer ; |
||
416 | s : string ;
|
||
417 | ok : boolean ; |
||
418 | begin
|
||
419 | // Saisie du nouveau nom
|
||
420 | s := CBRation.Text ; |
||
421 | repeat
|
||
422 | if InputQuery (FRationT.Caption, MsgRename, s) and (s <> CBRation.Text) |
||
423 | then // V?rification du nom |
||
424 | begin
|
||
425 | s := Trim (s) ; // Suppression des espaces au d?but et ? la fin
|
||
426 | if s = '' |
||
427 | then // Pas de nom |
||
428 | begin
|
||
429 | ok := FALSE ; |
||
430 | MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
|
||
431 | end
|
||
432 | else
|
||
433 | if Length (s) > 25 |
||
434 | then // Nom trop long |
||
435 | begin
|
||
436 | ok := FALSE ; |
||
437 | MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ; |
||
438 | s := Copy (s, 1, 25) ; |
||
439 | end
|
||
440 | else
|
||
441 | begin
|
||
442 | ok := TRUE ; |
||
443 | i := 0 ;
|
||
444 | while ok and (i < ListRationT.Count) do |
||
445 | begin
|
||
446 | PRationT := ListRationT[i] ; |
||
447 | if PRationT.Nom = s
|
||
448 | then // Nom d?j? utilis? |
||
449 | begin
|
||
450 | ok := FALSE ; |
||
451 | MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
|
||
452 | end
|
||
453 | else
|
||
454 | Inc (i) ; |
||
455 | end ;
|
||
456 | end ;
|
||
457 | end
|
||
458 | else // Annulation |
||
459 | begin
|
||
460 | s := '' ;
|
||
461 | ok := TRUE ; |
||
462 | end ;
|
||
463 | until ok ;
|
||
464 | PRationT := ListRationT[IdxRationT] ; |
||
465 | if s <> '' |
||
466 | then // Renommer l'enregistrement |
||
467 | begin
|
||
468 | PRationT.Nom := s ; |
||
469 | Modified := TRUE ; |
||
470 | StringsRationT (CBRation.Items, TRUE) ; |
||
471 | CBRation.ItemIndex := CBRation.Items.IndexOf (s) ; |
||
472 | end ;
|
||
473 | end ;
|
||
474 | |||
475 | procedure TFRationT.SBCommentClick (Sender : TObject) ;
|
||
476 | begin
|
||
477 | // Saisie du commentaire
|
||
478 | FComment := TFComment.Create (Self) ; |
||
479 | with FComment do |
||
480 | begin
|
||
481 | Memo.Text := PRationT.Memo ; |
||
482 | if ShowModal = mrOk
|
||
483 | then // Commenter l'enregistrement |
||
484 | begin
|
||
485 | PRationT.Memo := Memo.Text ; |
||
486 | Modified := TRUE ; |
||
487 | CBRation.Hint := PRationT.Memo ; |
||
488 | end ;
|
||
489 | Release ; |
||
490 | end ;
|
||
491 | end ;
|
||
492 | |||
493 | procedure TFRationT.SBSaveClick(Sender: TObject);
|
||
494 | begin
|
||
495 | SaveRationT ; |
||
496 | if not RationTValid (PRationT) |
||
497 | then
|
||
498 | MessageDlg(Format (MsgInvalidData, [Caption, PRationT.Nom]), mtWarning, [mbOK], 0) ;
|
||
499 | Modified := FALSE ; |
||
500 | end;
|
||
501 | |||
502 | procedure TFRationT.SBPrintClick(Sender: TObject);
|
||
503 | begin
|
||
504 | FRapRationT := TFRapRationT.Create (Self) ; |
||
505 | FRapRationT.QRRapport.PreviewModal ; |
||
506 | FRapRationT.Release ; |
||
507 | end;
|
||
508 | |||
509 | procedure TFRationT.TCChange (Sender : TObject) ;
|
||
510 | var
|
||
511 | i : integer ; |
||
512 | begin
|
||
513 | case TC.TabIndex of |
||
514 | 0 : // Gestation |
||
515 | with PRationT^ do |
||
516 | begin
|
||
517 | NbRule := NbRuleGest ; |
||
518 | for i := 1 to MAX_RULE do |
||
519 | Rule[i] := RuleGest[i] ; |
||
520 | CBUnite.ItemIndex := UniteGest ; |
||
521 | end ;
|
||
522 | 1 : // Lactation |
||
523 | with PRationT^ do |
||
524 | begin
|
||
525 | NbRule := NbRuleLact ; |
||
526 | for i := 1 to MAX_RULE do |
||
527 | Rule[i] := RuleLact[i] ; |
||
528 | CBUnite.ItemIndex := UniteLact ; |
||
529 | end ;
|
||
530 | 2 : // I.S.S.F. |
||
531 | with PRationT^ do |
||
532 | begin
|
||
533 | NbRule := NbRuleISSF ; |
||
534 | for i := 1 to MAX_RULE do |
||
535 | Rule[i] := RuleISSF[i] ; |
||
536 | CBUnite.ItemIndex := UniteISSF ; |
||
537 | end ;
|
||
538 | end ;
|
||
539 | LBRule.Clear ; |
||
540 | with PRationT^ do |
||
541 | for i := 1 to NbRule do |
||
542 | LBRule.Items.Add ('') ;
|
||
543 | LBRule.ItemIndex := 0 ;
|
||
544 | LBRuleClick (nil) ;
|
||
545 | if TC.TabIndex = 1 |
||
546 | then // Lactation |
||
547 | CBType.Enabled := TRUE |
||
548 | else
|
||
549 | CBType.Enabled := FALSE ; |
||
550 | AffGraph ; |
||
551 | end ;
|
||
552 | |||
553 | procedure TFRationT.LBRuleClick (Sender : TObject) ;
|
||
554 | begin
|
||
555 | NumRule := LBRule.ItemIndex + 1 ;
|
||
556 | if LBRule.Items.Count < MAX_RULE
|
||
557 | then
|
||
558 | SBAddRule.Enabled := TRUE |
||
559 | else
|
||
560 | SBAddRule.Enabled := FALSE ; |
||
561 | if NumRule = NbRule
|
||
562 | then // Fin |
||
563 | SBDelRule.Enabled := FALSE |
||
564 | else
|
||
565 | SBDelRule.Enabled := TRUE ; |
||
566 | GBEnd.Visible := SBDelRule.Enabled ; |
||
567 | with Rule[NumRule] do |
||
568 | begin
|
||
569 | Update := TRUE ; |
||
570 | PBValFin.AsInteger := ValFin ; |
||
571 | CBType.ItemIndex := Equation ; |
||
572 | CBTypeChange (nil) ;
|
||
573 | PBQuantite.AsFloat := a ; |
||
574 | PBa.AsFloat := a ; |
||
575 | PBb.AsFloat := b ; |
||
576 | PBc.AsFloat := c ; |
||
577 | PBd.AsInteger := d ; |
||
578 | Update := FALSE ; |
||
579 | end ;
|
||
580 | end ;
|
||
581 | |||
582 | procedure TFRationT.LBRuleDrawItem(Control: TWinControl; Index: Integer;
|
||
583 | Rect: TRect; State: TOwnerDrawState); |
||
584 | begin
|
||
585 | with (Control as TListBox).Canvas do |
||
586 | begin
|
||
587 | // Cadre principal
|
||
588 | FillRect(Rect); |
||
589 | // Texte
|
||
590 | SetTextAlign(Handle, TA_LEFT); |
||
591 | Rect.Left := 22;
|
||
592 | TextRect(Rect, Rect.Left, Rect.Top, StrModeFin(TC.TabIndex, Index + 1));
|
||
593 | Rect.Left := 150;
|
||
594 | TextRect(Rect, Rect.Left, Rect.Top, StrEquation(TC.TabIndex, Index + 1));
|
||
595 | Rect.Left := 0;
|
||
596 | // Num?ro
|
||
597 | SetTextAlign(Handle, TA_RIGHT); |
||
598 | Rect.Right := 14;
|
||
599 | TextRect(Rect, Rect.Right, Rect.Top, Format('%d', [Index + 1])); |
||
600 | end;
|
||
601 | end;
|
||
602 | |||
603 | procedure TFRationT.SBAddRuleClick (Sender : TObject) ;
|
||
604 | var
|
||
605 | i : integer ; |
||
606 | begin
|
||
607 | for i := NbRule downto NumRule do |
||
608 | Rule[i + 1] := Rule[i] ;
|
||
609 | with Rule[NumRule] do |
||
610 | begin
|
||
611 | ModeFin := 0 ;
|
||
612 | ValFin := 0 ;
|
||
613 | end ;
|
||
614 | Inc (NbRule) ; |
||
615 | case TC.TabIndex of |
||
616 | 0 : // Gestation |
||
617 | with PRationT^ do |
||
618 | begin
|
||
619 | NbRuleGest := NbRule ; |
||
620 | for i := 1 to MAX_RULE do |
||
621 | RuleGest[i] := Rule[i] ; |
||
622 | end ;
|
||
623 | 1 : // Lactation |
||
624 | with PRationT^ do |
||
625 | begin
|
||
626 | NbRuleLact := NbRule ; |
||
627 | for i := 1 to MAX_RULE do |
||
628 | RuleLact[i] := Rule[i] ; |
||
629 | end ;
|
||
630 | 2 : // I.S.S.F. |
||
631 | with PRationT^ do |
||
632 | begin
|
||
633 | NbRuleISSF := NbRule ; |
||
634 | for i := 1 to MAX_RULE do |
||
635 | RuleISSF[i] := Rule[i] ; |
||
636 | end ;
|
||
637 | end ;
|
||
638 | LBRule.Items.Add ('') ;
|
||
639 | LBRule.ItemIndex := NumRule - 1 ;
|
||
640 | LBRuleClick (nil) ;
|
||
641 | Modified := TRUE ; |
||
642 | ActiveControl := PBValFin ; |
||
643 | end ;
|
||
644 | |||
645 | procedure TFRationT.SBDelRuleClick (Sender : TObject) ;
|
||
646 | var
|
||
647 | i : integer ; |
||
648 | begin
|
||
649 | NbRule := NbRule - 1 ;
|
||
650 | for i := NumRule to NbRule do |
||
651 | Rule[i] := Rule[i + 1] ;
|
||
652 | case TC.TabIndex of |
||
653 | 0 : // Gestation |
||
654 | with PRationT^ do |
||
655 | begin
|
||
656 | NbRuleGest := NbRule ; |
||
657 | for i := 1 to MAX_RULE do |
||
658 | RuleGest[i] := Rule[i] ; |
||
659 | end ;
|
||
660 | 1 : // Lactation |
||
661 | with PRationT^ do |
||
662 | begin
|
||
663 | NbRuleLact := NbRule ; |
||
664 | for i := 1 to MAX_RULE do |
||
665 | RuleLact[i] := Rule[i] ; |
||
666 | end ;
|
||
667 | 2 : // I.S.S.F. |
||
668 | with PRationT^ do |
||
669 | begin
|
||
670 | NbRuleISSF := NbRule ; |
||
671 | for i := 1 to MAX_RULE do |
||
672 | RuleISSF[i] := Rule[i] ; |
||
673 | end ;
|
||
674 | end ;
|
||
675 | i := NumRule ; // Position courante
|
||
676 | LBRule.DeleteSelected ; |
||
677 | LBRule.ItemIndex := i - 1 ;
|
||
678 | LBRuleClick (nil) ;
|
||
679 | ActiveControl := LBRule ; |
||
680 | Modified := TRUE ; |
||
681 | AffGraph ; |
||
682 | end ;
|
||
683 | |||
684 | procedure TFRationT.CBUniteChange (Sender : TObject) ;
|
||
685 | begin
|
||
686 | if not Update |
||
687 | then
|
||
688 | begin
|
||
689 | Modified := TRUE ; |
||
690 | case TC.TabIndex of |
||
691 | 0 : // Gestation |
||
692 | with PRationT^ do |
||
693 | UniteGest := CBUnite.ItemIndex ; |
||
694 | 1 : // Lactation |
||
695 | with PRationT^ do |
||
696 | UniteLact := CBUnite.ItemIndex ; |
||
697 | 2 : // I.S.S.F. |
||
698 | with PRationT^ do |
||
699 | UniteISSF := CBUnite.ItemIndex ; |
||
700 | end ;
|
||
701 | LBRule.Repaint ; |
||
702 | AffGraph ; |
||
703 | end ;
|
||
704 | end ;
|
||
705 | |||
706 | procedure TFRationT.PBValFinChange (Sender : TObject) ;
|
||
707 | begin
|
||
708 | if not Update |
||
709 | then
|
||
710 | begin
|
||
711 | Modified := TRUE ; |
||
712 | Rule[NumRule].ValFin := PBValFin.AsInteger ; |
||
713 | case TC.TabIndex of |
||
714 | 0 : // Gestation |
||
715 | with PRationT^ do |
||
716 | begin
|
||
717 | NbRuleGest := NbRule ; |
||
718 | RuleGest[NumRule] := Rule[NumRule] ; |
||
719 | end ;
|
||
720 | 1 : // Lactation |
||
721 | with PRationT^ do |
||
722 | begin
|
||
723 | NbRuleLact := NbRule ; |
||
724 | RuleLact[NumRule] := Rule[NumRule] ; |
||
725 | end ;
|
||
726 | 2 : // I.S.S.F. |
||
727 | with PRationT^ do |
||
728 | begin
|
||
729 | NbRuleISSF := NbRule ; |
||
730 | RuleISSF[NumRule] := Rule[NumRule] ; |
||
731 | end ;
|
||
732 | end ;
|
||
733 | LBRule.Repaint ; |
||
734 | AffGraph ; |
||
735 | end ;
|
||
736 | end ;
|
||
737 | |||
738 | procedure TFRationT.CBTypeChange (Sender : TObject) ;
|
||
739 | begin
|
||
740 | case CBType.ItemIndex of |
||
741 | 0 : // Constant |
||
742 | begin
|
||
743 | PQuantite.Visible := TRUE ; |
||
744 | Pa.Visible := FALSE ; |
||
745 | Pb.Visible := FALSE ; |
||
746 | Pc.Visible := FALSE ; |
||
747 | Pd.Visible := FALSE ; |
||
748 | end ;
|
||
749 | 1 : // Lin?aire |
||
750 | begin
|
||
751 | PQuantite.Visible := FALSE ; |
||
752 | Pa.Visible := TRUE ; |
||
753 | Pb.Visible := TRUE ; |
||
754 | Pc.Visible := FALSE ; |
||
755 | Pd.Visible := FALSE ; |
||
756 | end ;
|
||
757 | 2 : // Lin?aire-plateau |
||
758 | begin
|
||
759 | PQuantite.Visible := FALSE ; |
||
760 | Pa.Visible := TRUE ; |
||
761 | Pb.Visible := TRUE ; |
||
762 | Pc.Visible := TRUE ; |
||
763 | Pd.Visible := TRUE ; |
||
764 | end ;
|
||
765 | 3 : // Curvilin?aire |
||
766 | begin
|
||
767 | PQuantite.Visible := FALSE ; |
||
768 | Pa.Visible := TRUE ; |
||
769 | Pb.Visible := FALSE ; |
||
770 | Pc.Visible := TRUE ; |
||
771 | Pd.Visible := TRUE ; |
||
772 | end ;
|
||
773 | end ;
|
||
774 | if not Update |
||
775 | then
|
||
776 | begin
|
||
777 | Modified := TRUE ; |
||
778 | with Rule[NumRule] do |
||
779 | Equation := CBType.ItemIndex ; |
||
780 | case TC.TabIndex of |
||
781 | 0 : // Gestation |
||
782 | with PRationT^ do |
||
783 | begin
|
||
784 | NbRuleGest := NbRule ; |
||
785 | RuleGest[NumRule] := Rule[NumRule] ; |
||
786 | end ;
|
||
787 | 1 : // Lactation |
||
788 | with PRationT^ do |
||
789 | begin
|
||
790 | NbRuleLact := NbRule ; |
||
791 | RuleLact[NumRule] := Rule[NumRule] ; |
||
792 | end ;
|
||
793 | 2 : // I.S.S.F. |
||
794 | with PRationT^ do |
||
795 | begin
|
||
796 | NbRuleISSF := NbRule ; |
||
797 | RuleISSF[NumRule] := Rule[NumRule] ; |
||
798 | end ;
|
||
799 | end ;
|
||
800 | LBRule.Repaint ; |
||
801 | AffGraph ; |
||
802 | end ;
|
||
803 | end ;
|
||
804 | |||
805 | procedure TFRationT.PBQuantiteChange (Sender : TObject) ;
|
||
806 | begin
|
||
807 | if not Update |
||
808 | then
|
||
809 | begin
|
||
810 | Modified := TRUE ; |
||
811 | Rule[NumRule].a := PBQuantite.AsFloat ; |
||
812 | PBa.AsFloat := Rule[NumRule].a ; |
||
813 | case TC.TabIndex of |
||
814 | 0 : // Gestation |
||
815 | with PRationT^ do |
||
816 | begin
|
||
817 | NbRuleGest := NbRule ; |
||
818 | RuleGest[NumRule] := Rule[NumRule] ; |
||
819 | end ;
|
||
820 | 1 : // Lactation |
||
821 | with PRationT^ do |
||
822 | begin
|
||
823 | NbRuleLact := NbRule ; |
||
824 | RuleLact[NumRule] := Rule[NumRule] ; |
||
825 | end ;
|
||
826 | 2 : // I.S.S.F. |
||
827 | with PRationT^ do |
||
828 | begin
|
||
829 | NbRuleISSF := NbRule ; |
||
830 | RuleISSF[NumRule] := Rule[NumRule] ; |
||
831 | end ;
|
||
832 | end ;
|
||
833 | LBRule.Repaint ; |
||
834 | AffGraph ; |
||
835 | end ;
|
||
836 | end ;
|
||
837 | |||
838 | procedure TFRationT.PBaChange (Sender : TObject) ;
|
||
839 | begin
|
||
840 | if not Update |
||
841 | then
|
||
842 | begin
|
||
843 | Modified := TRUE ; |
||
844 | Rule[NumRule].a := PBa.AsFloat ; |
||
845 | PBQuantite.AsFloat := Rule[NumRule].a ; |
||
846 | case TC.TabIndex of |
||
847 | 0 : // Gestation |
||
848 | with PRationT^ do |
||
849 | begin
|
||
850 | NbRuleGest := NbRule ; |
||
851 | RuleGest[NumRule] := Rule[NumRule] ; |
||
852 | end ;
|
||
853 | 1 : // Lactation |
||
854 | with PRationT^ do |
||
855 | begin
|
||
856 | NbRuleLact := NbRule ; |
||
857 | RuleLact[NumRule] := Rule[NumRule] ; |
||
858 | end ;
|
||
859 | 2 : // I.S.S.F. |
||
860 | with PRationT^ do |
||
861 | begin
|
||
862 | NbRuleISSF := NbRule ; |
||
863 | RuleISSF[NumRule] := Rule[NumRule] ; |
||
864 | end ;
|
||
865 | end ;
|
||
866 | LBRule.Repaint ; |
||
867 | AffGraph ; |
||
868 | end ;
|
||
869 | end ;
|
||
870 | |||
871 | procedure TFRationT.PBbChange (Sender : TObject) ;
|
||
872 | begin
|
||
873 | if not Update |
||
874 | then
|
||
875 | begin
|
||
876 | Modified := TRUE ; |
||
877 | Rule[NumRule].b := PBb.AsFloat ; |
||
878 | case TC.TabIndex of |
||
879 | 0 : // Gestation |
||
880 | with PRationT^ do |
||
881 | begin
|
||
882 | NbRuleGest := NbRule ; |
||
883 | RuleGest[NumRule] := Rule[NumRule] ; |
||
884 | end ;
|
||
885 | 1 : // Lactation |
||
886 | with PRationT^ do |
||
887 | begin
|
||
888 | NbRuleLact := NbRule ; |
||
889 | RuleLact[NumRule] := Rule[NumRule] ; |
||
890 | end ;
|
||
891 | 2 : // I.S.S.F. |
||
892 | with PRationT^ do |
||
893 | begin
|
||
894 | NbRuleISSF := NbRule ; |
||
895 | RuleISSF[NumRule] := Rule[NumRule] ; |
||
896 | end ;
|
||
897 | end ;
|
||
898 | LBRule.Repaint ; |
||
899 | AffGraph ; |
||
900 | end ;
|
||
901 | end ;
|
||
902 | |||
903 | procedure TFRationT.PBcChange (Sender : TObject) ;
|
||
904 | begin
|
||
905 | if not Update |
||
906 | then
|
||
907 | begin
|
||
908 | Modified := TRUE ; |
||
909 | Rule[NumRule].c := PBc.AsFloat ; |
||
910 | case TC.TabIndex of |
||
911 | 0 : // Gestation |
||
912 | with PRationT^ do |
||
913 | begin
|
||
914 | NbRuleGest := NbRule ; |
||
915 | RuleGest[NumRule] := Rule[NumRule] ; |
||
916 | end ;
|
||
917 | 1 : // Lactation |
||
918 | with PRationT^ do |
||
919 | begin
|
||
920 | NbRuleLact := NbRule ; |
||
921 | RuleLact[NumRule] := Rule[NumRule] ; |
||
922 | end ;
|
||
923 | 2 : // I.S.S.F. |
||
924 | with PRationT^ do |
||
925 | begin
|
||
926 | NbRuleISSF := NbRule ; |
||
927 | RuleISSF[NumRule] := Rule[NumRule] ; |
||
928 | end ;
|
||
929 | end ;
|
||
930 | LBRule.Repaint ; |
||
931 | AffGraph ; |
||
932 | end ;
|
||
933 | end ;
|
||
934 | |||
935 | procedure TFRationT.PBdChange (Sender : TObject) ;
|
||
936 | begin
|
||
937 | if not Update |
||
938 | then
|
||
939 | begin
|
||
940 | Modified := TRUE ; |
||
941 | Rule[NumRule].d := PBd.AsInteger ; |
||
942 | case TC.TabIndex of |
||
943 | 0 : // Gestation |
||
944 | with PRationT^ do |
||
945 | begin
|
||
946 | NbRuleGest := NbRule ; |
||
947 | RuleGest[NumRule] := Rule[NumRule] ; |
||
948 | end ;
|
||
949 | 1 : // Lactation |
||
950 | with PRationT^ do |
||
951 | begin
|
||
952 | NbRuleLact := NbRule ; |
||
953 | RuleLact[NumRule] := Rule[NumRule] ; |
||
954 | end ;
|
||
955 | 2 : // I.S.S.F. |
||
956 | with PRationT^ do |
||
957 | begin
|
||
958 | NbRuleISSF := NbRule ; |
||
959 | RuleISSF[NumRule] := Rule[NumRule] ; |
||
960 | end ;
|
||
961 | end ;
|
||
962 | LBRule.Repaint ; |
||
963 | AffGraph ; |
||
964 | end ;
|
||
965 | end ;
|
||
966 | |||
967 | function TFRationT.StrModeFin (etat, regle : integer) : string ; |
||
968 | var
|
||
969 | Nb : integer ; |
||
970 | Rec : RecRuleRationT ; |
||
971 | begin
|
||
972 | case etat of |
||
973 | 0 : // Gestation |
||
974 | Nb := PRationT.NbRuleGest ; |
||
975 | 1 : // Lactation |
||
976 | Nb := PRationT.NbRuleLact ; |
||
977 | else // I.S.S.F. |
||
978 | Nb := PRationT.NbRuleISSF ; |
||
979 | end ;
|
||
980 | if regle = Nb
|
||
981 | then // Fin |
||
982 | case etat of |
||
983 | 0 : // Gestation |
||
984 | result := StrMiseBas ; |
||
985 | 1 : // Lactation |
||
986 | result := StrSevrage ; |
||
987 | 2 : // I.S.S.F. |
||
988 | result := StrSaillie ; |
||
989 | end
|
||
990 | else
|
||
991 | begin
|
||
992 | case etat of |
||
993 | 0 : // Gestation |
||
994 | Rec := PRationT.RuleGest[regle] ; |
||
995 | 1 : // Lactation |
||
996 | Rec := PRationT.RuleLact[regle] ; |
||
997 | 2 : // I.S.S.F. |
||
998 | Rec := PRationT.RuleISSF[regle] ; |
||
999 | end ;
|
||
1000 | with Rec do |
||
1001 | case ModeFin of |
||
1002 | 0 : // Dur?e |
||
1003 | result := Format ('%s = %d %s', [CBModeFin.Items[ModeFin], ValFin, StrJ]) ;
|
||
1004 | else
|
||
1005 | result := '' ;
|
||
1006 | end ;
|
||
1007 | end ;
|
||
1008 | end ;
|
||
1009 | |||
1010 | function TFRationT.StrEquation (etat, regle : integer) : string ; |
||
1011 | var
|
||
1012 | Rec : RecRuleRationT ; |
||
1013 | begin
|
||
1014 | case etat of |
||
1015 | 0 : // Gestation |
||
1016 | Rec := PRationT.RuleGest[regle] ; |
||
1017 | 1 : // Lactation |
||
1018 | Rec := PRationT.RuleLact[regle] ; |
||
1019 | 2 : // I.S.S.F. |
||
1020 | Rec := PRationT.RuleISSF[regle] ; |
||
1021 | end ;
|
||
1022 | with Rec do |
||
1023 | case Equation of |
||
1024 | 0 : // Constant (a) |
||
1025 | result := Format ('%s=%s', [CBUnite.Text, DblToStr (a, PBa.Decimals)]) ;
|
||
1026 | 1 : // Lin?aire (a+b*jour) |
||
1027 | result := Format ('%s=%s+%s*%s', [CBUnite.Text, DblToStr (a, PBa.Decimals), DblToStr (b, PBb.Decimals), _('Day')]) ; |
||
1028 | else
|
||
1029 | result := Format ('%s=%s', [CBUnite.Text, CBType.Items[Equation]]) ;
|
||
1030 | end ;
|
||
1031 | end ;
|
||
1032 | |||
1033 | procedure TFRationT.AffGraph ;
|
||
1034 | var
|
||
1035 | f, i, j, k : integer ; |
||
1036 | q, t : double ; |
||
1037 | ok : boolean ; |
||
1038 | |||
1039 | function Quantite : double ;
|
||
1040 | begin
|
||
1041 | with Rule[k] do |
||
1042 | case Equation of |
||
1043 | 0 : // Constant |
||
1044 | result := a ; |
||
1045 | 1 : // Lin?aire |
||
1046 | result := a + b * (i - 1) ;
|
||
1047 | 2 : // Lin?aire-plateau |
||
1048 | result := LPvaleur (a, b, c, i, d) ; |
||
1049 | 3 : // Curvilin?aire |
||
1050 | result := CLvaleur (a, c, i, d) ; |
||
1051 | else
|
||
1052 | result := 0 ;
|
||
1053 | end ;
|
||
1054 | end ;
|
||
1055 | |||
1056 | begin
|
||
1057 | Graph.LeftAxis.Title.Caption := CBUnite.Text ; |
||
1058 | SeriesLigne.Clear ; |
||
1059 | ok := TRUE ; |
||
1060 | case TC.TabIndex of |
||
1061 | 0 : // Gestation |
||
1062 | begin
|
||
1063 | f := 114 ;
|
||
1064 | Graph.BottomAxis.Increment := 20 ;
|
||
1065 | Graph.BottomAxis.MinorTickCount := 3 ;
|
||
1066 | for k := 1 to NbRule do |
||
1067 | if Rule[k].a = 0 then ok := FALSE ; |
||
1068 | end ;
|
||
1069 | 1 : // Lactation |
||
1070 | begin
|
||
1071 | f := 28 ;
|
||
1072 | Graph.BottomAxis.Increment := 7 ;
|
||
1073 | Graph.BottomAxis.MinorTickCount := 6 ;
|
||
1074 | for k := 1 to NbRule do |
||
1075 | case Rule[k].Equation of |
||
1076 | 1 : // Lin?aire |
||
1077 | begin
|
||
1078 | if Rule[k].a = 0 then ok := FALSE ; |
||
1079 | if Rule[k].b = 0 then ok := FALSE ; |
||
1080 | end ;
|
||
1081 | 2 : // Lin?aire-plateau |
||
1082 | begin
|
||
1083 | if Rule[k].a = 0 then ok := FALSE ; |
||
1084 | if Rule[k].b = 0 then ok := FALSE ; |
||
1085 | if Rule[k].c <= Rule[k].a then ok := FALSE ; |
||
1086 | end ;
|
||
1087 | 3 : // Curvilin?aire |
||
1088 | begin
|
||
1089 | if Rule[k].a = 0 then ok := FALSE ; |
||
1090 | if Rule[k].c <= Rule[k].a then ok := FALSE ; |
||
1091 | end ;
|
||
1092 | else // Constant |
||
1093 | if Rule[k].a = 0 then ok := FALSE ; |
||
1094 | end ;
|
||
1095 | end ;
|
||
1096 | else // I.S.S.F. |
||
1097 | begin
|
||
1098 | f := 10 ;
|
||
1099 | Graph.BottomAxis.Increment := 1 ;
|
||
1100 | Graph.BottomAxis.MinorTickCount := 0 ;
|
||
1101 | for k := 1 to NbRule do |
||
1102 | if Rule[k].a = 0 then ok := FALSE ; |
||
1103 | end ;
|
||
1104 | end ;
|
||
1105 | if not ok then Exit ; |
||
1106 | t := 0 ;
|
||
1107 | j := 0 ;
|
||
1108 | for k := 1 to NbRule do |
||
1109 | with Rule[k] do |
||
1110 | begin
|
||
1111 | if (ModeFin = 0) and (ValFin > 0) |
||
1112 | then // R?gle dur?e |
||
1113 | begin
|
||
1114 | for i := j + 1 to j + ValFin do |
||
1115 | begin
|
||
1116 | q := Quantite ; |
||
1117 | SeriesLigne.AddXY (i, q) ; |
||
1118 | t := t + q ; |
||
1119 | end ;
|
||
1120 | j := j + ValFin ; |
||
1121 | end
|
||
1122 | else
|
||
1123 | if (k = NbRule) and (j < f) |
||
1124 | then // R?gle fin |
||
1125 | begin
|
||
1126 | for i := j + 1 to f do |
||
1127 | begin
|
||
1128 | q := Quantite ; |
||
1129 | SeriesLigne.AddXY (i, q) ; |
||
1130 | t := t + q ; |
||
1131 | end ;
|
||
1132 | j := f ; |
||
1133 | end ;
|
||
1134 | end ;
|
||
1135 | PBMoyenne.AsFloat := t / j ; |
||
1136 | AjustEchelle (Graph) ; |
||
1137 | end ;
|
||
1138 | |||
1139 | end. |