root / UnitIngredientCreation.pas @ 10
Historique | Voir | Annoter | Télécharger (27,823 ko)
1 | 1 | avalancogn | unit UnitIngredientCreation;
|
---|---|---|---|
2 | |||
3 | interface
|
||
4 | |||
5 | uses
|
||
6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
||
7 | Dialogs, gnugettext, StdCtrls, Mask, DB, DBCtrls, JvExMask, JvSpin, |
||
8 | JvExStdCtrls, JvEdit, JvValidateEdit, ComCtrls, JvExControls, JvEnterTab, |
||
9 | JvButton, JvCtrls, ActnList, ImgList, ExtCtrls; |
||
10 | |||
11 | type
|
||
12 | TFormIngredientCreation = class(TForm)
|
||
13 | ValidateEditMSCopy: TJvValidateEdit; |
||
14 | ValidateEditModel: TJvValidateEdit; |
||
15 | PageControlCreation: TPageControl; |
||
16 | TabSheetCopy: TTabSheet; |
||
17 | TabSheetOriginal: TTabSheet; |
||
18 | ValidateEditMSOriginal: TJvValidateEdit; |
||
19 | GroupBoxOriginalStep2: TGroupBox; |
||
20 | GroupBoxOriginalStep5: TGroupBox; |
||
21 | GroupBoxOriginalStep4: TGroupBox; |
||
22 | GroupBoxOriginalStep6: TGroupBox; |
||
23 | ValidateEditMAT: TJvValidateEdit; |
||
24 | ValidateEditMM: TJvValidateEdit; |
||
25 | CheckBoxMAT: TCheckBox; |
||
26 | CheckBoxMM: TCheckBox; |
||
27 | GroupBoxOriginalStep7: TGroupBox; |
||
28 | GroupBoxOriginalStep3: TGroupBox; |
||
29 | ValidateEditMG: TJvValidateEdit; |
||
30 | CheckBoxMG: TCheckBox; |
||
31 | CheckBoxEB: TCheckBox; |
||
32 | ValidateEditEB: TJvValidateEdit; |
||
33 | ValidateEditAmidon: TJvValidateEdit; |
||
34 | CheckBoxAmidon: TCheckBox; |
||
35 | ValidateEditSucres: TJvValidateEdit; |
||
36 | CheckBoxSucres: TCheckBox; |
||
37 | ValidateEditCB: TJvValidateEdit; |
||
38 | ValidateEditNDF: TJvValidateEdit; |
||
39 | ValidateEditADF: TJvValidateEdit; |
||
40 | CheckBoxCB: TCheckBox; |
||
41 | CheckBoxNDF: TCheckBox; |
||
42 | CheckBoxADF: TCheckBox; |
||
43 | GroupBoxCopyStep1: TGroupBox; |
||
44 | GroupBoxCopyStep2: TGroupBox; |
||
45 | GroupBoxOriginalStep1: TGroupBox; |
||
46 | EnterAsTab: TJvEnterAsTab; |
||
47 | ButtonNext: TButton; |
||
48 | LabelName: TLabel; |
||
49 | LabelClass: TLabel; |
||
50 | LabelDefinition: TLabel; |
||
51 | LabelModel: TLabel; |
||
52 | LabelMSCopy: TLabel; |
||
53 | LabelMSCopyWarning: TLabel; |
||
54 | LabelOptionComment: TLabel; |
||
55 | LabelMM: TLabel; |
||
56 | LabelMG: TLabel; |
||
57 | LabelEB: TLabel; |
||
58 | LabelMGComment: TLabel; |
||
59 | LabelEBComment: TLabel; |
||
60 | LabelCB: TLabel; |
||
61 | LabelNDF: TLabel; |
||
62 | LabelADF: TLabel; |
||
63 | LabelAmidon: TLabel; |
||
64 | LabelSucres: TLabel; |
||
65 | LabelMAT: TLabel; |
||
66 | LabelMSOriginal: TLabel; |
||
67 | LabelMSOriginalWarning: TLabel; |
||
68 | ComboBoxClass: TComboBox; |
||
69 | ComboBoxModel: TComboBox; |
||
70 | ComboBoxMSCopy: TComboBox; |
||
71 | ComboBoxMM: TComboBox; |
||
72 | ComboBoxMG: TComboBox; |
||
73 | ComboBoxEB: TComboBox; |
||
74 | ComboBoxFibre: TComboBox; |
||
75 | ComboBoxAmidon: TComboBox; |
||
76 | ComboBoxSucres: TComboBox; |
||
77 | ComboBoxMAT: TComboBox; |
||
78 | ComboBoxMSOriginal: TComboBox; |
||
79 | EditName: TEdit; |
||
80 | MemoDefinition: TMemo; |
||
81 | ImageListIcons: TImageList; |
||
82 | ActionListButtons: TActionList; |
||
83 | ActionHelp: TAction; |
||
84 | JvImgBtnHelp: TJvImgBtn; |
||
85 | JvImgBtnOK: TJvImgBtn; |
||
86 | JvImgBtnCancel: TJvImgBtn; |
||
87 | ActionOK: TAction; |
||
88 | ActionCancel: TAction; |
||
89 | PanelButtons: TPanel; |
||
90 | PanelHead: TPanel; |
||
91 | procedure FormCreate(Sender: TObject);
|
||
92 | procedure ComboBoxClassChange(Sender: TObject);
|
||
93 | procedure ComboBoxModelChange(Sender: TObject);
|
||
94 | procedure ComboBoxMSCopyChange(Sender: TObject);
|
||
95 | procedure ButtonNextClick(Sender: TObject);
|
||
96 | procedure ComboBoxMSOriginalChange(Sender: TObject);
|
||
97 | procedure ComboBoxMMChange(Sender: TObject);
|
||
98 | procedure ComboBoxMATChange(Sender: TObject);
|
||
99 | procedure ComboBoxMGChange(Sender: TObject);
|
||
100 | procedure ComboBoxEBChange(Sender: TObject);
|
||
101 | procedure ComboBoxFibreChange(Sender: TObject);
|
||
102 | procedure ComboBoxAmidonChange(Sender: TObject);
|
||
103 | procedure ComboBoxSucresChange(Sender: TObject);
|
||
104 | procedure CheckBoxMMClick(Sender: TObject);
|
||
105 | procedure CheckBoxMATClick(Sender: TObject);
|
||
106 | procedure CheckBoxMGClick(Sender: TObject);
|
||
107 | procedure CheckBoxEBClick(Sender: TObject);
|
||
108 | procedure CheckBoxCBClick(Sender: TObject);
|
||
109 | procedure CheckBoxNDFClick(Sender: TObject);
|
||
110 | procedure CheckBoxADFClick(Sender: TObject);
|
||
111 | procedure CheckBoxAmidonClick(Sender: TObject);
|
||
112 | procedure CheckBoxSucresClick(Sender: TObject);
|
||
113 | procedure FormDestroy(Sender: TObject);
|
||
114 | procedure ActionHelpExecute(Sender: TObject);
|
||
115 | procedure ActionOKExecute(Sender: TObject);
|
||
116 | procedure ActionCancelExecute(Sender: TObject);
|
||
117 | procedure NumEditKeyDown(Sender: TObject; var Key: Word; |
||
118 | Shift: TShiftState); |
||
119 | procedure NumEditKeyPress(Sender: TObject; var Key: Char); |
||
120 | private
|
||
121 | { D?clarations priv?es }
|
||
122 | ModelList: TStrings; |
||
123 | procedure EditActivate(Edit: TJvValidateEdit);
|
||
124 | procedure EditEmpty(Edit: TJvValidateEdit);
|
||
125 | public
|
||
126 | { D?clarations publiques }
|
||
127 | end;
|
||
128 | |||
129 | var
|
||
130 | FormIngredientCreation: TFormIngredientCreation; |
||
131 | |||
132 | implementation
|
||
133 | |||
134 | {$R *.dfm}
|
||
135 | |||
136 | uses
|
||
137 | UnitDeclaration, UnitOptions; |
||
138 | |||
139 | var
|
||
140 | VK_Separator: boolean; |
||
141 | |||
142 | procedure TFormIngredientCreation.ActionCancelExecute(Sender: TObject);
|
||
143 | begin
|
||
144 | ModalResult := mrCancel; |
||
145 | end;
|
||
146 | |||
147 | procedure TFormIngredientCreation.ActionHelpExecute(Sender: TObject);
|
||
148 | begin
|
||
149 | Application.HelpContext(HelpContext); |
||
150 | end;
|
||
151 | |||
152 | procedure TFormIngredientCreation.ActionOKExecute(Sender: TObject);
|
||
153 | var
|
||
154 | NewId: Integer; |
||
155 | NewName, NewComment: String;
|
||
156 | Nb: Integer; |
||
157 | MM, MAT, MG, Fibre, Amidon, Sucres, CB, NDF, ADF: Double; |
||
158 | USFormatSettings: TFormatSettings; |
||
159 | begin
|
||
160 | NewName := Trim(EditName.Text); |
||
161 | NewComment := MemoDefinition.Text; |
||
162 | if NewName = '' |
||
163 | then
|
||
164 | begin
|
||
165 | MessageDlg(_('You must specify a name for this ingredient.'), mtError, [mbOK], 0); |
||
166 | ActiveControl := EditName; |
||
167 | Exit; |
||
168 | end;
|
||
169 | if DataModuleDeclaration.UserList.IndexOf(NewName) <> -1 |
||
170 | then
|
||
171 | begin
|
||
172 | MessageDlg(_('This name is already used, please specify another name.'), mtError, [mbOK], 0); |
||
173 | ActiveControl := EditName; |
||
174 | Exit; |
||
175 | end;
|
||
176 | if ComboBoxClass.ItemIndex = -1 |
||
177 | then
|
||
178 | begin
|
||
179 | MessageDlg(_('You must specify a class for this ingredient.'), mtError, [mbOK], 0); |
||
180 | ActiveControl := ComboBoxClass; |
||
181 | Exit; |
||
182 | end;
|
||
183 | if PageControlCreation.TabIndex = 0 |
||
184 | then // Copie |
||
185 | begin
|
||
186 | if ComboBoxModel.ItemIndex = -1 |
||
187 | then
|
||
188 | begin
|
||
189 | MessageDlg(_('You must specify a reference for this ingredient.'), mtError, [mbOK], 0); |
||
190 | ActiveControl := ComboBoxModel; |
||
191 | Exit; |
||
192 | end;
|
||
193 | if ValidateEditMSCopy.Value = 0 |
||
194 | then
|
||
195 | begin
|
||
196 | MessageDlg(_('You must specify a dry matter value for this ingredient.'), mtError, [mbOK], 0); |
||
197 | ActiveControl := ValidateEditMSCopy; |
||
198 | Exit; |
||
199 | end;
|
||
200 | end
|
||
201 | else // Cr?ation originale |
||
202 | begin
|
||
203 | if not CheckBoxMM.Checked |
||
204 | then
|
||
205 | begin
|
||
206 | MessageDlg(_('You must specify an ash value for this ingredient.'), mtError, [mbOK], 0); |
||
207 | ActiveControl := CheckBoxMM; |
||
208 | Exit; |
||
209 | end;
|
||
210 | if not CheckBoxMAT.Checked |
||
211 | then
|
||
212 | begin
|
||
213 | MessageDlg(_('You must specify a crude protein value for this ingredient.'), mtError, [mbOK], 0); |
||
214 | ActiveControl := CheckBoxMAT; |
||
215 | Exit; |
||
216 | end;
|
||
217 | if not CheckBoxCB.Checked and not CheckBoxNDF.Checked and not CheckBoxADF.Checked |
||
218 | then
|
||
219 | begin
|
||
220 | MessageDlg(_('You must specify a fiber value (crude fiber, NDF or ADF) for this ingredient.'), mtError, [mbOK], 0); |
||
221 | ActiveControl := CheckBoxCB; |
||
222 | Exit; |
||
223 | end;
|
||
224 | if not CheckBoxMG.Checked and not CheckBoxEB.Checked |
||
225 | then
|
||
226 | begin
|
||
227 | MessageDlg(_('You must specify a crude fat value or a gross energy value for this ingredient.'), mtError, [mbOK], 0); |
||
228 | ActiveControl := CheckBoxMG; |
||
229 | Exit; |
||
230 | end;
|
||
231 | with DataModuleDeclaration do |
||
232 | RapMS := InputProximal(ValidateEditMSOriginal.AsFloat, 1, 1, ComboBoxMSOriginal.ItemIndex); |
||
233 | if CheckBoxMM.Checked
|
||
234 | then
|
||
235 | with DataModuleDeclaration do |
||
236 | MM := InputProximal(ValidateEditMM.AsFloat, RapMS, ComboBoxMM.ItemIndex div 2, ComboBoxMM.ItemIndex mod 2) |
||
237 | else
|
||
238 | MM := 0;
|
||
239 | if CheckBoxMAT.Checked
|
||
240 | then
|
||
241 | with DataModuleDeclaration do |
||
242 | MAT := InputProximal(ValidateEditMAT.AsFloat, RapMS, ComboBoxMAT.ItemIndex div 2, ComboBoxMAT.ItemIndex mod 2) |
||
243 | else
|
||
244 | MAT := 0;
|
||
245 | if CheckBoxMG.Checked
|
||
246 | then
|
||
247 | with DataModuleDeclaration do |
||
248 | MG := InputProximal(ValidateEditMG.AsFloat, RapMS, ComboBoxMG.ItemIndex div 2, ComboBoxMG.ItemIndex mod 2) |
||
249 | else
|
||
250 | MG := 0;
|
||
251 | Nb := 0;
|
||
252 | if CheckBoxCB.Checked
|
||
253 | then
|
||
254 | begin
|
||
255 | with DataModuleDeclaration do |
||
256 | CB := InputProximal(ValidateEditCB.AsFloat, RapMS, ComboBoxFibre.ItemIndex div 2, ComboBoxFibre.ItemIndex mod 2); |
||
257 | Inc(Nb); |
||
258 | end
|
||
259 | else
|
||
260 | CB := 0;
|
||
261 | if CheckBoxNDF.Checked
|
||
262 | then
|
||
263 | begin
|
||
264 | with DataModuleDeclaration do |
||
265 | NDF := InputProximal(ValidateEditNDF.AsFloat, RapMS, ComboBoxFibre.ItemIndex div 2, ComboBoxFibre.ItemIndex mod 2); |
||
266 | Inc(Nb); |
||
267 | end
|
||
268 | else
|
||
269 | NDF := 0;
|
||
270 | if CheckBoxADF.Checked
|
||
271 | then
|
||
272 | begin
|
||
273 | with DataModuleDeclaration do |
||
274 | ADF := InputProximal(ValidateEditADF.AsFloat, RapMS, ComboBoxFibre.ItemIndex div 2, ComboBoxFibre.ItemIndex mod 2); |
||
275 | Inc(Nb); |
||
276 | end
|
||
277 | else
|
||
278 | ADF := 0;
|
||
279 | if Nb = 0 |
||
280 | then
|
||
281 | Fibre := 0
|
||
282 | else // Moyenne des ?quations significatives |
||
283 | Fibre := (CB * NDF_CB + NDF + ADF * NDF_ADF) / Nb; |
||
284 | if CheckBoxAmidon.Checked
|
||
285 | then
|
||
286 | with DataModuleDeclaration do |
||
287 | Amidon := InputProximal(ValidateEditAmidon.AsFloat, RapMS, ComboBoxAmidon.ItemIndex div 2, ComboBoxAmidon.ItemIndex mod 2) |
||
288 | else
|
||
289 | Amidon := 0;
|
||
290 | if CheckBoxSucres.Checked
|
||
291 | then
|
||
292 | with DataModuleDeclaration do |
||
293 | Sucres := InputProximal(ValidateEditSucres.AsFloat, RapMS, ComboBoxSucres.ItemIndex div 2, ComboBoxSucres.ItemIndex mod 2) |
||
294 | else
|
||
295 | Sucres := 0;
|
||
296 | 10 | avalancogn | if MM + MAT + MG + Fibre + Amidon + Sucres > MAX_SUM
|
297 | 1 | avalancogn | then
|
298 | if MessageDlg(_('The sum of nutrients is estimated to more than 100% of the dry matter.' + sLineBreak + 'Are you sure you want to continue?'), mtError, [mbYes, mbNo], 0) <> mrYes |
||
299 | then
|
||
300 | Exit; |
||
301 | end;
|
||
302 | with DataModuleDeclaration do |
||
303 | begin
|
||
304 | // Rechercher une valeur pour le champs Id
|
||
305 | TableIngredients := DBUser.GetTable('SELECT Id FROM Ingredients ORDER BY Id');
|
||
306 | with TableIngredients do |
||
307 | try
|
||
308 | if RowCount > 0 |
||
309 | then
|
||
310 | begin
|
||
311 | MoveLast; |
||
312 | NewId := FieldAsInteger(FieldIndex['Id']) + 1; |
||
313 | end
|
||
314 | else
|
||
315 | NewId := 1;
|
||
316 | finally
|
||
317 | Free; |
||
318 | end;
|
||
319 | // Cr?er la nouvelle mati?re premi?re
|
||
320 | GetLocaleFormatSettings(1033, USFormatSettings);
|
||
321 | DBUser.BeginTransaction; |
||
322 | try
|
||
323 | if PageControlCreation.TabIndex = 0 |
||
324 | then // Copie |
||
325 | DBUser.ExecSQL('INSERT INTO Ingredients (Id, Name, Definition, Class, Model, MS, Bonus) VALUES ('
|
||
326 | + Format('%d, ', [NewId])
|
||
327 | + Format('%s, ', [QuotedStr(NewName)])
|
||
328 | + Format('%s, ', [QuotedStr(NewComment)])
|
||
329 | + Format('%d, ', [ComboBoxClass.ItemIndex + 1]) |
||
330 | + Format('%d, ', [ValidateEditModel.AsInteger])
|
||
331 | + Format('%.15f, ', [InputProximal(ValidateEditMSCopy.AsFloat, 1, 1, ComboBoxMSCopy.ItemIndex)], USFormatSettings) |
||
332 | + '0)')
|
||
333 | else // Cr?ation originale |
||
334 | begin
|
||
335 | DBUser.ExecSQL('INSERT INTO Ingredients (Id, Name, Definition, Class, MS, Bonus) VALUES ('
|
||
336 | + Format('%d, ', [NewId])
|
||
337 | + Format('%s, ', [QuotedStr(NewName)])
|
||
338 | + Format('%s, ', [QuotedStr(NewComment)])
|
||
339 | + Format('%d, ', [ComboBoxClass.ItemIndex + 1]) |
||
340 | + Format('%.15f, ', [RapMS], USFormatSettings)
|
||
341 | + '0)');
|
||
342 | if CheckBoxMM.Checked
|
||
343 | then
|
||
344 | DBUser.ExecSQL('UPDATE Ingredients '
|
||
345 | + Format('SET MM = %.15f ', [InputProximal(ValidateEditMM.AsFloat, RapMS, ComboBoxMM.ItemIndex div 2, ComboBoxMM.ItemIndex mod 2)], USFormatSettings) |
||
346 | + Format('WHERE Id = %d', [NewId]));
|
||
347 | if CheckBoxMAT.Checked
|
||
348 | then
|
||
349 | DBUser.ExecSQL('UPDATE Ingredients '
|
||
350 | + Format('SET MAT = %.15f ', [InputProximal(ValidateEditMAT.AsFloat, RapMS, ComboBoxMAT.ItemIndex div 2, ComboBoxMAT.ItemIndex mod 2)], USFormatSettings) |
||
351 | + Format('WHERE Id = %d', [NewId]));
|
||
352 | if CheckBoxMG.Checked
|
||
353 | then
|
||
354 | DBUser.ExecSQL('UPDATE Ingredients '
|
||
355 | + Format('SET MG = %.15f ', [InputProximal(ValidateEditMG.AsFloat, RapMS, ComboBoxMG.ItemIndex div 2, ComboBoxMG.ItemIndex mod 2)], USFormatSettings) |
||
356 | + Format('WHERE Id = %d', [NewId]));
|
||
357 | if CheckBoxEB.Checked
|
||
358 | then
|
||
359 | DBUser.ExecSQL('UPDATE Ingredients '
|
||
360 | + Format('SET EB = %.15f ', [InputEnergy(ValidateEditEB.AsFloat, RapMS, ComboBoxEB.ItemIndex div 2, ComboBoxEB.ItemIndex mod 2)], USFormatSettings) |
||
361 | + Format('WHERE Id = %d', [NewId]));
|
||
362 | if CheckBoxCB.Checked
|
||
363 | then
|
||
364 | DBUser.ExecSQL('UPDATE Ingredients '
|
||
365 | + Format('SET CB = %.15f ', [InputProximal(ValidateEditCB.AsFloat, RapMS, ComboBoxFibre.ItemIndex div 2, ComboBoxFibre.ItemIndex mod 2)], USFormatSettings) |
||
366 | + Format('WHERE Id = %d', [NewId]));
|
||
367 | if CheckBoxNDF.Checked
|
||
368 | then
|
||
369 | DBUser.ExecSQL('UPDATE Ingredients '
|
||
370 | + Format('SET NDF = %.15f ', [InputProximal(ValidateEditNDF.AsFloat, RapMS, ComboBoxFibre.ItemIndex div 2, ComboBoxFibre.ItemIndex mod 2)], USFormatSettings) |
||
371 | + Format('WHERE Id = %d', [NewId]));
|
||
372 | if CheckBoxADF.Checked
|
||
373 | then
|
||
374 | DBUser.ExecSQL('UPDATE Ingredients '
|
||
375 | + Format('SET ADF = %.15f ', [InputProximal(ValidateEditADF.AsFloat, RapMS, ComboBoxFibre.ItemIndex div 2, ComboBoxFibre.ItemIndex mod 2)], USFormatSettings) |
||
376 | + Format('WHERE Id = %d', [NewId]));
|
||
377 | if CheckBoxAmidon.Checked
|
||
378 | then
|
||
379 | DBUser.ExecSQL('UPDATE Ingredients '
|
||
380 | + Format('SET Amidon = %.15f ', [InputProximal(ValidateEditAmidon.AsFloat, RapMS, ComboBoxAmidon.ItemIndex div 2, ComboBoxAmidon.ItemIndex mod 2)], USFormatSettings) |
||
381 | + Format('WHERE Id = %d', [NewId]));
|
||
382 | if CheckBoxSucres.Checked
|
||
383 | then
|
||
384 | DBUser.ExecSQL('UPDATE Ingredients '
|
||
385 | + Format('SET Sucres = %.15f ', [InputProximal(ValidateEditSucres.AsFloat, RapMS, ComboBoxSucres.ItemIndex div 2, ComboBoxSucres.ItemIndex mod 2)], USFormatSettings) |
||
386 | + Format('WHERE Id = %d', [NewId]));
|
||
387 | end;
|
||
388 | DBUser.Commit; |
||
389 | except
|
||
390 | DBUser.RollBack; |
||
391 | MessageDlg(Format(_('Unknown error: %s %s %s'), ['UnitIngredientCreation', 'ActionOKExecute', 'DBUser (INSERT INTO Ingredients / UPDATE Ingredients)']), mtError, [mbOK], 0); |
||
392 | Exit; |
||
393 | end;
|
||
394 | // Ajouter dans ClientDataSetIngredients
|
||
395 | Application.ProcessMessages; |
||
396 | TableIngredients := DBUser.GetTable('SELECT * FROM Ingredients '
|
||
397 | + Format('WHERE Id = %d', [NewId]));
|
||
398 | ClientDataSetIngredients.Append; |
||
399 | try
|
||
400 | ClientDataSetIngredientsId.Value := NewId; |
||
401 | ClientDataSetIngredientsName.Value := NewName; |
||
402 | ClientDataSetIngredientsDefinition.Value := NewComment; |
||
403 | ClientDataSetIngredientsClass.Value := ComboBoxClass.ItemIndex + 1;
|
||
404 | ClientDataSetIngredientsUser.Value := True; |
||
405 | if PageControlCreation.TabIndex = 0 |
||
406 | then // Copie bas?e sur un mod?le |
||
407 | begin
|
||
408 | ClientDataSetIngredientsModel.Value := ValidateEditModel.AsInteger; |
||
409 | ClientDataSetInraAfz.Locate('Id', ClientDataSetIngredientsModel.Value, []);
|
||
410 | 4 | avalancogn | ClientDataSetIngredientsSource.Value := Format(_('Copy of "%s"'), [dgettext('InraAfz', WideString(ClientDataSetInraAfzName.Value))]); |
411 | 1 | avalancogn | CalcCopy; |
412 | end
|
||
413 | else // Cr?ation originale |
||
414 | begin
|
||
415 | ClientDataSetIngredientsSource.Value := _('Original item');
|
||
416 | CalcOriginal; |
||
417 | end;
|
||
418 | ClientDataSetIngredients.Post; |
||
419 | except
|
||
420 | ClientDataSetIngredients.Cancel; |
||
421 | MessageDlg(Format(_('Unknown error: %s %s %s'), ['UnitIngredientCreation', 'ActionOKExecute', 'ClientDataSetIngredients']), mtError, [mbOK], 0); |
||
422 | Exit; |
||
423 | end;
|
||
424 | TableIngredients.Free; |
||
425 | // Ajouter le nom dans la liste des mati?res premi?res utilisateur
|
||
426 | UserList.Add(NewName); |
||
427 | end;
|
||
428 | ModalResult := mrOk; |
||
429 | end;
|
||
430 | |||
431 | procedure TFormIngredientCreation.ButtonNextClick(Sender: TObject);
|
||
432 | begin
|
||
433 | if ValidateEditMSOriginal.Value = 0 |
||
434 | then
|
||
435 | begin
|
||
436 | MessageDlg(_('You must specify a dry matter value for this ingredient.'), mtError, [mbOK], 0); |
||
437 | ActiveControl := ValidateEditMSOriginal; |
||
438 | end
|
||
439 | else
|
||
440 | begin
|
||
441 | CheckBoxMM.Enabled := True; |
||
442 | ComboBoxMM.Enabled := True; |
||
443 | CheckBoxMAT.Enabled := True; |
||
444 | ComboBoxMAT.Enabled := True; |
||
445 | CheckBoxCB.Enabled := True; |
||
446 | CheckBoxNDF.Enabled := True; |
||
447 | CheckBoxADF.Enabled := True; |
||
448 | ComboBoxFibre.Enabled := True; |
||
449 | CheckBoxMG.Enabled := True; |
||
450 | ComboBoxMG.Enabled := True; |
||
451 | CheckBoxEB.Enabled := True; |
||
452 | ComboBoxEB.Enabled := True; |
||
453 | CheckBoxAmidon.Enabled := True; |
||
454 | ComboBoxAmidon.Enabled := True; |
||
455 | CheckBoxSucres.Enabled := True; |
||
456 | ComboBoxSucres.Enabled := True; |
||
457 | ActiveControl := CheckBoxMM; |
||
458 | ValidateEditMSOriginal.Enabled := False; |
||
459 | ComboBoxMSOriginal.Enabled := False; |
||
460 | ButtonNext.Visible := False; |
||
461 | end;
|
||
462 | end;
|
||
463 | |||
464 | procedure TFormIngredientCreation.CheckBoxADFClick(Sender: TObject);
|
||
465 | begin
|
||
466 | if CheckBoxADF.Checked
|
||
467 | then // Activer la saisie |
||
468 | EditActivate(ValidateEditADF) |
||
469 | else // Valeur inconnue |
||
470 | EditEmpty(ValidateEditADF); |
||
471 | ComboBoxFibreChange(nil);
|
||
472 | end;
|
||
473 | |||
474 | procedure TFormIngredientCreation.CheckBoxAmidonClick(Sender: TObject);
|
||
475 | begin
|
||
476 | if CheckBoxAmidon.Checked
|
||
477 | then // Activer la saisie |
||
478 | EditActivate(ValidateEditAmidon) |
||
479 | else // Valeur inconnue |
||
480 | EditEmpty(ValidateEditAmidon); |
||
481 | ComboBoxAmidonChange(nil);
|
||
482 | end;
|
||
483 | |||
484 | procedure TFormIngredientCreation.CheckBoxCBClick(Sender: TObject);
|
||
485 | begin
|
||
486 | if CheckBoxCB.Checked
|
||
487 | then // Activer la saisie |
||
488 | EditActivate(ValidateEditCB) |
||
489 | else // Valeur inconnue |
||
490 | EditEmpty(ValidateEditCB); |
||
491 | ComboBoxFibreChange(nil);
|
||
492 | end;
|
||
493 | |||
494 | procedure TFormIngredientCreation.CheckBoxEBClick(Sender: TObject);
|
||
495 | begin
|
||
496 | if CheckBoxEB.Checked
|
||
497 | then // Activer la saisie |
||
498 | EditActivate(ValidateEditEB) |
||
499 | else // Valeur inconnue |
||
500 | EditEmpty(ValidateEditEB); |
||
501 | ComboBoxEBChange(nil);
|
||
502 | end;
|
||
503 | |||
504 | procedure TFormIngredientCreation.CheckBoxMATClick(Sender: TObject);
|
||
505 | begin
|
||
506 | if CheckBoxMAT.Checked
|
||
507 | then // Activer la saisie |
||
508 | EditActivate(ValidateEditMAT) |
||
509 | else // Valeur inconnue |
||
510 | EditEmpty(ValidateEditMAT); |
||
511 | ComboBoxMATChange(nil);
|
||
512 | end;
|
||
513 | |||
514 | procedure TFormIngredientCreation.CheckBoxMGClick(Sender: TObject);
|
||
515 | begin
|
||
516 | if CheckBoxMG.Checked
|
||
517 | then // Activer la saisie |
||
518 | EditActivate(ValidateEditMG) |
||
519 | else // Valeur inconnue |
||
520 | EditEmpty(ValidateEditMG); |
||
521 | ComboBoxMGChange(nil);
|
||
522 | end;
|
||
523 | |||
524 | procedure TFormIngredientCreation.CheckBoxMMClick(Sender: TObject);
|
||
525 | begin
|
||
526 | if CheckBoxMM.Checked
|
||
527 | then // Activer la saisie |
||
528 | EditActivate(ValidateEditMM) |
||
529 | else // Valeur inconnue |
||
530 | EditEmpty(ValidateEditMM); |
||
531 | ComboBoxMMChange(nil);
|
||
532 | end;
|
||
533 | |||
534 | procedure TFormIngredientCreation.CheckBoxNDFClick(Sender: TObject);
|
||
535 | begin
|
||
536 | if CheckBoxNDF.Checked
|
||
537 | then // Activer la saisie |
||
538 | EditActivate(ValidateEditNDF) |
||
539 | else // Valeur inconnue |
||
540 | EditEmpty(ValidateEditNDF); |
||
541 | ComboBoxFibreChange(nil);
|
||
542 | end;
|
||
543 | |||
544 | procedure TFormIngredientCreation.CheckBoxSucresClick(Sender: TObject);
|
||
545 | begin
|
||
546 | if CheckBoxSucres.Checked
|
||
547 | then // Activer la saisie |
||
548 | EditActivate(ValidateEditSucres) |
||
549 | else // Valeur inconnue |
||
550 | EditEmpty(ValidateEditSucres); |
||
551 | ComboBoxSucresChange(nil);
|
||
552 | end;
|
||
553 | |||
554 | procedure TFormIngredientCreation.ComboBoxAmidonChange(Sender: TObject);
|
||
555 | begin
|
||
556 | if ComboBoxAmidon.ItemIndex mod 2 = 0 |
||
557 | then // % |
||
558 | begin
|
||
559 | ValidateEditAmidon.DecimalPlaces := 2;
|
||
560 | ValidateEditAmidon.MaxValue := 100;
|
||
561 | end
|
||
562 | else // g/kg |
||
563 | begin
|
||
564 | ValidateEditAmidon.DecimalPlaces := 1;
|
||
565 | ValidateEditAmidon.MaxValue := 1000;
|
||
566 | end;
|
||
567 | end;
|
||
568 | |||
569 | procedure TFormIngredientCreation.ComboBoxClassChange(Sender: TObject);
|
||
570 | var
|
||
571 | Model: String;
|
||
572 | begin
|
||
573 | ModelList.Clear; |
||
574 | with DataModuleDeclaration do |
||
575 | begin
|
||
576 | ClientDataSetInraAfz.Filtered := False; |
||
577 | if ComboBoxClass.ItemIndex <> -1 |
||
578 | then
|
||
579 | begin
|
||
580 | ClientDataSetInraAfz.Filter := Format('Class = %d', [ComboBoxClass.ItemIndex + 1]); |
||
581 | ClientDataSetInraAfz.Filtered := True; |
||
582 | end;
|
||
583 | ClientDataSetInraAfz.First; |
||
584 | while not ClientDataSetInraAfz.Eof do |
||
585 | begin
|
||
586 | 4 | avalancogn | ModelList.Add(dgettext('InraAfz', WideString(ClientDataSetInraAfzName.Value)));
|
587 | 1 | avalancogn | ClientDataSetInraAfz.Next; |
588 | end;
|
||
589 | end;
|
||
590 | Model := ComboBoxModel.Text; |
||
591 | ComboBoxModel.Clear; |
||
592 | ComboBoxModel.Items.Assign(ModelList); |
||
593 | ComboBoxModel.ItemIndex := ComboBoxModel.Items.IndexOf(Model); |
||
594 | end;
|
||
595 | |||
596 | procedure TFormIngredientCreation.ComboBoxEBChange(Sender: TObject);
|
||
597 | begin
|
||
598 | if ComboBoxEB.ItemIndex mod 2 = 0 |
||
599 | then // MJ/kg |
||
600 | ValidateEditEB.DecimalPlaces := 2
|
||
601 | else // kcal/kg |
||
602 | ValidateEditEB.DecimalPlaces := 0;
|
||
603 | end;
|
||
604 | |||
605 | procedure TFormIngredientCreation.ComboBoxFibreChange(Sender: TObject);
|
||
606 | begin
|
||
607 | if ComboBoxFibre.ItemIndex mod 2 = 0 |
||
608 | then // % |
||
609 | begin
|
||
610 | ValidateEditCB.DecimalPlaces := 2;
|
||
611 | ValidateEditNDF.DecimalPlaces := 2;
|
||
612 | ValidateEditADF.DecimalPlaces := 2;
|
||
613 | ValidateEditCB.MaxValue := 100;
|
||
614 | ValidateEditNDF.MaxValue := 100;
|
||
615 | ValidateEditADF.MaxValue := 100;
|
||
616 | end
|
||
617 | else // g/kg |
||
618 | begin
|
||
619 | ValidateEditCB.DecimalPlaces := 1;
|
||
620 | ValidateEditNDF.DecimalPlaces := 1;
|
||
621 | ValidateEditADF.DecimalPlaces := 1;
|
||
622 | ValidateEditCB.MaxValue := 1000;
|
||
623 | ValidateEditNDF.MaxValue := 1000;
|
||
624 | ValidateEditADF.MaxValue := 1000;
|
||
625 | end;
|
||
626 | end;
|
||
627 | |||
628 | procedure TFormIngredientCreation.ComboBoxMATChange(Sender: TObject);
|
||
629 | begin
|
||
630 | if ComboBoxMAT.ItemIndex mod 2 = 0 |
||
631 | then // % |
||
632 | begin
|
||
633 | ValidateEditMAT.DecimalPlaces := 2;
|
||
634 | ValidateEditMAT.MaxValue := 100;
|
||
635 | end
|
||
636 | else // g/kg |
||
637 | begin
|
||
638 | ValidateEditMAT.DecimalPlaces := 1;
|
||
639 | ValidateEditMAT.MaxValue := 1000;
|
||
640 | end;
|
||
641 | end;
|
||
642 | |||
643 | procedure TFormIngredientCreation.ComboBoxMGChange(Sender: TObject);
|
||
644 | begin
|
||
645 | if ComboBoxMG.ItemIndex mod 2 = 0 |
||
646 | then // % |
||
647 | begin
|
||
648 | ValidateEditMG.DecimalPlaces := 2;
|
||
649 | ValidateEditMG.MaxValue := 100;
|
||
650 | end
|
||
651 | else // g/kg |
||
652 | begin
|
||
653 | ValidateEditMG.DecimalPlaces := 1;
|
||
654 | ValidateEditMG.MaxValue := 1000;
|
||
655 | end;
|
||
656 | end;
|
||
657 | |||
658 | procedure TFormIngredientCreation.ComboBoxMMChange(Sender: TObject);
|
||
659 | begin
|
||
660 | if ComboBoxMM.ItemIndex mod 2 = 0 |
||
661 | then // % |
||
662 | begin
|
||
663 | ValidateEditMM.DecimalPlaces := 2;
|
||
664 | ValidateEditMM.MaxValue := 100;
|
||
665 | end
|
||
666 | else // g/kg |
||
667 | begin
|
||
668 | ValidateEditMM.DecimalPlaces := 1;
|
||
669 | ValidateEditMM.MaxValue := 1000;
|
||
670 | end;
|
||
671 | end;
|
||
672 | |||
673 | procedure TFormIngredientCreation.ComboBoxModelChange(Sender: TObject);
|
||
674 | begin
|
||
675 | if ComboBoxModel.ItemIndex <> -1 |
||
676 | then
|
||
677 | with DataModuleDeclaration do |
||
678 | begin
|
||
679 | ClientDataSetInraAfz.RecNo := ModelList.IndexOf(ComboBoxModel.Text) + 1;
|
||
680 | ValidateEditModel.AsInteger := ClientDataSetInraAfzId.Value; |
||
681 | ValidateEditMSCopy.AsFloat := OutputProximal(ClientDataSetInraAfzMS.Value, 1, 1, FormOptions.Proximal); |
||
682 | ComboBoxClass.ItemIndex := ClientDataSetInraAfzClass.Value - 1;
|
||
683 | ComboBoxClassChange(nil);
|
||
684 | end;
|
||
685 | end;
|
||
686 | |||
687 | procedure TFormIngredientCreation.ComboBoxMSCopyChange(Sender: TObject);
|
||
688 | begin
|
||
689 | if ComboBoxMSCopy.ItemIndex = 0 |
||
690 | then // % |
||
691 | begin
|
||
692 | ValidateEditMSCopy.DecimalPlaces := 2;
|
||
693 | ValidateEditMSCopy.MaxValue := 100;
|
||
694 | end
|
||
695 | else // g/kg |
||
696 | begin
|
||
697 | ValidateEditMSCopy.DecimalPlaces := 1;
|
||
698 | ValidateEditMSCopy.MaxValue := 1000;
|
||
699 | end;
|
||
700 | end;
|
||
701 | |||
702 | procedure TFormIngredientCreation.ComboBoxMSOriginalChange(Sender: TObject);
|
||
703 | begin
|
||
704 | if ComboBoxMSOriginal.ItemIndex = 0 |
||
705 | then // % |
||
706 | begin
|
||
707 | ValidateEditMSOriginal.DecimalPlaces := 2;
|
||
708 | ValidateEditMSOriginal.MaxValue := 100;
|
||
709 | end
|
||
710 | else // g/kg |
||
711 | begin
|
||
712 | ValidateEditMSOriginal.DecimalPlaces := 1;
|
||
713 | ValidateEditMSOriginal.MaxValue := 1000;
|
||
714 | end;
|
||
715 | end;
|
||
716 | |||
717 | procedure TFormIngredientCreation.ComboBoxSucresChange(Sender: TObject);
|
||
718 | begin
|
||
719 | if ComboBoxSucres.ItemIndex mod 2 = 0 |
||
720 | then // % |
||
721 | begin
|
||
722 | ValidateEditSucres.DecimalPlaces := 2;
|
||
723 | ValidateEditSucres.MaxValue := 100;
|
||
724 | end
|
||
725 | else // g/kg |
||
726 | begin
|
||
727 | ValidateEditSucres.DecimalPlaces := 1;
|
||
728 | ValidateEditSucres.MaxValue := 1000;
|
||
729 | end;
|
||
730 | end;
|
||
731 | |||
732 | procedure TFormIngredientCreation.EditActivate(Edit: TJvValidateEdit);
|
||
733 | begin
|
||
734 | Edit.DisplayFormat := dfFloat; |
||
735 | Edit.Enabled := True; |
||
736 | ActiveControl := Edit; |
||
737 | Edit.SelectAll; |
||
738 | end;
|
||
739 | |||
740 | procedure TFormIngredientCreation.EditEmpty(Edit: TJvValidateEdit);
|
||
741 | begin
|
||
742 | Edit.DisplayFormat := dfNone; |
||
743 | Edit.Value := '';
|
||
744 | Edit.Enabled := False; |
||
745 | end;
|
||
746 | |||
747 | procedure TFormIngredientCreation.FormCreate(Sender: TObject);
|
||
748 | var
|
||
749 | i: Integer; |
||
750 | begin
|
||
751 | if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1 |
||
752 | then
|
||
753 | Font.Name := 'Arial Unicode MS';
|
||
754 | // PanelButtons.Font.Size := PanelButtons.Font.Size + 2;
|
||
755 | PanelButtons.Font.Style := [fsBold]; |
||
756 | LabelName.Font.Style := [fsBold]; |
||
757 | EditName.Font.Style := [fsBold]; |
||
758 | LabelMSCopyWarning.Font.Color := clRed; |
||
759 | LabelMSOriginalWarning.Font.Color := clRed; |
||
760 | TranslateComponent(Self); |
||
761 | ComboBoxMSCopy.ItemIndex := FormOptions.Proximal; |
||
762 | ComboBoxMSCopyChange(nil);
|
||
763 | ComboBoxMSOriginal.ItemIndex := FormOptions.Proximal; |
||
764 | ComboBoxMSOriginalChange(nil);
|
||
765 | for i := 0 to FormOptions.ComboBoxProximal.Items.Count - 1 do |
||
766 | ComboBoxMM.Items.Add(Format('%s %s', [FormOptions.ComboBoxProximal.Items[i], _('DM')])); |
||
767 | ComboBoxMM.ItemIndex := FormOptions.Proximal + 2 * FormOptions.Expression;
|
||
768 | ComboBoxMMChange(nil);
|
||
769 | for i := 0 to FormOptions.ComboBoxProximal.Items.Count - 1 do |
||
770 | ComboBoxMAT.Items.Add(Format('%s %s', [FormOptions.ComboBoxProximal.Items[i], _('DM')])); |
||
771 | ComboBoxMAT.ItemIndex := FormOptions.Proximal + 2 * FormOptions.Expression;
|
||
772 | ComboBoxMATChange(nil);
|
||
773 | for i := 0 to FormOptions.ComboBoxProximal.Items.Count - 1 do |
||
774 | ComboBoxMG.Items.Add(Format('%s %s', [FormOptions.ComboBoxProximal.Items[i], _('DM')])); |
||
775 | ComboBoxMG.ItemIndex := FormOptions.Proximal + 2 * FormOptions.Expression;
|
||
776 | ComboBoxMGChange(nil);
|
||
777 | for i := 0 to FormOptions.ComboBoxEnergy.Items.Count - 1 do |
||
778 | ComboBoxEB.Items.Add(Format('%s %s', [FormOptions.ComboBoxEnergy.Items[i], _('DM')])); |
||
779 | ComboBoxEB.ItemIndex := FormOptions.Energy + 2 * FormOptions.Expression;
|
||
780 | ComboBoxEBChange(nil);
|
||
781 | for i := 0 to FormOptions.ComboBoxProximal.Items.Count - 1 do |
||
782 | ComboBoxFibre.Items.Add(Format('%s %s', [FormOptions.ComboBoxProximal.Items[i], _('DM')])); |
||
783 | ComboBoxFibre.ItemIndex := FormOptions.Proximal + 2 * FormOptions.Expression;
|
||
784 | ComboBoxFibreChange(nil);
|
||
785 | for i := 0 to FormOptions.ComboBoxProximal.Items.Count - 1 do |
||
786 | ComboBoxAmidon.Items.Add(Format('%s %s', [FormOptions.ComboBoxProximal.Items[i], _('DM')])); |
||
787 | ComboBoxAmidon.ItemIndex := FormOptions.Proximal + 2 * FormOptions.Expression;
|
||
788 | ComboBoxAmidonChange(nil);
|
||
789 | for i := 0 to FormOptions.ComboBoxProximal.Items.Count - 1 do |
||
790 | ComboBoxSucres.Items.Add(Format('%s %s', [FormOptions.ComboBoxProximal.Items[i], _('DM')])); |
||
791 | ComboBoxSucres.ItemIndex := FormOptions.Proximal + 2 * FormOptions.Expression;
|
||
792 | ComboBoxSucresChange(nil);
|
||
793 | ModelList := TStringList.Create; |
||
794 | with DataModuleDeclaration do |
||
795 | begin
|
||
796 | // Classes
|
||
797 | ClientDataSetClasses.First; |
||
798 | while not ClientDataSetClasses.Eof do |
||
799 | begin
|
||
800 | ComboBoxClass.Items.Add(ClientDataSetClassesName.Value); |
||
801 | ClientDataSetClasses.Next; |
||
802 | end;
|
||
803 | ComboBoxClassChange(nil); // Contruction de la liste des mod?les |
||
804 | // Mod?le
|
||
805 | if not ClientDataSetIngredientsUser.Value |
||
806 | then // Pr?s?lectionner l'enregistrement courant |
||
807 | begin
|
||
808 | ComboBoxModel.ItemIndex := ComboBoxModel.Items.IndexOf(ClientDataSetIngredientsName.Value); |
||
809 | ComboBoxModelChange(nil);
|
||
810 | end;
|
||
811 | end;
|
||
812 | PageControlCreation.TabIndex := 0;
|
||
813 | ActiveControl := EditName; |
||
814 | end;
|
||
815 | |||
816 | procedure TFormIngredientCreation.FormDestroy(Sender: TObject);
|
||
817 | begin
|
||
818 | with DataModuleDeclaration do |
||
819 | ClientDataSetInraAfz.Filtered := False; |
||
820 | end;
|
||
821 | |||
822 | procedure TFormIngredientCreation.NumEditKeyDown(Sender: TObject;
|
||
823 | var Key: Word; Shift: TShiftState);
|
||
824 | begin
|
||
825 | // D?tection de l'appui sur le s?parateur d?cimal du pav? num?rique
|
||
826 | VK_Separator := (Key = VK_DECIMAL); |
||
827 | end;
|
||
828 | |||
829 | procedure TFormIngredientCreation.NumEditKeyPress(Sender: TObject;
|
||
830 | var Key: Char);
|
||
831 | begin
|
||
832 | if VK_Separator then |
||
833 | // Renvoyer le s?parateur d?cimal des options r?gionales et linguistiques
|
||
834 | Key := DecimalSeparator; |
||
835 | end;
|
||
836 | |||
837 | end. |