//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Weld_Param.h"
#include "Data_Gen.h"
#include "message.h"
#include "String_doubleUnit.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TWeld_ParamForm *Weld_ParamForm;

WELD_PARAM_UNIT  *Weld_unit;

extern MATER MaterProp[MAX_MATERIAL];
extern int Material_Number;
//extern int Material_Supp;


//---------------------------------------------------------------------------
__fastcall TWeld_ParamForm::TWeld_ParamForm(TComponent* Owner)
        : TForm(Owner)
{
   index_vid_svarki = 0;
}
//---------------------------------------------------------------------------

void __fastcall TWeld_ParamForm::FormShow(TObject *Sender)
{
  //
  Label_Run->Caption = "Run для стали "+ (AnsiString)MaterProp[Material_Number].title;
  Edit_Run->Text = FloatToStrF(MaterProp[Material_Number].Ru, ffFixed, 15, 0);
  Edit_Rwz->Text = FloatToStrF(0.45*MaterProp[Material_Number].Ru, ffFixed, 15, 0);
  Edit_Rwy->Text = FloatToStrF(0.85*MaterProp[Material_Number].Ry, ffFixed, 15, 1);
  if (Weld_unit->flag_weld) {
     LabeledEdit_Rwf->Text = FloatToStr(Weld_unit->Rwf);
     LabeledEdit_beta_f->Text = FloatToStr(Weld_unit->beta_f);
     LabeledEdit_beta_z->Text = FloatToStr(Weld_unit->beta_z);
     LabeledEdit_gamma_wf->Text = FloatToStr(Weld_unit->gamma_wf);
     LabeledEdit_gamma_wz->Text = FloatToStr(Weld_unit->gamma_wz);
  }
  else {
     LabeledEdit_Rwf->Text = "215";
     LabeledEdit_beta_f->Text = "0.7";
     LabeledEdit_beta_z->Text = "1.0";
     LabeledEdit_gamma_wf->Text = "1.0";
     LabeledEdit_gamma_wz->Text = "1.0";
  }
  RadioGroupVidSvarki->ItemIndex = index_vid_svarki;
}
//---------------------------------------------------------------------------
void __fastcall TWeld_ParamForm::WeldParam(short vid_svarki)
{
    index_vid_svarki = vid_svarki;
    ShowModal();
}
//---------------------------------------------------------------------------
double __fastcall TWeld_ParamForm::GetParam()
{
    return index_vid_svarki;
}
//---------------------------------------------------------------------------
// Получить Rwz
double Get_Rwz(int n_Mater) {
  return 0.45*MaterProp[n_Mater].Ru;
}
//---------------------------------------------------------------------------
// Получить Rwy
double Get_Rwy(int n_Mater) {
  return 0.85*MaterProp[n_Mater].Ry;
}
//---------------------------------------------------------------------------
// Принять
void __fastcall TWeld_ParamForm::BitBtn_AcceptClick(TObject *Sender)
{
   int rc;
   rc = String_double_zero_plus(LabeledEdit_Rwf->EditLabel->Caption, LabeledEdit_Rwf->Text, &(Weld_unit->Rwf));
   if (rc>0) return;
   rc = String_double_zero_plus(Label_Rwz->Caption, Edit_Rwz->Text, &(Weld_unit->Rwz));
   if (rc>0) return;
   rc = String_double_zero_plus(LabeledEdit_beta_f->EditLabel->Caption, LabeledEdit_beta_f->Text, &(Weld_unit->beta_f));
   if (rc>0) return;
   rc = String_double_zero_plus(LabeledEdit_beta_z->EditLabel->Caption, LabeledEdit_beta_z->Text, &(Weld_unit->beta_z));
   if (rc>0) return;
   rc = String_double_zero_plus(LabeledEdit_gamma_wf->EditLabel->Caption, LabeledEdit_gamma_wf->Text, &(Weld_unit->gamma_wf));
   if (rc>0) return;
   rc = String_double_zero_plus(LabeledEdit_gamma_wz->EditLabel->Caption, LabeledEdit_gamma_wz->Text, &(Weld_unit->gamma_wz));
   if (rc>0) return;
   rc = String_double_zero_plus(Label_Rwy->Caption, Edit_Rwy->Text, &(Weld_unit->Rwy));
   if (rc>0) return;
   if (Weld_unit->Rwf >340 || Weld_unit->Rwf <180  ) {
	  rc = ApplicationMessageBox("Заданное расчетное сопротивление шва срезу Rwf выходит за допустимые границы (180-340 МПа)",
               " ", MB_OK | MB_ICONERROR);;
          return;

   }
   if (Weld_unit->Rwz >340 || Weld_unit->Rwz <140  ) {
	  rc = ApplicationMessageBox("Заданное расчетное сопротивление шва срезу Rwz выходит за допустимые границы (140-340 МПа)",
               " ", MB_OK | MB_ICONERROR);;
          return;

   }
   if (Weld_unit->Rwy > MaterProp[Material_Number].Ry || Weld_unit->Rwy < 0.84*MaterProp[Material_Number].Ry  ) {
	  rc = ApplicationMessageBox("Заданное расчетное сопротивление стыковых соединений растяжению... Rwy выходит за допустимые границы МПа)",
               " ", MB_OK | MB_ICONERROR);;
          return;

   }
   if (Weld_unit->beta_f >1.1 || Weld_unit->beta_f <0.7  ) {
	  rc = ApplicationMessageBox("Заданный коэффициент beta_f выходит за допустимые границы (0.7-1.0)",
               " ", MB_OK | MB_ICONERROR);;
          return;

   }
   if (Weld_unit->beta_z >1.15 || Weld_unit->beta_z <1.0  ) {
	  rc = ApplicationMessageBox("Заданный коэффициент beta_f выходит за допустимые границы (1.0-1.15)",
               " ", MB_OK | MB_ICONERROR);;
          return;

   }
   if (Weld_unit->gamma_wf >1.0 || Weld_unit->gamma_wf <0.9  ) {
	  rc = ApplicationMessageBox("Заданный коэффициент gamma_wf выходит за допустимые границы (0.9-1.0)",
               " ", MB_OK | MB_ICONERROR);;
          return;

   }
   if (Weld_unit->gamma_wz >1.0 || Weld_unit->gamma_wz <0.9  ) {
	  rc = ApplicationMessageBox("Заданный коэффициент gamma_wz выходит за допустимые границы (0.9-1.0)",
               " ", MB_OK | MB_ICONERROR);;
          return;

   }
   Weld_unit->Rws = 0.58*MaterProp[Material_Number].Ry;  // = Rs
   Weld_unit->flag_weld = true;
   index_vid_svarki = RadioGroupVidSvarki->ItemIndex;

   Close();
   return;
}
//-------------------------------------------------------------------------
//
void __fastcall TWeld_ParamForm::BitBtn_ExitClick(TObject *Sender)
{
   Close();
}
//---------------------------------------------------------------------------

