Statistiques
| Révision:

root / UFSimulT.pas

Historique | Voir | Annoter | Télécharger (34,376 ko)

1
unit UFSimulT ;
2

    
3
interface
4

    
5
uses
6
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7
  Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, PBNumEdit, PBSuperSpin, 
8
  JvExControls, JvComponent, JvEnterTab, UVariables, gnugettext;
9

    
10
type
11
  TFSimulT = class(TForm)
12
    PC: TPageControl;
13
    ResSimul: TTabSheet;
14
    CompSimul: TTabSheet;
15
    SensSimul: TTabSheet;
16
    GBSimul: TGroupBox;
17
    SBAddSimul: TSpeedButton;
18
    SBDelSimul: TSpeedButton;
19
    CBSimul: TComboBox;
20
    CBProfil: TComboBox;
21
    CBRation: TComboBox;
22
    CBSeqAli: TComboBox;
23
    CBCompSimul1: TCheckBox;
24
    CBCompSimul2: TCheckBox;
25
    CBCompSimul3: TCheckBox;
26
    CBCompSimul4: TCheckBox;
27
    CBCompSimul5: TCheckBox;
28
    LVariable: TLabel;
29
    LVariation: TLabel;
30
    PBVariation: TPBSuperSpin;
31
    LProfil: TLabel;
32
    LSeqAli: TLabel;
33
    LRation: TLabel;
34
    PSimul: TPanel;
35
    BBResSimul: TBitBtn;
36
    BBTabSimul: TBitBtn;
37
    SBRename: TSpeedButton;
38
    SBComment: TSpeedButton;
39
    BBRapSimul: TBitBtn;
40
    PResSimul: TPanel;
41
    CBSimulSens: TComboBox;
42
    LSimulSens: TLabel;
43
    PSensSimul: TPanel;
44
    BBSensSimul: TBitBtn;
45
    CBSimulComp1: TComboBox;
46
    CBSimulComp2: TComboBox;
47
    CBSimulComp3: TComboBox;
48
    CBSimulComp4: TComboBox;
49
    CBSimulComp5: TComboBox;
50
    PCompSimul: TPanel;
51
    BBCompSimul: TBitBtn;
52
    GBAlim: TGroupBox;
53
    GBFin: TGroupBox;
54
    GBInit: TGroupBox;
55
    PCenter: TPanel;
56
    PLeft: TPanel;
57
    GBParam: TGroupBox;
58
    LLoge: TLabel;
59
    CBLoge: TComboBox;
60
    LDureeLact: TLabel;
61
    LPorteeInit: TLabel;
62
    LPorteeFin: TLabel;
63
    CBStadeInit: TComboBox;
64
    CBStadeFin: TComboBox;
65
    LBPortee: TListBox;
66
    PBDureeLact: TPBSuperSpin;
67
    PBPorteeInit: TPBSuperSpin;
68
    PBPorteeFin: TPBSuperSpin;
69
    PAlim: TPanel;
70
    LOptInit: TLabel;
71
    CBOptInit: TComboBox;
72
    CBVariable: TComboBox;
73
    GBEtatVar: TGroupBox;
74
    LPorteeVar: TLabel;
75
    CBStadeVar: TComboBox;
76
    PBPorteeVarInit: TPBSuperSpin;
77
    PBPorteeVarFin: TPBSuperSpin;
78
    LAVar: TLabel;
79
    LStadeVar: TLabel;
80
    GBModulation: TGroupBox;
81
    SBSave: TSpeedButton;
82
    ChkSeqAli: TCheckBox;
83
    ChkRation: TCheckBox;
84
    CBRationProfil: TComboBox;
85
    JvEnterAsTab: TJvEnterAsTab;
86
    procedure FormShow(Sender: TObject);
87
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
88
    procedure CBSimulChange(Sender: TObject);
89
    procedure FormActivate(Sender: TObject);
90
    procedure FormDeactivate(Sender: TObject);
91
    procedure SBAddSimulClick(Sender: TObject);
92
    procedure SBDelSimulClick(Sender: TObject);
93
    procedure PCChange(Sender: TObject);
94
    procedure BBResSimulClick(Sender: TObject);
95
    procedure BBCompSimulClick(Sender: TObject);
96
    procedure BBSensSimulClick(Sender: TObject);
97
    procedure CBProfilChange(Sender: TObject);
98
    procedure CBRationChange(Sender: TObject);
99
    procedure CBSeqAliChange(Sender: TObject);
100
    procedure CBCompSimul1Click(Sender: TObject);
101
    procedure CBCompSimul2Click(Sender: TObject);
102
    procedure CBCompSimul3Click(Sender: TObject);
103
    procedure CBCompSimul4Click(Sender: TObject);
104
    procedure CBCompSimul5Click(Sender: TObject);
105
    procedure BBTabSimulClick(Sender: TObject);
106
    procedure SBRenameClick(Sender: TObject);
107
    procedure SBCommentClick(Sender: TObject);
108
    procedure BBRapSimulClick(Sender: TObject);
109
    procedure CBSimulSensChange(Sender: TObject);
110
    procedure CBSimulComp1Change(Sender: TObject);
111
    procedure CBSimulComp2Change(Sender: TObject);
112
    procedure CBSimulComp3Change(Sender: TObject);
113
    procedure CBSimulComp4Change(Sender: TObject);
114
    procedure CBSimulComp5Change(Sender: TObject);
115
    procedure LBPorteeDrawItem(Control: TWinControl; Index: Integer;
116
      Rect: TRect; State: TOwnerDrawState);
117
    procedure LBPorteeClick(Sender: TObject);
118
    procedure PBDureeLactChange(Sender: TObject);
119
    procedure PBPorteeInitChange(Sender: TObject);
120
    procedure PBPorteeFinChange(Sender: TObject);
121
    procedure CBStadeInitChange(Sender: TObject);
122
    procedure CBStadeFinChange(Sender: TObject);
123
    procedure CBLogeChange(Sender: TObject);
124
    procedure CBOptInitChange(Sender: TObject);
125
    procedure CBVariableChange(Sender: TObject);
126
    procedure PBPorteeVarInitChange(Sender: TObject);
127
    procedure PBPorteeVarFinChange(Sender: TObject);
128
    procedure SBSaveClick(Sender: TObject);
129
    procedure BBRapSensSimulClick(Sender: TObject);
130
    procedure BBRapCompSimulClick(Sender: TObject);
131
    procedure ChkSeqAliClick(Sender: TObject);
132
    procedure ChkRationClick(Sender: TObject);
133
    procedure FormCreate(Sender: TObject);
134
  private
135
    { D?clarations priv?es }
136
    Update, Modified, Modal: boolean;
137
    IdxSimulT: integer;
138
    procedure Save;
139
    procedure ValidBBResSimul;
140
    procedure ValidBBCompSimul;
141
    procedure ValidBBSensSimul;
142
  public
143
    { D?clarations publiques }
144
  end;
145

    
146
var
147
  FSimulT: TFSimulT;
148

    
149
implementation
150

    
151
uses
152
  UStrings, UInit, UUtil, UFindRec, UFComment, UCalcSimulT, UFResSimulT,
153
  UFRapSimulT, {UFTabSimulT,} UFCompSimulT, UFWarning;
154

    
155
{$R *.dfm}
156

    
157
{ TFSimulT }
158

    
159
procedure TFSimulT.FormCreate(Sender: TObject);
160
begin
161
  if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1
162
  then
163
    Font.Name := 'Arial Unicode MS';
164
  TranslateComponent(Self);
165
  Constraints.MinWidth := 624 + (Width - ClientWidth);
166
  Width := Constraints.MinWidth;
167
  Constraints.MinHeight := 396 + (Height - ClientHeight);
168
  Height := Constraints.MinHeight;
169
  CBOptInit.ItemIndex := 0;
170
  CBRationProfil.ItemIndex := 0;
171
  CBStadeVar.ItemIndex := 0;
172
end;
173

    
174
procedure TFSimulT.FormShow(Sender: TObject);
175
begin
176
  Modified := False;
177
  Modal := False;
178
  PC.ActivePageIndex := 0;
179
  // Simualtion simple
180
  StringsSimulT(CBSimul.Items, True);
181
  SBAddSimul.Enabled := IsComplete or (ListSimulT.Count < 5);
182
  SBSave.Enabled := IsComplete or IsEducation;
183
  // Comparaison
184
  StringsSimulT(CBSimulComp1.Items, False);
185
  StringsSimulT(CBSimulComp2.Items, False);
186
  StringsSimulT(CBSimulComp3.Items, False);
187
  StringsSimulT(CBSimulComp4.Items, False);
188
  StringsSimulT(CBSimulComp5.Items, False);
189
  // Sensibilit?
190
  StringsSimulT(CBSimulSens.Items, False);
191
  PBPorteeVarInit.AsInteger := 1;
192
  PBPorteeVarFin.AsInteger := 8;
193
  IdxSimulT := -1;
194
//  CBSimulChange(nil);
195
end;
196

    
197
procedure TFSimulT.FormClose(Sender: TObject; var Action: TCloseAction);
198
begin
199
  if Modified then Save;
200
  Action := caFree;
201
  NumWinSimulT := -1;
202
end;
203

    
204
procedure TFSimulT.FormActivate(Sender: TObject);
205
begin
206
  if not Modal
207
  then
208
  begin
209
    StringsProfilT(CBProfil.Items, False);
210
    StringsLogeT(CBLoge.Items, False);
211
    StringsSeqAliT(CBSeqAli.Items, False);
212
    StringsRationT(CBRation.Items, False);
213
    PCChange(nil);
214
    PSimul.Enabled := IsComplete or IsEducation or IsEvaluation;
215
  end;
216
end;
217

    
218
procedure TFSimulT.FormDeactivate(Sender: TObject);
219
begin
220
  if Modified and not Modal then Save;
221
end;
222

    
223
procedure TFSimulT.PCChange(Sender: TObject);
224
begin
225
//  if Modified then Save;
226
  case PC.ActivePageIndex of
227
    0: // Simulation simple
228
      CBSimulChange(nil);
229
    1: // Comparaison
230
    begin
231
      StringsSimulT(CBSimulComp1.Items, False);
232
      CBSimulComp1Change(nil);
233
      StringsSimulT(CBSimulComp2.Items, False);
234
      CBSimulComp2Change(nil);
235
      StringsSimulT(CBSimulComp3.Items, False);
236
      CBSimulComp3Change(nil);
237
      StringsSimulT(CBSimulComp4.Items, False);
238
      CBSimulComp4Change(nil);
239
      StringsSimulT(CBSimulComp5.Items, False);
240
      CBSimulComp5Change(nil);
241
    end;
242
    2: // Sensibilit?
243
    begin
244
      StringsSimulT(CBSimulSens.Items, False);
245
      CBSimulSensChange(nil);
246
    end;
247
  end;
248
end;
249

    
250
// Simulation simple
251

    
252
procedure TFSimulT.Save;
253
var
254
  s: string;
255
begin
256
  Modified := False;
257
  if IsComplete or IsEducation
258
  then
259
    if MessageDlg(Caption + sLineBreak + MsgSave, mtConfirmation, [mbYes, mbNo], 0) = mrYes
260
    then
261
    begin
262
      SaveSimulT;
263
      if not SimulTValid(PSimulT)
264
      then
265
        MessageDlg(Format(MsgInvalidData, [Caption, PSimulT.Nom]), mtWarning, [mbOK], 0);
266
      // Comparaison
267
      StringsSimulT(CBSimulComp1.Items, False);
268
      StringsSimulT(CBSimulComp2.Items, False);
269
      StringsSimulT(CBSimulComp3.Items, False);
270
      StringsSimulT(CBSimulComp4.Items, False);
271
      StringsSimulT(CBSimulComp5.Items, False);
272
      // Sensibilit?
273
      StringsSimulT(CBSimulSens.Items, False);
274
    end
275
    else
276
    begin
277
      LoadSimulT;
278
      s := CBSimul.Text;
279
      StringsSimulT(CBSimul.Items, True);
280
      if FindIdxSimulT(s) = -1
281
      then
282
      begin
283
        IdxSimulT := -1;
284
        CBSimulChange(nil);
285
      end
286
      else
287
        CBSimul.ItemIndex := CBSimul.Items.IndexOf(s);
288
    end;
289
end;
290

    
291
procedure TFSimulT.CBSimulChange(Sender: TObject);
292
begin
293
  if (IdxSimulT <> -1) and (CBSimul.Text <> PSimulT.Nom)
294
  then
295
    if Modified then Save;
296
  IdxSimulT := FindIdxSimulT (CBSimul.Text);
297
  if IdxSimulT = -1
298
  then // Pas d'enregistrement
299
  begin
300
    CBSimul.Repaint ;
301
    SBDelSimul.Enabled := FALSE ;
302
    SBRename.Enabled := FALSE ;
303
    SBComment.Enabled := FALSE ;
304
    SBSave.Enabled := FALSE ;
305
    PSimul.Visible := FALSE ;
306
    BBResSimul.Enabled := FALSE ;
307
    BBRapSimul.Enabled := FALSE ;
308
    BBTabSimul.Enabled := FALSE ;
309
  end
310
  else // Affichage de l'enregistrement
311
  begin
312
    SBDelSimul.Enabled := TRUE ;
313
    SBRename.Enabled := TRUE ;
314
    SBComment.Enabled := TRUE ;
315
    SBSave.Enabled := TRUE ;
316
    PSimul.Visible := TRUE ;
317
    PSimulT := ListSimulT[IdxSimulT] ;
318
    with PSimulT^ do
319
    begin
320
      Update := TRUE ;
321
      CBSimul.Hint := Memo ;
322
      if Profil = -1
323
      then
324
        CBProfil.ItemIndex := -1
325
      else
326
        CBProfil.ItemIndex := CBProfil.Items.IndexOf (FindNomProfilT (Profil)) ;
327
      if CBProfil.ItemIndex = -1
328
      then
329
        CBProfil.Hint := ''
330
      else
331
      begin
332
        PProfilT := ListProfilT[FindIdxProfilT (CBProfil.Text)] ;
333
        CBProfil.Hint := PProfilT.Memo ;
334
      end ;
335
      if Logement = -1
336
      then
337
        CBLoge.ItemIndex := -1
338
      else
339
        CBLoge.ItemIndex := CBLoge.Items.IndexOf (FindNomLogeT (Logement)) ;
340
      if CBLoge.ItemIndex = -1
341
      then
342
        CBLoge.Hint := ''
343
      else
344
      begin
345
        PLogeT := ListLogeT[FindIdxLogeT (CBLoge.Text)] ;
346
        CBLoge.Hint := PLogeT.Memo ;
347
      end ;
348
      PBDureeLact.AsInteger := DureeLact ;
349
      CBOptInit.ItemIndex := OptInit ;
350
      PBPorteeInit.AsInteger := StadeInit div 3 + 1 ;
351
      CBStadeInit.ItemIndex := StadeInit mod 3 ;
352
      PBPorteeFin.AsInteger := StadeFin div 3 + 1 ;
353
      CBStadeFin.ItemIndex := StadeFin mod 3 ;
354
      LBPortee.ItemIndex := -1 ;
355
      LBPorteeClick (nil) ;
356
      LBPortee.Repaint ;
357
      Update := FALSE ;
358
    end ;
359
    ValidBBResSimul;
360
  end;
361
end;
362

    
363
procedure TFSimulT.SBAddSimulClick (Sender : TObject) ;
364
var
365
  i, n, q : integer ;
366
  s : string ;
367
  ok : boolean ;
368
  PBackup : PRecSimulT ;
369
begin
370
  if Modified then Save ;
371
  if IdxSimulT = -1
372
  then
373
    q := mrNo
374
  else
375
    q := MessageDlg (MsgCopy, mtConfirmation, [mbYes, mbNo], 0) ;
376
  // saisie du nouveau nom
377
  s := '' ;
378
  repeat
379
    if InputQuery (FSimulT.Caption, MsgName, s)
380
    then // V?rification du nom
381
    begin
382
      s := Trim (s) ; // Suppression des espaces au d?but et ? la fin
383
      if s = ''
384
      then // Pas de nom
385
      begin
386
        ok := FALSE ;
387
        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
388
      end
389
      else
390
        if Length (s) > 25
391
        then // Nom trop long
392
        begin
393
          ok := FALSE ;
394
          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
395
          s := Copy (s, 1, 25) ;
396
        end
397
        else
398
        begin
399
          ok := TRUE ;
400
          i := 0 ;
401
          while ok and (i < ListSimulT.Count) do
402
          begin
403
            PSimulT := ListSimulT[i] ;
404
            if PSimulT.Nom = s
405
            then // Nom d?j? utilis?
406
            begin
407
              ok := FALSE ;
408
              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
409
            end
410
            else
411
              Inc (i) ;
412
          end ;
413
        end ;
414
    end
415
    else // Annulation
416
    begin
417
      s := '' ;
418
      if (IdxSimulT <> -1)
419
      then
420
        PSimulT := ListSimulT[IdxSimulT] ;
421
      ok := TRUE ;
422
    end ;
423
  until ok ;
424
  if s <> ''
425
  then // Cr?ation du nouvel enregistrement
426
  begin
427
    // recherche du premier num?ro libre
428
    n := 0 ;
429
    repeat
430
      Inc (n) ;
431
      ok := TRUE ;
432
      i := 0 ;
433
      while ok and (i < ListSimulT.Count) do
434
      begin
435
        PSimulT := ListSimulT[i] ;
436
        if PSimulT.Num = n
437
        then
438
          ok := FALSE
439
        else
440
          Inc (i) ;
441
      end ;
442
    until ok ;
443
    New (PSimulT) ;
444
    with PSimulT^ do
445
    begin
446
      Nom := s ;
447
      Num := n ;
448
      if q = mrYes
449
      then
450
      begin
451
        PBackup := ListSimulT[IdxSimulT] ;
452
        Memo := PBackup.Memo ;
453
        Profil := PBackup.Profil ;
454
        Logement := PBackup.Logement ;
455
        DureeLact := PBackup.DureeLact ;
456
        DureeISSF := PBackup.DureeISSF ; // DureeISSF n'est plus utilis?
457
        OptInit := PBackup.OptInit ;
458
        StadeInit := PBackup.StadeInit ;
459
        StadeFin := PBackup.StadeFin ;
460
        SeqAli := PBackup.SeqAli ;
461
        Ration := PBackup.Ration ;
462
      end
463
      else
464
      begin
465
        Memo := '' ;
466
        Profil := -1 ;
467
        Logement := -1 ;
468
        DureeLact := 28 ;
469
        DureeISSF := 5 ; // DureeISSF n'est plus utilis?
470
        OptInit := 0 ;
471
        StadeInit := 0 ;
472
        StadeFin := 2 ;
473
        for i := 1 to NB_CYCLES do
474
          SeqAli[i] := -1 ;
475
        for i := 1 to NB_CYCLES do
476
          Ration[i] := -1 ;
477
      end ;
478
    end ;
479
    ListSimulT.Add (PSimulT) ;
480
    CBSimul.Items.Add (PSimulT.Nom) ;
481
    CBSimul.ItemIndex := CBSimul.Items.IndexOf (PSimulT.Nom) ;
482
    CBSimulChange (nil) ;
483
    Modified := TRUE ;
484
    SBAddSimul.Enabled := IsComplete or (ListSimulT.Count < 5) ;
485
    SBCommentClick (nil) ;
486
  end ;
487
end ;
488

    
489
procedure TFSimulT.SBDelSimulClick (Sender : TObject) ;
490
begin
491
  if MessageDlg (MsgDel, mtConfirmation, [mbYes, mbNo], 0) = mrYes
492
  then
493
  begin
494
    Dispose (PSimulT) ;
495
    ListSimulT.Delete (IdxSimulT) ;
496
    SaveSimulT ; // Sauvegarde !
497
    Modified := FALSE ;
498
    CBSimul.DeleteSelected ;
499
    IdxSimulT := -1 ;
500
    CBSimul.ItemIndex := -1 ;
501
    CBSimulChange (nil) ;
502
    SBAddSimul.Enabled := IsComplete or (ListSimulT.Count < 5) ;
503
  end ;
504
end ;
505

    
506
procedure TFSimulT.SBRenameClick (Sender : TObject) ;
507
var
508
  i : integer ;
509
  s : string ;
510
  ok : boolean ;
511
begin
512
  // Saisie du nouveau nom
513
  s := CBSimul.Text ;
514
  repeat
515
    if InputQuery (FSimulT.Caption, MsgRename, s) and (s <> CBSimul.Text)
516
    then // V?rification du nom
517
    begin
518
      s := Trim (s) ; // Suppression des espaces au d?but et ? la fin
519
      if s = ''
520
      then // Pas de nom
521
      begin
522
        ok := FALSE ;
523
        MessageDlg (MsgNameEmpty, mtWarning, [mbOk], 0) ;
524
      end
525
      else
526
        if Length (s) > 25
527
        then // Nom trop long
528
        begin
529
          ok := FALSE ;
530
          MessageDlg (Format (MsgNameTooLarge, [25]), mtWarning, [mbOk], 0) ;
531
          s := Copy (s, 1, 25) ;
532
        end
533
        else
534
        begin
535
          ok := TRUE ;
536
          i := 0 ;
537
          while ok and (i < ListSimulT.Count) do
538
          begin
539
            PSimulT := ListSimulT[i] ;
540
            if PSimulT.Nom = s
541
            then // Nom d?j? utilis?
542
            begin
543
              ok := FALSE ;
544
              MessageDlg (MsgNameExists, mtWarning, [mbOk], 0) ;
545
            end
546
            else
547
              Inc (i) ;
548
          end ;
549
        end ;
550
    end
551
    else // Annulation
552
    begin
553
      s := '' ;
554
      ok := TRUE ;
555
    end ;
556
  until ok ;
557
  PSimulT := ListSimulT[IdxSimulT] ;
558
  if s <> ''
559
  then // Renommer l'enregistrement
560
  begin
561
    PSimulT.Nom := s ;
562
    Modified := TRUE ;
563
    StringsSimulT (CBSimul.Items, TRUE) ;
564
    CBSimul.ItemIndex := CBSimul.Items.IndexOf (s) ;
565
  end ;
566
end ;
567

    
568
procedure TFSimulT.SBCommentClick (Sender : TObject) ;
569
begin
570
  // Saisie du commentaire
571
  FComment := TFComment.Create (Self) ;
572
  with FComment do
573
  begin
574
    Memo.Text := PSimulT.Memo ;
575
    if ShowModal = mrOk
576
    then // Commenter l'enregistrement
577
    begin
578
      PSimulT.Memo := Memo.Text ;
579
      Modified := TRUE ;
580
      CBSimul.Hint := PSimulT.Memo ;
581
    end ;
582
    Release ;
583
  end ;
584
end ;
585

    
586
procedure TFSimulT.SBSaveClick(Sender: TObject);
587
begin
588
  SaveSimulT ;
589
  if not SimulTValid (PSimulT)
590
  then
591
    MessageDlg(Format (MsgInvalidData, [Caption, PSimulT.Nom]), mtWarning, [mbOK], 0) ;
592
  Modified := FALSE ;
593
end;
594

    
595
procedure TFSimulT.CBProfilChange (Sender : TObject) ;
596
begin
597
  if CBProfil.ItemIndex = -1
598
  then
599
    CBProfil.Hint := ''
600
  else
601
  begin
602
    PProfilT := ListProfilT[FindIdxProfilT (CBProfil.Text)] ;
603
    CBProfil.Hint := PProfilT.Memo ;
604
  end ;
605
  if not Update
606
  then
607
  begin
608
    Modified := TRUE ;
609
    PSimulT.Profil := FindNumProfilT (CBProfil.Text) ;
610
    PBDureeLact.AsInteger := PProfilT.DureeLact ;
611
    ValidBBResSimul ;
612
  end ;
613
end ;
614

    
615
procedure TFSimulT.CBLogeChange (Sender : TObject) ;
616
begin
617
  if CBLoge.ItemIndex = -1
618
  then
619
    CBLoge.Hint := ''
620
  else
621
  begin
622
    PLogeT := ListLogeT[FindIdxLogeT (CBLoge.Text)] ;
623
    CBLoge.Hint := PLogeT.Memo ;
624
  end ;
625
  if not Update
626
  then
627
  begin
628
    Modified := TRUE ;
629
    PSimulT.Logement := FindNumLogeT (CBLoge.Text) ;
630
    ValidBBResSimul ;
631
  end ;
632
end ;
633

    
634
procedure TFSimulT.PBDureeLactChange (Sender : TObject) ;
635
begin
636
  if not Update
637
  then
638
  begin
639
    Modified := TRUE ;
640
    PSimulT.DureeLact := PBDureeLact.AsInteger ;
641
  end ;
642
end ;
643

    
644
procedure TFSimulT.CBOptInitChange (Sender : TObject) ;
645
begin
646
  if CBOptInit.ItemIndex = 2
647
  then // Au d?part seulement
648
    if AffOptInit
649
    then
650
    begin
651
      FWarning := TFWarning.Create (Self) ;
652
      with FWarning do
653
      begin
654
        Msg := 'OptInit';
655
        ShowModal ;
656
        Release ;
657
        AffOptInit := FALSE ;
658
      end ;
659
    end ;
660
  if not Update
661
  then
662
  begin
663
    Modified := TRUE ;
664
    PSimulT.OptInit := CBOptInit.ItemIndex ;
665
  end ;
666
end ;
667

    
668
procedure TFSimulT.PBPorteeInitChange (Sender : TObject) ;
669
begin
670
  if not Update
671
  then
672
  begin
673
    Modified := TRUE ;
674
    PSimulT.StadeInit := (PBPorteeInit.AsInteger - 1) * 3
675
      + CBStadeInit.ItemIndex ;
676
    if PSimulT.StadeInit >= PSimulT.StadeFin
677
    then
678
      if PSimulT.StadeFin >= 21
679
      then // Port?e 8
680
      begin
681
        PSimulT.StadeFin := PSimulT.StadeFin + 1 ;
682
        Update := TRUE ;
683
        CBStadeFin.ItemIndex := PSimulT.StadeFin mod 3 ;
684
        Update := FALSE ;
685
      end
686
      else
687
      begin
688
        PSimulT.StadeFin := PSimulT.StadeFin + 3 ;
689
        Update := TRUE ;
690
        PBPorteeFin.AsInteger := PSimulT.StadeFin div 3 + 1 ;
691
        Update := FALSE ;
692
      end ;
693
    LBPortee.Repaint ;
694
  end ;
695
end ;
696

    
697
procedure TFSimulT.CBStadeInitChange (Sender : TObject) ;
698
begin
699
  if not Update
700
  then
701
  begin
702
    Modified := TRUE ;
703
    PSimulT.StadeInit := (PBPorteeInit.AsInteger - 1) * 3
704
      + CBStadeInit.ItemIndex ;
705
    if PSimulT.StadeInit >= PSimulT.StadeFin
706
    then
707
      if PSimulT.StadeFin mod 3 = 2
708
      then // Sevrage
709
      begin
710
        PSimulT.StadeFin := PSimulT.StadeFin + 3 ;
711
        Update := TRUE ;
712
        PBPorteeFin.AsInteger := PSimulT.StadeFin div 3 + 1 ;
713
        Update := FALSE ;
714
      end
715
      else
716
      begin
717
        PSimulT.StadeFin := PSimulT.StadeFin + 1 ;
718
        Update := TRUE ;
719
        CBStadeFin.ItemIndex := PSimulT.StadeFin mod 3 ;
720
        Update := FALSE ;
721
      end ;
722
    LBPortee.Repaint ;
723
  end ;
724
end ;
725

    
726
procedure TFSimulT.PBPorteeFinChange (Sender : TObject) ;
727
begin
728
  if not Update
729
  then
730
  begin
731
    Modified := TRUE ;
732
    PSimulT.StadeFin := (PBPorteeFin.AsInteger - 1) * 3
733
      + CBStadeFin.ItemIndex ;
734
    if PSimulT.StadeInit >= PSimulT.StadeFin
735
    then
736
      if PSimulT.StadeFin div 3 = PSimulT.StadeInit div 3
737
      then
738
      begin
739
        PSimulT.StadeFin := PSimulT.StadeInit + 1 ;
740
        Update := TRUE ;
741
        CBStadeFin.ItemIndex := PSimulT.StadeFin mod 3 ;
742
        Update := FALSE ;
743
      end
744
      else
745
      begin
746
        PSimulT.StadeFin := PSimulT.StadeFin + 3 ;
747
        Update := TRUE ;
748
        PBPorteeFin.AsInteger := PSimulT.StadeFin div 3 + 1 ;
749
        Update := FALSE ;
750
      end ;
751
    LBPortee.Repaint ;
752
  end ;
753
end ;
754

    
755
procedure TFSimulT.CBStadeFinChange (Sender : TObject) ;
756
begin
757
  if not Update
758
  then
759
  begin
760
    Modified := TRUE ;
761
    PSimulT.StadeFin := (PBPorteeFin.AsInteger - 1) * 3
762
      + CBStadeFin.ItemIndex ;
763
    if PSimulT.StadeInit >= PSimulT.StadeFin
764
    then
765
      if PSimulT.StadeFin >= 21
766
      then // Port?e 8
767
      begin
768
        PSimulT.StadeFin := PSimulT.StadeInit + 1 ;
769
        Update := TRUE ;
770
        CBStadeFin.ItemIndex := PSimulT.StadeFin mod 3 ;
771
        Update := FALSE ;
772
      end
773
      else
774
      begin
775
        PSimulT.StadeFin := PSimulT.StadeFin + 3 ;
776
        Update := TRUE ;
777
        PBPorteeFin.AsInteger := PSimulT.StadeFin div 3 + 1 ;
778
        Update := FALSE ;
779
      end ;
780
    LBPortee.Repaint ;
781
  end ;
782
end ;
783

    
784
procedure TFSimulT.LBPorteeDrawItem (Control : TWinControl ; Index : Integer ;
785
  Rect : TRect ; State : TOwnerDrawState) ;
786
begin
787
  with (Control as TListBox).Canvas do
788
  begin
789
    // Cadre principal
790
    FillRect (Rect) ;
791
//    if (PSimulT.SeqAli[Index + 1] = -1) or (PSimulT.Ration[Index + 1] = -1)
792
//    then
793
//      Font.Color := clRed
794
//    else
795
      if (odSelected in State)
796
      then
797
        Font.Color := clYellow
798
      else
799
        Font.Color := clBlue ;
800
    // ISSF
801
    if (Index * 3 + 2 >= PSimulT.StadeInit)
802
      and (Index * 3 + 2 < PSimulT.StadeFin)
803
    then
804
      TextRect (Rect, Rect.Left + 240, Rect.Top, StrISSF) ;
805
    Rect.Right := 240 ;
806
    // Lactation
807
    if (Index * 3 + 1 >= PSimulT.StadeInit)
808
      and (Index * 3 + 1 < PSimulT.StadeFin)
809
    then
810
      TextRect (Rect, Rect.Left + 160, Rect.Top, StrLactation) ;
811
    Rect.Right := 160 ;
812
    // Gestation
813
    if (Index * 3 >= PSimulT.StadeInit)
814
      and (Index * 3 < PSimulT.StadeFin)
815
    then
816
      TextRect (Rect, Rect.Left + 80, Rect.Top, StrGestation) ;
817
    Rect.Right := 80 ;
818
    // Texte
819
    if (odSelected in State)
820
    then
821
      Font.Color := clWhite
822
    else
823
      Font.Color := clBlack ;
824
    TextRect (Rect, Rect.Left, Rect.Top, LBPortee.Items[Index]) ;
825
  end ;
826
end ;
827

    
828
procedure TFSimulT.LBPorteeClick (Sender : TObject) ;
829
begin
830
  if LBPortee.ItemIndex = -1
831
  then
832
    LBPortee.ItemIndex := PBPorteeInit.AsInteger - 1 ;
833
  Update := TRUE ;
834
  ChkSeqAli.Checked := (PSimulT.SeqAli[LBPortee.ItemIndex + 1] = -1) ;
835
  ChkRation.Checked := (PSimulT.Ration[LBPortee.ItemIndex + 1] = -1) ;
836
  if PSimulT.Profil = -1
837
  then
838
    CBSeqAli.ItemIndex := -1
839
  else
840
    if ChkSeqAli.Checked
841
    then
842
      CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PProfilT.SeqAli))
843
    else
844
      CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PSimulT.SeqAli[LBPortee.ItemIndex + 1])) ;
845
  CBSeqAliChange (nil) ;
846
  if ChkRation.Checked
847
  then
848
    CBRation.ItemIndex := -1
849
  else
850
    CBRation.ItemIndex := CBRation.Items.IndexOf (FindNomRationT (PSimulT.Ration[LBPortee.ItemIndex + 1])) ;
851
  CBRationChange (nil) ;
852
  Update := FALSE ;
853
end ;
854

    
855
procedure TFSimulT.CBSeqAliChange (Sender : TObject) ;
856
begin
857
  if CBSeqAli.ItemIndex = -1
858
  then
859
    CBSeqAli.Hint := ''
860
  else
861
  begin
862
    PSeqAliT := ListSeqAliT[FindIdxSeqAliT (CBSeqAli.Text)] ;
863
    CBSeqAli.Hint := PSeqAliT.Memo ;
864
  end ;
865
  if not Update
866
  then
867
  begin
868
    Modified := TRUE ;
869
    PSimulT.SeqAli[LBPortee.ItemIndex + 1] := FindNumSeqAliT (CBSeqAli.Text) ;
870
//    LBPortee.Repaint ;
871
  end ;
872
end ;
873

    
874
procedure TFSimulT.ChkSeqAliClick(Sender: TObject);
875
begin
876
  CBSeqAli.Enabled := not ChkSeqAli.Checked ;
877
  if ChkSeqAli.Checked
878
  then
879
    if not Update
880
    then
881
    begin
882
      Modified := TRUE ;
883
      PSimulT.SeqAli[LBPortee.ItemIndex + 1] := -1 ;
884
      Update := TRUE ;
885
      if PSimulT.Profil = -1
886
      then
887
        CBSeqAli.ItemIndex := -1
888
      else
889
        CBSeqAli.ItemIndex := CBSeqAli.Items.IndexOf (FindNomSeqAliT (PProfilT.SeqAli)) ;
890
      CBSeqAliChange (nil) ;
891
      Update := FALSE ;
892
//      LBPortee.Repaint ;
893
    end ;
894
end;
895

    
896
procedure TFSimulT.CBRationChange (Sender : TObject) ;
897
begin
898
  if CBRation.ItemIndex = -1
899
  then
900
    CBRation.Hint := ''
901
  else
902
  begin
903
    PRationT := ListRationT[FindIdxRationT (CBRation.Text)] ;
904
    CBRation.Hint := PRationT.Memo ;
905
  end ;
906
  if not Update
907
  then
908
  begin
909
    Modified := TRUE ;
910
    PSimulT.Ration[LBPortee.ItemIndex + 1] := FindNumRationT (CBRation.Text) ;
911
//    LBPortee.Repaint ;
912
  end ;
913
end ;
914

    
915
procedure TFSimulT.ChkRationClick(Sender: TObject);
916
begin
917
  CBRation.Visible := not ChkRation.Checked ;
918
  CBRationProfil.Visible := ChkRation.Checked ;
919
  if ChkRation.Checked
920
  then
921
    if not Update
922
    then
923
    begin
924
      Modified := TRUE ;
925
      PSimulT.Ration[LBPortee.ItemIndex + 1] := -1 ;
926
      Update := TRUE ;
927
      CBRation.ItemIndex := -1 ;
928
      CBRationChange (nil) ;
929
      Update := FALSE ;
930
//      LBPortee.Repaint ;
931
    end ;
932
end;
933

    
934
procedure TFSimulT.BBResSimulClick (Sender : TObject) ;
935
begin
936
  if AffSimulT
937
  then
938
  begin
939
    FWarning := TFWarning.Create (Self) ;
940
    with FWarning do
941
    begin
942
      Msg := 'SimulT';
943
      ShowModal ;
944
      Release ;
945
      AffSimulT := FALSE ;
946
    end ;
947
  end ;
948
  Modal := True;
949
  New (PResSimulT) ;
950
  CalcSimulT (PSimulT.Num, -1, 1, 1, 8, 0, PResSimulT) ;
951
  FResSimulT := TFResSimulT.Create (Self) ;
952
  FResSimulT.ShowModal ;
953
  FResSimulT.Release ;
954
  Dispose (PResSimulT) ;
955
  Modal := False;
956
end ;
957

    
958
procedure TFSimulT.BBRapSimulClick (Sender : TObject) ;
959
begin
960
  if AffSimulT
961
  then
962
  begin
963
    FWarning := TFWarning.Create (Self) ;
964
    with FWarning do
965
    begin
966
      Msg := 'SimulT';
967
      ShowModal ;
968
      Release ;
969
      AffSimulT := FALSE ;
970
    end ;
971
  end ;
972
  Modal := True;
973
  New (PResSimulT) ;
974
  CalcSimulT (PSimulT.Num, -1, 1, 1, 8, 0, PResSimulT) ;
975
  FRapSimulT := TFRapSimulT.Create (Self) ;
976
  FRapSimulT.QRRapport.PreviewModal ;
977
  FRapSimulT.Release ;
978
  Dispose (PResSimulT) ;
979
  Modal := False;
980
end ;
981

    
982
procedure TFSimulT.BBTabSimulClick (Sender : TObject) ;
983
begin
984
//  Modal := True;
985
//  New (PResSimulT) ;
986
//  CalcSimulT (PSimulT.Num, -1, 1, 1, 8, 0, PResSimulT) ;
987
//  FTabSimulT := TFTabSimulT.Create (Self) ;
988
//  FTabSimulT.ShowModal ;
989
//  FTabSimulT.Release ;
990
//  Dispose (PResSimulT) ;
991
//  Modal := False;
992
end ;
993

    
994
procedure TFSimulT.ValidBBResSimul ;
995
var
996
  ok : boolean ;
997
begin
998
  ok := SimulTValid (PSimulT) ;
999
//  PCenter.Visible := ok ;
1000
  BBResSimul.Enabled := ok ;
1001
  BBRapSimul.Enabled := ok ;
1002
  BBTabSimul.Enabled := ok ;
1003
  if ok then LBPorteeClick (nil) ;
1004
end ;
1005

    
1006
// Comparaison
1007

    
1008
procedure TFSimulT.CBCompSimul1Click (Sender : TObject) ;
1009
begin
1010
  if CBCompSimul1.Checked
1011
  then
1012
    CBSimulComp1.Enabled := TRUE
1013
  else
1014
    CBSimulComp1.Enabled := FALSE ;
1015
  ValidBBCompSimul ;
1016
end ;
1017

    
1018
procedure TFSimulT.CBCompSimul2Click (Sender : TObject) ;
1019
begin
1020
  if CBCompSimul2.Checked
1021
  then
1022
    CBSimulComp2.Enabled := TRUE
1023
  else
1024
    CBSimulComp2.Enabled := FALSE ;
1025
  ValidBBCompSimul ;
1026
end ;
1027

    
1028
procedure TFSimulT.CBCompSimul3Click (Sender : TObject) ;
1029
begin
1030
  if CBCompSimul3.Checked
1031
  then
1032
    CBSimulComp3.Enabled := TRUE
1033
  else
1034
    CBSimulComp3.Enabled := FALSE ;
1035
  ValidBBCompSimul ;
1036
end ;
1037

    
1038
procedure TFSimulT.CBCompSimul4Click (Sender : TObject) ;
1039
begin
1040
  if CBCompSimul4.Checked
1041
  then
1042
    CBSimulComp4.Enabled := TRUE
1043
  else
1044
    CBSimulComp4.Enabled := FALSE ;
1045
  ValidBBCompSimul ;
1046
end ;
1047

    
1048
procedure TFSimulT.CBCompSimul5Click (Sender : TObject) ;
1049
begin
1050
  if CBCompSimul5.Checked
1051
  then
1052
    CBSimulComp5.Enabled := TRUE
1053
  else
1054
    CBSimulComp5.Enabled := FALSE ;
1055
  ValidBBCompSimul ;
1056
end ;
1057

    
1058
procedure TFSimulT.CBSimulComp1Change (Sender : TObject) ;
1059
begin
1060
  if CBSimulComp1.ItemIndex = -1
1061
  then
1062
    CBSimulComp1.Hint := ''
1063
  else
1064
  begin
1065
    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp1.Text)] ;
1066
    CBSimulComp1.Hint := PSimulT.Memo ;
1067
  end ;
1068
  ValidBBCompSimul ;
1069
end ;
1070

    
1071
procedure TFSimulT.CBSimulComp2Change (Sender : TObject) ;
1072
begin
1073
  if CBSimulComp2.ItemIndex = -1
1074
  then
1075
    CBSimulComp2.Hint := ''
1076
  else
1077
  begin
1078
    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp2.Text)] ;
1079
    CBSimulComp2.Hint := PSimulT.Memo ;
1080
  end ;
1081
  ValidBBCompSimul ;
1082
end ;
1083

    
1084
procedure TFSimulT.CBSimulComp3Change (Sender : TObject) ;
1085
begin
1086
  if CBSimulComp3.ItemIndex = -1
1087
  then
1088
    CBSimulComp3.Hint := ''
1089
  else
1090
  begin
1091
    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp3.Text)] ;
1092
    CBSimulComp3.Hint := PSimulT.Memo ;
1093
  end ;
1094
  ValidBBCompSimul ;
1095
end ;
1096

    
1097
procedure TFSimulT.CBSimulComp4Change (Sender : TObject) ;
1098
begin
1099
  if CBSimulComp4.ItemIndex = -1
1100
  then
1101
    CBSimulComp4.Hint := ''
1102
  else
1103
  begin
1104
    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp4.Text)] ;
1105
    CBSimulComp4.Hint := PSimulT.Memo ;
1106
  end ;
1107
  ValidBBCompSimul ;
1108
end ;
1109

    
1110
procedure TFSimulT.CBSimulComp5Change (Sender : TObject) ;
1111
begin
1112
  if CBSimulComp5.ItemIndex = -1
1113
  then
1114
    CBSimulComp5.Hint := ''
1115
  else
1116
  begin
1117
    PSimulT := ListSimulT[FindIdxSimulT (CBSimulComp5.Text)] ;
1118
    CBSimulComp5.Hint := PSimulT.Memo ;
1119
  end ;
1120
  ValidBBCompSimul ;
1121
end ;
1122

    
1123
procedure TFSimulT.BBCompSimulClick (Sender : TObject) ;
1124
var
1125
  i : integer ;
1126
begin
1127
  if AffSimulT
1128
  then
1129
  begin
1130
    FWarning := TFWarning.Create (Self) ;
1131
    with FWarning do
1132
    begin
1133
      Msg := 'SimulT';
1134
      ShowModal ;
1135
      Release ;
1136
      AffSimulT := FALSE ;
1137
    end ;
1138
  end ;
1139
  Modal := True;
1140
  // Simulation 1
1141
  with TabSimulT[1] do
1142
    if CBCompSimul1.Checked and (CBSimulComp1.ItemIndex <> -1)
1143
    then
1144
    begin
1145
      Ok := TRUE ;
1146
      Simul := FindNumSimulT (CBSimulComp1.Text) ;
1147
    end
1148
    else
1149
      Ok := FALSE ;
1150
  // Simulation 2
1151
  with TabSimulT[2] do
1152
    if CBCompSimul2.Checked and (CBSimulComp2.ItemIndex <> -1)
1153
    then
1154
    begin
1155
      Ok := TRUE ;
1156
      Simul := FindNumSimulT (CBSimulComp2.Text) ;
1157
    end
1158
    else
1159
      Ok := FALSE ;
1160
  // Simulation 3
1161
  with TabSimulT[3] do
1162
    if CBCompSimul3.Checked and (CBSimulComp3.ItemIndex <> -1)
1163
    then
1164
    begin
1165
      Ok := TRUE ;
1166
      Simul := FindNumSimulT (CBSimulComp3.Text) ;
1167
    end
1168
    else
1169
      Ok := FALSE ;
1170
  // Simulation 4
1171
  with TabSimulT[4] do
1172
    if CBCompSimul4.Checked and (CBSimulComp4.ItemIndex <> -1)
1173
    then
1174
    begin
1175
      Ok := TRUE ;
1176
      Simul := FindNumSimulT (CBSimulComp4.Text) ;
1177
    end
1178
    else
1179
      Ok := FALSE ;
1180
  // Simulation 5
1181
  with TabSimulT[5] do
1182
    if CBCompSimul5.Checked and (CBSimulComp5.ItemIndex <> -1)
1183
    then
1184
    begin
1185
      Ok := TRUE ;
1186
      Simul := FindNumSimulT (CBSimulComp5.Text) ;
1187
    end
1188
    else
1189
      Ok := FALSE ;
1190
  // Calcul des simulations
1191
  for i := 1 to 5 do
1192
    with TabSimulT[i] do
1193
      if Ok
1194
      then
1195
      begin
1196
        New (Result) ;
1197
        CalcSimulT (Simul, -1, 1, 1, 8, 0, Result) ;
1198
      end ;
1199
  FCompSimulT := TFCompSimulT.Create (Self) ;
1200
  FCompSimulT.ShowModal ;
1201
  FCompSimulT.Release ;
1202
  for i := 1 to 5 do
1203
    with TabSimulT[i] do
1204
      if Ok then Dispose (Result) ;
1205
  Modal := False;
1206
end ;
1207

    
1208
procedure TFSimulT.BBRapCompSimulClick(Sender: TObject);
1209
begin
1210
//
1211
end;
1212

    
1213
procedure TFSimulT.ValidBBCompSimul ;
1214
begin
1215
  if (CBCompSimul1.Checked and (CBSimulComp1.ItemIndex <> -1))
1216
    or (CBCompSimul2.Checked and (CBSimulComp2.ItemIndex <> -1))
1217
    or (CBCompSimul3.Checked and (CBSimulComp3.ItemIndex <> -1))
1218
    or (CBCompSimul4.Checked and (CBSimulComp4.ItemIndex <> -1))
1219
    or (CBCompSimul5.Checked and (CBSimulComp5.ItemIndex <> -1))
1220
  then
1221
    BBCompSimul.Enabled := TRUE
1222
  else
1223
    BBCompSimul.Enabled := FALSE ;
1224
  BBCompSimul.Enabled := BBCompSimul.Enabled ;
1225
end ;
1226

    
1227
// Sensibilit?
1228

    
1229
procedure TFSimulT.CBSimulSensChange (Sender : TObject) ;
1230
begin
1231
  if CBSimulSens.ItemIndex = -1
1232
  then
1233
    CBSimulSens.Hint := ''
1234
  else
1235
  begin
1236
    PSimulT := ListSimulT[FindIdxSimulT (CBSimulSens.Text)] ;
1237
    CBSimulSens.Hint := PSimulT.Memo ;
1238
  end ;
1239
  ValidBBSensSimul ;
1240
end ;
1241

    
1242
procedure TFSimulT.CBVariableChange(Sender: TObject);
1243
begin
1244
  GBEtatVar.Visible := (CBVariable.ItemIndex > 2) ;
1245
  CBStadeVar.Enabled := (CBVariable.ItemIndex <> 3) ;
1246
  if CBVariable.ItemIndex = 3
1247
  then // Temp?rature ambiante
1248
    CBStadeVar.ItemIndex := 0 ; // Gestation
1249
  ValidBBSensSimul ;
1250
end;
1251

    
1252
procedure TFSimulT.PBPorteeVarInitChange(Sender: TObject);
1253
begin
1254
  if (PBPorteeVarInit.AsInteger >= PBPorteeVarInit.MinValue)
1255
    and (PBPorteeVarInit.AsInteger <= PBPorteeVarInit.MaxValue)
1256
  then
1257
    if (PBPorteeVarInit.AsInteger > PBPorteeVarFin.AsInteger)
1258
    then
1259
      PBPorteeVarFin.AsInteger := PBPorteeVarInit.AsInteger ;
1260
end;
1261

    
1262
procedure TFSimulT.PBPorteeVarFinChange(Sender: TObject);
1263
begin
1264
  if (PBPorteeVarFin.AsInteger >= PBPorteeVarFin.MinValue)
1265
    and (PBPorteeVarFin.AsInteger <= PBPorteeVarFin.MaxValue)
1266
  then
1267
    if (PBPorteeVarFin.AsInteger < PBPorteeVarInit.AsInteger)
1268
    then
1269
      PBPorteeVarInit.AsInteger := PBPorteeVarFin.AsInteger ;
1270
end;
1271

    
1272
procedure TFSimulT.BBSensSimulClick (Sender : TObject) ;
1273
var
1274
  i, k : integer ;
1275
  d : double ;
1276
begin
1277
  if AffSimulT
1278
  then
1279
  begin
1280
    FWarning := TFWarning.Create (Self) ;
1281
    with FWarning do
1282
    begin
1283
      Msg := 'SimulT';
1284
      ShowModal ;
1285
      Release ;
1286
      AffSimulT := FALSE ;
1287
    end ;
1288
  end ;
1289
  Modal := True;
1290
  i := CBVariable.ItemIndex ;
1291
  d := PBVariation.AsFloat ;
1292
  TabSimulT[1].Variation := (100 + d * 2) / 100 ;
1293
  TabSimulT[2].Variation := (100 + d) / 100 ;
1294
  TabSimulT[3].Variation := 1 ;
1295
  TabSimulT[4].Variation := (100 - d) / 100 ;
1296
  TabSimulT[5].Variation := (100 - d * 2) / 100 ;
1297
  for k := 1 to 5 do
1298
    with TabSimulT[k] do
1299
    begin
1300
      Ok := TRUE ;
1301
      Simul := FindNumSimulT (CBSimulSens.Text) ;
1302
      // Calcul des simulations
1303
      New (Result) ;
1304
      if (CBVariable.ItemIndex > 2)
1305
      then
1306
        CalcSimulT (Simul, i, Variation, PBPorteeVarInit.AsInteger, PBPorteeVarFin.AsInteger, CBStadeVar.ItemIndex, Result)
1307
      else
1308
        CalcSimulT (Simul, i, Variation, 1, 8, 0, Result) ;
1309
    end ;
1310
  FCompSimulT := TFCompSimulT.Create (Self) ;
1311
  FCompSimulT.ShowModal ;
1312
  FCompSimulT.Release ;
1313
  for k := 1 to 5 do
1314
    Dispose (TabSimulT[k].Result) ;
1315
  Modal := False;
1316
end ;
1317

    
1318
procedure TFSimulT.BBRapSensSimulClick(Sender: TObject);
1319
begin
1320
//
1321
end;
1322

    
1323
procedure TFSimulT.ValidBBSensSimul ;
1324
begin
1325
  BBSensSimul.Enabled := (CBSimulSens.ItemIndex <> -1) and (CBVariable.ItemIndex <> -1);
1326
  BBSensSimul.Enabled := BBSensSimul.Enabled;
1327
end ;
1328

    
1329
end.