expertcad/SRC/SCSNormBase/U_MakeEditObjCurrency.pas
2025-05-12 10:07:51 +03:00

236 lines
6.7 KiB
ObjectPascal
Raw Blame History

unit U_MakeEditObjCurrency;
interface
uses
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RzCmboBx, RzRadChk, siComp, siLngLnk, RzButton,
RzEdit, Mask, RzSpnEdt, ExtCtrls, RzPanel,
U_BaseCommon, U_BaseConstants, Buttons;
type
TF_MakeEditObjCurrency = class(TForm)
RzGroupBox1: TRzGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
seKolvo: TRzSpinEdit;
neRatio: TRzNumericEdit;
RzGroupBox2: TRzGroupBox;
btOk: TRzBitBtn;
btCancel: TRzBitBtn;
lng_Forms: TsiLangLinked;
RzGroupBox3: TRzGroupBox;
rbSimple: TRzRadioButton;
rbMain: TRzRadioButton;
rbSecond: TRzRadioButton;
cbName: TRzComboBox;
cbNameBrief: TRzComboBox;
btChoiceCurrencyName: TSpeedButton;
btChoiceCurrencyNameBrief: TSpeedButton;
procedure btChoiceCurrencyNameClick(Sender: TObject);
procedure btChoiceCurrencyNameBriefClick(Sender: TObject);
procedure cbNameChange(Sender: TObject);
procedure cbNameBriefChange(Sender: TObject);
procedure btOkClick(Sender: TObject);
procedure neRatioChange(Sender: TObject);
private
GForm: TForm;
FFormMode: TFormMode;
FChangedRatio: Boolean;
procedure ChangeComboItemByOtherCombo(ATrgCombo, AOtherCombo: TRzComboBox);
procedure LoadCurrencyFromForm(ATrgCombo, AOtherCombo: TRzComboBox);
public
Constructor Create(AOwner: TComponent; AForm: TForm);
Destructor Destroy; override;
function Execute(AMakeEdit: TMakeEdit; AObjectCurrency: PObjectCurrencyRel): Boolean;
end;
//var
// F_MakeEditObjCurrency: TF_MakeEditObjCurrency;
implementation
Uses Unit_DM_SCS, U_Main;
{$R *.dfm}
{ TForm1 }
constructor TF_MakeEditObjCurrency.Create(AOwner: TComponent; AForm: TForm);
begin
GForm := AForm;
inherited Create(AOwner);
// Tolik 01/11/2019 --
seKolvo.Max := 10000000000;
seKolvo.Min := 0;
//
end;
destructor TF_MakeEditObjCurrency.Destroy;
begin
inherited;
end;
function TF_MakeEditObjCurrency.Execute(AMakeEdit: TMakeEdit; AObjectCurrency: PObjectCurrencyRel): Boolean;
begin
Result := false;
Caption := '';
rbSimple.Enabled := true;
rbSimple.Checked := false;
rbMain.Enabled := true;
rbMain.Checked := false;
rbSecond.Enabled := true;
rbSecond.Checked := false;
FFormMode := fmMake;
FChangedRatio := false;
case AMakeEdit of
meMake:
begin
FFormMode := fmMake;
Caption := cMakeEditObjCurrency_Msg1_1;
FillComboBoxRz(cbName, F_NormBase, true, tnCurrency, fnID, fnName, '', -1);
FillComboBoxRz(cbNameBrief, F_NormBase, true, tnCurrency, fnID, fnNameBrief, '', -1);
seKolvo.Value := 100;
neRatio.Value := 0.1;
rbSimple.Checked := true;
FChangedRatio := true;
end;
meEdit:
begin
FFormMode := fmEdit;
Caption := cMakeEditObjCurrency_Msg1_2;
FillComboBoxRz(cbName, F_NormBase, false, tnCurrency, fnID, fnName, '', AObjectCurrency.IDCurrency);
FillComboBoxRz(cbNameBrief, F_NormBase, false, tnCurrency, fnID, fnNameBrief, '', AObjectCurrency.IDCurrency);
seKolvo.Value := AObjectCurrency.Data.Kolvo;
neRatio.OnChange := nil;
try
neRatio.Value := Round3(AObjectCurrency.Data.Ratio);
finally
neRatio.OnChange := neRatioChange;
end;
if AObjectCurrency.Data.Main = ctSimple then
rbSimple.Checked := true
else
if AObjectCurrency.Data.Main = ctMain then
begin
rbMain.Checked := true;
rbSimple.Enabled := false;
//rbSecond.Enabled := false;
end
else
if AObjectCurrency.Data.Main = ctSecond then
begin
rbSecond.Checked := true;
//rbMain.Enabled := false;
rbSimple.Enabled := false;
end;
end;
end;
if ShowModal = mrOk then
begin
Result := true;
AObjectCurrency.IDCurrency := GetIDFromComboBoxRz(cbName);
AObjectCurrency.Data.Name := cbName.Text;
AObjectCurrency.Data.NameBrief := cbNameBrief.Text;
AObjectCurrency.Data.Kolvo := Trunc(seKolvo.Value);
if FChangedRatio then
AObjectCurrency.Data.Ratio := Round3(neRatio.Value);
if rbSimple.Checked then
AObjectCurrency.Data.Main := ctSimple
else
if rbMain.Checked then
AObjectCurrency.Data.Main := ctMain
else
if rbSecond.Checked then
AObjectCurrency.Data.Main := ctSecond;
Result := true;
end;
end;
procedure TF_MakeEditObjCurrency.ChangeComboItemByOtherCombo(ATrgCombo, AOtherCombo: TRzComboBox);
var
SavedOnChange: TNotifyEvent;
begin
try
SavedOnChange := ATrgCombo.OnChange;
try
ATrgCombo.OnChange := nil;
SelectItemByIDinComboRz(ATrgCombo, GetIDFromComboBoxRz(AOtherCombo));
finally
ATrgCombo.OnChange := SavedOnChange;
end;
except
on E: Exception do AddExceptionToLogEx('TF_MakeEditObjCurrency.ChangeComboItemByOtherCombo', E.Message);
end;
end;
procedure TF_MakeEditObjCurrency.LoadCurrencyFromForm(ATrgCombo, AOtherCombo: TRzComboBox);
var
IDTrgCombo: Integer;
CanEmptyLine: Boolean;
begin
try
CanEmptyLine := (FFormMode = fmMake);
IDTrgCombo := F_NormBase.DM.GetCurrencyIDFromGuide(GetIDFromComboBoxRz(ATrgCombo), FFormMode);
//*** <20><><EFBFBD><EFBFBD> IDTrgCombo = -1, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FillComboBoxRz(ATrgCombo, F_NormBase, CanEmptyLine, tnCurrency, fnID, fnName, '', IDTrgCombo);
FillComboBoxRz(AOtherCombo, F_NormBase, CanEmptyLine, tnCurrency, fnID, fnNameBrief, '', IDTrgCombo);
except
on E: Exception do AddExceptionToLog('TF_MakeEditObjCurrency.LoadCurrencyFromForm: '+E.Message);
end;
end;
procedure TF_MakeEditObjCurrency.btChoiceCurrencyNameClick(
Sender: TObject);
begin
LoadCurrencyFromForm(cbName, cbNameBrief);
end;
procedure TF_MakeEditObjCurrency.btChoiceCurrencyNameBriefClick(
Sender: TObject);
begin
LoadCurrencyFromForm(cbNameBrief, cbName);
end;
procedure TF_MakeEditObjCurrency.cbNameChange(Sender: TObject);
begin
ChangeComboItemByOtherCombo(cbNameBrief, cbName);
end;
procedure TF_MakeEditObjCurrency.cbNameBriefChange(Sender: TObject);
begin
ChangeComboItemByOtherCombo(cbName, cbNameBrief);
end;
procedure TF_MakeEditObjCurrency.btOkClick(Sender: TObject);
begin
if GetIDFromComboBoxRz(cbName) = 0 then
begin
ModalResult := mrNone;
MessageModal(cMakeEditObjCurrency_Msg2, Caption, MB_ICONINFORMATION or MB_OK);
end;
end;
procedure TF_MakeEditObjCurrency.neRatioChange(Sender: TObject);
begin
FChangedRatio := true;
end;
end.