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