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

#include <vcl.h>
#include <math.h>
#pragma hdrstop
//С уклоном полок по ГОСТ 8239-89
//Нормальный(Б) по ГОСТ 26020-83
//Дополнительной серии(Д) по ГОСТ 26020-83
//Широкополочный по ГОСТ 26020-83
//Колонный(К) по ГОСТ 26020-83

#include "SectSelectCom_Param.h"
#include "Data_Gen.h"
#include "ListConst.h"
#include "StandartProfil.h"
#include "ProcExt.h"
#include "Point_dvutavr.h"
#include "Draw3D_beam.h"


#define COLOR clMedGray
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TSectSelectCom_ParamFrame *SectSelectCom_ParamFrame;
//extern int index_choice[MAX_ADD_SECT];
//extern COM_RAMA Common_rama;


extern bool flag_sect_change; // флаг изменения параметров сечения
extern int  Type_sect;   // Тип сечения - Двутавр, труба или тавр
extern COMMON_SECT *common_sect;
extern bool flag_image;

#ifdef EMBRAC
static String text, header;
#else
static AnsiString text, header;
#endif
static TStandartProfil StandartProfil;


//---------------------------------------------------------------------------
__fastcall TSectSelectCom_ParamFrame::TSectSelectCom_ParamFrame(TComponent* Owner)
        : TFrame(Owner)
{
     Check_Original();
	 StringGrid_B->Cells[0][0]="h, мм";
	 StringGrid_B->Cells[0][1]="bf, мм";
	 StringGrid_B->Cells[0][2]="tw, мм";
	 StringGrid_B->Cells[0][3]="tf, мм";
	 StringGrid_B->Cells[0][4]="A, cм2";
	 StringGrid_B->Cells[0][5]="Iy, cм4";
	 StringGrid_B->Cells[0][6]="iy, мм";
	 StringGrid_B->Cells[0][7]="z0, мм";

	 StringGrid_Tube->Cells[0][0]="h, мм";
	 StringGrid_Tube->Cells[0][1]="b, мм";
	 StringGrid_Tube->Cells[0][2]="t, мм";
	 StringGrid_Tube->Cells[0][3]="A, cм2";
	 StringGrid_Tube->Cells[0][4]="Iy, cм4";
	 StringGrid_Tube->Cells[0][5]="Iz, см4";

	 StringGrid_Cyl->Cells[0][0]="D, мм";
	 StringGrid_Cyl->Cells[0][1]="t, мм";
	 StringGrid_Cyl->Cells[0][2]="A, cм2";
	 StringGrid_Cyl->Cells[0][3]="Iy, cм4";
	 StringGrid_Cyl->Cells[0][4]="Wy, см3";

	 StringGrid_Tavr->Cells[0][0]="h, мм";
	 StringGrid_Tavr->Cells[0][1]="bf, мм";
	 StringGrid_Tavr->Cells[0][2]="tw, мм";
	 StringGrid_Tavr->Cells[0][3]="tf, мм";
	 StringGrid_Tavr->Cells[0][4]="A, cм2";
	 StringGrid_Tavr->Cells[0][5]="Iy, cм4";
	 StringGrid_Tavr->Cells[0][6]="iy, мм";
	 StringGrid_Tavr->Cells[0][7]="z0, мм";

}
//---------------------------------------------------------------------------
//-------------------------------------------------------------------------
//---------------------------------------------------------------
// Заполнение списка профилей
void __fastcall TSectSelectCom_ParamFrame::Write_sect(TObject *Sender) {
   int i, n_profil;
   AnsiString* NameProfil;
   bool flag_concl;
	   // Заполнить список типов профилей - Двутавр, труба, и т.д.
		FillComboBox1(Sender);
		ComboBox_TypeSect->ItemIndex = MIN(ComboBox_TypeSect->Items->Count - 1, Type_sect);

		TabSheet_StandTube->TabVisible = false;
		TabSheet_CYL->TabVisible = false;
		TabSheet_TavrStandart->TabVisible = false;


		switch (Type_sect) {
		case DVUTAVR:
		flag_concl = common_sect->dvutavr.flag_concl;
		if (common_sect->dvutavr.flag_concl) {
		  if (common_sect->dvutavr.n_group < 0) {
			 ;
		  }
		  else {
			StandartProfil.SetProfil(common_sect->dvutavr.n_group);
		 // Установить тип стандартного сечения
			if (index_GOST_or_TU == typeGOST_G57837_B) {
			   RadioGroupGOST57837->ItemIndex = common_sect->dvutavr.n_group - index_GOST_or_TU;
			   RadioGroupGOST57837Click(Sender);
			}
			else {
			   RadioGroup_TU->ItemIndex = common_sect->dvutavr.n_group - index_GOST_or_TU;
			   RadioGroup_TUClick(Sender);
			}
			//Change_type_sect(common_sect->dvutavr.n_group, Sender);
		 // Получить вектор имен профилей и длину вектора
			NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);
			ComboBox_profil->Items->Clear();
			for (i=0; i<n_profil; i++) {
			  ComboBox_profil->Items->Add(NameProfil[i]);
			}
			ComboBox_profil->ItemIndex = common_sect->dvutavr.n_profil;
			ComboBox_profilChange(Sender);
		  }
		}
		else {
		  if (common_sect->dvutavr.n_group < 0) {
			TabSheet_Standart->TabVisible = false;
		  }
		  else {
			TabSheet_Standart->TabVisible = true;
		  }
		}
		break;
		case TAVR:
		case TAVR_UP:
		case TAVR_DOWN:
		  flag_concl = common_sect->tavr.flag_concl;
		  if (common_sect->tavr.flag_concl) {
		 // Установить тип стандартного сечения
			if (index_TAVR_GOST_or_TU == typeTAVR_BT) {
			  RadioGroup_Tavr_GOST->ItemIndex = common_sect->tavr.n_group - index_TAVR_GOST_or_TU;
			  RadioGroup_Tavr_GOSTClick(Sender);
			}
			else {
			  RadioGroup_Tavr_TU->ItemIndex = common_sect->tavr.n_group - index_TAVR_GOST_or_TU;
			  RadioGroup_Tavr_TUClick(Sender);
			}
			//StandartProfil.SetProfil(common_sect->tavr.n_group);
		 // Получить вектор имен профилей и длину вектора
			NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);
			ComboBox_Tavr->Items->Clear();
			for (i=0; i<n_profil; i++) {
			  ComboBox_Tavr->Items->Add(NameProfil[i]);
			}
			ComboBox_Tavr->ItemIndex = common_sect->tavr.n_profil;
			ComboBox_TavrChange(Sender);
		  }
		  else {
			common_sect->tavr.n_profil = 0;
			common_sect->tavr.n_group = RadioGroup_Tavr_GOST->ItemIndex + index_TAVR_GOST_or_TU;
		  }

		  TabSheet_TavrStandart->TabVisible = true;

		break;
		case SQUARE_TUBE:
		flag_concl = common_sect->square.flag_concl;
		TabSheet_Standart->TabVisible = false;
		if (common_sect->square.flag_concl) {
		  if (common_sect->square.n_group < 0) {
			;
		  }
		  else {
		 // Установить тип стандартного сечения
			TabSheet_StandTube->TabVisible = true;
			TabSheet_Rect->TabVisible = false;
			TabSheet_Square->TabVisible = true;
			// Установить тип профиля - прямоугольная труба
			StandartProfil.SetProfil_Tube(typeSQUARE);
			Change_type_sect_tube(typeSQUARE, Sender);
		 // Получить вектор имен профилей и длину вектора
			NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

			ComboBox_h_b_square->Items->Clear();
			for (i=0; i<n_profil; i++) {
			  ComboBox_h_b_square->Items->Add(NameProfil[i]);
			}
			ComboBox_h_b_square->ItemIndex = common_sect->square.n_group;
			ComboBox_h_b_squareChange(Sender);
			ComboBox_t_square->ItemIndex = common_sect->square.n_profil;
			//RadioGroup_orient->ItemIndex = common_sect->square.index_orient;
		  }
		}
		 else {
		  if (common_sect->square.n_group < 0) {
		  }
		  else {
			TabSheet_StandTube->TabVisible = true;
			TabSheet_Rect->TabVisible = false;
			TabSheet_Square->TabVisible = true;
		  }
		}
	   break;
		case RECT_TUBE:
		flag_concl = common_sect->rect.flag_concl;
		TabSheet_Standart->TabVisible = false;
		if (common_sect->rect.flag_concl) {
		  if (common_sect->rect.n_group < 0) {
			;
		  }
		  else {
		 // Установить тип стандартного сечения
			TabSheet_StandTube->TabVisible = true;
			TabSheet_Rect->TabVisible = true;
			TabSheet_Square->TabVisible = false;
			//PageControl_Tube->ActivePage = TabSheet_Rect;
			// Установить тип профиля - прямоугольная труба
			StandartProfil.SetProfil_Tube(typeRECT);
			Change_type_sect_tube(typeRECT, Sender);
		 // Получить вектор имен профилей и длину вектора
			NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

			ComboBox_h_b_rect->Items->Clear();
			for (i=0; i<n_profil; i++) {
			  ComboBox_h_b_rect->Items->Add(NameProfil[i]);
			}
			ComboBox_h_b_rect->ItemIndex = common_sect->rect.n_group;
			ComboBox_t_rect->ItemIndex = common_sect->rect.n_profil;
			RadioGroup_orient->ItemIndex = common_sect->rect.index_orient;
			ComboBox_h_b_rectChange(Sender);
		  }
		}
		else {
		  if (common_sect->rect.n_group < 0) {
			TabSheet_StandTube->TabVisible = false;
		  }
		  else {
			TabSheet_StandTube->TabVisible = true;
			TabSheet_Rect->TabVisible = true;
			TabSheet_Square->TabVisible = false;
		  }
		}

		break;
		case CIRCULAR_TUBE:
		TabSheet_CYL->TabVisible = false;
		flag_concl = common_sect->circ.flag_concl;
		if (common_sect->circ.flag_concl) {
		  if (common_sect->circ.n_group < 0) {
			;
		  }
		  else {
		 // Установить тип стандартного сечения
			TabSheet_CYL->TabVisible = true;
			//PageControl_Tube->ActivePage = TabSheet_Rect;
			// Установить тип профиля - прямоугольная труба
			StandartProfil.SetProfil_Tube(typeCIRC);
			Change_type_sect_tube(typeCIRC, Sender);
		 // Получить вектор имен профилей и длину вектора
			NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

			ComboBox_Cyl_D->Items->Clear();
			for (i=0; i<n_profil; i++) {
			  ComboBox_Cyl_D->Items->Add(NameProfil[i]);
			}
			ComboBox_Cyl_D->ItemIndex = common_sect->circ.n_group;
			ComboBox_Cyl_t->ItemIndex = common_sect->circ.n_profil;
			ComboBox_Cyl_DChange(Sender);
		  }
		}
		break;
		default:
		;
	}
	if (flag_concl) {
	  ComboBox_TypeSect->Enabled=false;

	  //flag_image = true;
	  DrawSect();
	}
	else {
	  ComboBox_TypeSect->Enabled=true;
	}
	CheckBox_type_sect->Checked = ComboBox_TypeSect->Enabled;
}
//-------------------------------------------------------------------------
int __fastcall TSectSelectCom_ParamFrame::Read_sect() {

   int rc;
   double ss;
   double * ParamProfil;


    //*type_sect_currently = Type_sect;
    switch (Type_sect) {
    case DVUTAVR:
	  common_sect->dvutavr.flag_concl=false;
	  if (common_sect->dvutavr.n_group < 0) {
		;
	  }
	  else {      // стандартное сечение
		common_sect->dvutavr.n_profil = ComboBox_profil->ItemIndex;
      // Установить тип стандартного сечения
		if (index_GOST_or_TU==typeGOST_G57837_B)
		   common_sect->dvutavr.n_group = RadioGroupGOST57837->ItemIndex + index_GOST_or_TU;
		if (index_GOST_or_TU==typeTU_U)
		   common_sect->dvutavr.n_group = RadioGroup_TU->ItemIndex + index_GOST_or_TU;
		StandartProfil.SetProfil(common_sect->dvutavr.n_group);
        ParamProfil = StandartProfil.GetVectorParamProfil(common_sect->dvutavr.n_profil);
        common_sect->dvutavr.b = ParamProfil[2];
        common_sect->dvutavr.h = ParamProfil[0] - 2*ParamProfil[3];
		common_sect->dvutavr.b1 = ParamProfil[1];
        common_sect->dvutavr.b2 = ParamProfil[1];
        common_sect->dvutavr.h1 = ParamProfil[3];
        common_sect->dvutavr.h2 = ParamProfil[3];
        common_sect->dvutavr.flag_concl=true;
        common_sect->dvutavr.index_orient = 0;
      }
    break;
    case SQUARE_TUBE:
      common_sect->square.flag_concl=false;
	  if (common_sect->rect.n_group < 0) {
		;
	  }
      else {
        common_sect->square.n_group = ComboBox_h_b_square->ItemIndex;
		common_sect->square.n_profil = ComboBox_t_square->ItemIndex;
		common_sect->square.index_orient = 0;
	  // Установить тип стандартного сечения трубы
        StandartProfil.SetProfil_Tube(typeSQUARE);
      // Получить вектор параметров стандартного сечения трубы
        ParamProfil = StandartProfil.GetVectorParamProfil_Tube(common_sect->square.n_group, common_sect->square.n_profil);
		common_sect->square.side = ParamProfil[0];
		common_sect->square.thickness = ParamProfil[2];
		common_sect->square.b1 = common_sect->square.h1 = common_sect->square.b2 =common_sect->square.h2 = 0;
		common_sect->square.flag_concl=true;
		common_sect->square.rad = ParamProfil[3]; // Приблизительно
	  }
    break;
    case RECT_TUBE:
      common_sect->rect.flag_concl=false;
	  if (common_sect->rect.n_group < 0) {
		;
	  }
      else {
        common_sect->rect.n_group = ComboBox_h_b_rect->ItemIndex;
        common_sect->rect.n_profil = ComboBox_t_rect->ItemIndex;
		common_sect->rect.index_orient = RadioGroup_orient->ItemIndex;
      // Установить тип стандартного сечения трубы
        StandartProfil.SetProfil_Tube(typeRECT);
      // Получить вектор параметров стандартного сечения трубы
        ParamProfil = StandartProfil.GetVectorParamProfil_Tube(common_sect->rect.n_group, common_sect->rect.n_profil);
        if (common_sect->rect.index_orient==0) { // по длинной стороне
          common_sect->rect.h = ParamProfil[0];
          common_sect->rect.b = ParamProfil[1];
        }
		else {
          common_sect->rect.h = ParamProfil[1];
		  common_sect->rect.b = ParamProfil[0];
        }
        common_sect->rect.h1 = ParamProfil[2];
		common_sect->rect.b1 = ParamProfil[2];
		common_sect->rect.rad = ParamProfil[3];
		common_sect->dvutavr.b2 = 0;
		common_sect->dvutavr.h2 = 0;
		common_sect->dvutavr.flag_concl=true;
	  }
    break;
    case CIRCULAR_TUBE:
	  common_sect->circ.flag_concl=false;
	  if (common_sect->rect.n_group < 0) {
		;
	  }
      else {  // Прокатное сечение
        common_sect->circ.n_group = ComboBox_Cyl_D->ItemIndex;
        common_sect->circ.n_profil = ComboBox_Cyl_t->ItemIndex;
        common_sect->circ.index_orient = 0;
      // Установить тип стандартного сечения трубы
		StandartProfil.SetProfil_Tube(typeCIRC);
	  // Получить вектор параметров стандартного сечения трубы
        ParamProfil = StandartProfil.GetVectorParamProfil_Tube(common_sect->circ.n_group, common_sect->circ.n_profil);
        common_sect->circ.diameter = ParamProfil[0];
        common_sect->circ.thickness = ParamProfil[1];
        common_sect->circ.b1 = common_sect->circ.h1 = common_sect->circ.b2 =common_sect->circ.h2 = 0;
        common_sect->circ.flag_concl=true;
      }
	break;
	case TAVR:
	  common_sect->tavr.flag_concl=false;
	  if (common_sect->tavr.n_group < 0) {
		;
	  }
	  else {      // стандартное сечение
		if (index_TAVR_GOST_or_TU==typeTAVR_BT)
		   common_sect->tavr.n_group = RadioGroup_Tavr_GOST->ItemIndex + index_TAVR_GOST_or_TU;
		else
		   common_sect->tavr.n_group = RadioGroup_Tavr_TU->ItemIndex + index_TAVR_GOST_or_TU;
		common_sect->tavr.n_profil = ComboBox_Tavr->ItemIndex;
	  // Установить тип стандартного сечения
		StandartProfil.SetProfil(common_sect->tavr.n_group);
		ParamProfil = StandartProfil.GetVectorParamProfil(common_sect->tavr.n_profil);
		common_sect->tavr.b = ParamProfil[2];
		common_sect->tavr.h = ParamProfil[0] - ParamProfil[3];
		common_sect->tavr.b1 = ParamProfil[1];
		common_sect->tavr.b2 = 0;
		common_sect->tavr.h1 = ParamProfil[3];
		common_sect->tavr.h2 = 0;
		common_sect->tavr.y0 = ParamProfil[12];
		common_sect->tavr.Rad = ParamProfil[4];
		common_sect->tavr.type_profil = TAVR;
		common_sect->tavr.flag_concl=true;
		common_sect->tavr.index_orient = 0;
	  }
	break;
	default:
		 rc = Application->MessageBox((L"Тип профиля "+IntToStr(Type_sect) + " не обрабатывается").c_str(), L"SeсtSelectCom_Param", MB_OK | MB_ICONERROR);
		 return rc;
  }

      return 0;
}
//--------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::DrawSect()
{
  int rc;
  // Прочитать параметры сечения
  rc = Read_sect();
  if (rc>0) return;

  switch (Type_sect) {
	case DVUTAVR:
	   if (index_composed>=0)
		 draw_dvutavr_comp(Image_stand, &(common_sect->dvutavr), width, thick, index_composed);
	   else
		 draw_dvutavr(Image_stand, &(common_sect->dvutavr));
	break;
    case SQUARE_TUBE:
	   draw_square_tube(Image_square, &(common_sect->square));
	break;
    case RECT_TUBE:
	   draw_rect_tube(Image_rect, &(common_sect->rect));
	break;
	case CIRCULAR_TUBE:
	   draw_circular_tube(Image_Cyl, &(common_sect->circ));
    break;
	case TAVR:
	   if (index_composed>=0)
		 draw_tavr_comp(Image_tavr, &(common_sect->tavr), width, thick, index_composed);
	   else
		 draw_tavr(Image_tavr, &(common_sect->tavr));
	break;
	default:
	;
  }

}
//---------------------------------------------------------------------------
void  __fastcall TSectSelectCom_ParamFrame::Check_Original() {

	  TRect NewRect = Rect(0, 0, Image_stand->Width,
						   Image_stand->Height);

	  Image_stand->Canvas->Brush->Color = clWhite;
	  Image_stand->Canvas->FillRect(NewRect);
	  Image_stand->Canvas->Rectangle(0, 0, Image_stand->Width,
						   Image_stand->Height);


	  switch (Type_sect) {
        case NO_CHOISE:
		break;
		case DVUTAVR:
		case SQUARE_TUBE:
		case RECT_TUBE:
		case CIRCULAR_TUBE:
		 ComboBox_TypeSect->ItemIndex = Type_sect;
		break;
		case TAVR:
		 ComboBox_TypeSect->ItemIndex = 5;
		break;
		default:
		;
      }
}
//---------------------------------------------------------------------------
void  __fastcall TSectSelectCom_ParamFrame::Check_Type(TObject *Sender) {


	 TabSheet_Standart->TabVisible = false;
      TabSheet_StandTube->TabVisible = false;
      TabSheet_CYL->TabVisible = false;

      switch (ComboBox_TypeSect->ItemIndex) {
        case DVUTAVR:
          if (common_sect->dvutavr.n_group<0) {
			;
          }
          else {
            TabSheet_Standart->TabVisible = true;
            PageControl_StandDvutChange(Sender);
          }
		break;
        case SQUARE_TUBE:
          if (common_sect->square.n_group < 0) {
			;
		  }
          else {
            TabSheet_StandTube->TabVisible = true;
            SquareTube_Change(Sender);
          }
       break;
        case RECT_TUBE:
          if (common_sect->rect.n_group < 0) {
			;
		  }
          else {
            TabSheet_StandTube->TabVisible = true;
            RectTube_Change(Sender);
          }
        break;
        case CIRCULAR_TUBE:
          if (common_sect->circ.n_group < 0) {
			;
          }
          else {
            TabSheet_CYL->TabVisible = true;
            CylTube_Change(Sender);
          }
        break;
        default:
        ;
      }
}
//--------------------------------------------------------------------------------
//
void  __fastcall TSectSelectCom_ParamFrame::Check_Modify() {

	  TRect NewRect = Rect(0, 0, Image_stand->Width,
						   Image_stand->Height);

	  Image_stand->Canvas->Brush->Color = clWhite;
	  Image_stand->Canvas->FillRect(NewRect);
	  Image_stand->Canvas->Rectangle(0, 0, Image_stand->Width,
						   Image_stand->Height);


	  // рисовать на форме
	  //flag_image = true;
	  DrawSect();
	  flag_sect_change=true;



}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::CheckChangeSect()
{
//  Проверка - изменено ли сечение
    int i;
    TObject *Sender;

    if (flag_sect_change==true) {
        // запрос на сохранение
        text="Параметры сечения были изменены. Применить ?";
        header="";
        i=Application->MessageBox(text.c_str(),
                  header.c_str(),
                  MB_YESNO | MB_ICONQUESTION);
        if (i==IDYES) Button_ApplyClick(Sender);
    }
}
// Изменение состояния CheckBox

void __fastcall TSectSelectCom_ParamFrame::CheckBox1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
       Check_Modify();
}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::Edit1_Change(TObject *Sender) {
  flag_sect_change=true;
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::Edit2_Change(TObject *Sender) {
  flag_sect_change=true;
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::Edit3_Change(TObject *Sender) {
  flag_sect_change=true;
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::Edit4_Change(TObject *Sender) {
  flag_sect_change=true;
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::Edit5_Change(TObject *Sender)
{
  flag_sect_change=true;
}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::Edit6_Change(TObject *Sender)
{
  flag_sect_change=true;
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::Button_ApplyClick(TObject *Sender)
{
   int rc;

   rc = 0;
   if (Type_sect==DVUTAVR) {
     if (common_sect->dvutavr.b1 != common_sect->dvutavr.b2) {
        text="Ширина внешней и внутренней полок различна. Изменить ?";
        header="";
        rc=Application->MessageBox(text.c_str(),
                  header.c_str(),
                  MB_YESNO | MB_ICONWARNING);
        if (rc==IDYES) return;
     }
     /*
     if (common_sect->dvutavr.flag_concl==true) {
       rc = DiagnDeltaHForm->Diagn_DeltaH(Sender, common_sect->dvutavr.b, common_sect->dvutavr.h);
       if (rc>0) goto ret_sves;

       if (index_type_element == typeBEND_7_24 || index_type_element == typeFLEX_18_6) {          // изгибаемый конструктивный элемент
          rc = DiagnSvesForm->Diagn_sves(Sender, "внешняя полка", &(common_sect->dvutavr));
          if (rc>0) goto ret_sves;
          rc = DiagnSvesForm->Diagn_sves(Sender, "внутренняя полка", &(common_sect->dvutavr));
          if (rc>0) goto ret_sves;
       }
       else {
         rc = DiagnSvesForm->Diagn_sves(Sender, "полка", &(common_sect->dvutavr));
         if (rc>0) goto ret_sves;
       }
     }
     */
   }
ret_sves:
   if (rc < 2) {
     flag_sect_change=false;

   }
}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::ComboBox_TypeSectChange(TObject *Sender)
{
    if (Type_sect != ComboBox_TypeSect->ItemIndex && common_sect->dvutavr.n_group >=0 ) {
      // Преобразовать группу сечений из одного типа в другой
	  switch (ComboBox_TypeSect->ItemIndex) {
       case 1:
         common_sect->dvutavr.n_group = 0;
		 common_sect->dvutavr.n_profil = 5;
		 Type_sect = DVUTAVR;
	   break;
       case 2:
         common_sect->square.n_group = 10;
         common_sect->square.n_profil = 5;
		 Type_sect = SQUARE_TUBE;
	   break;
	   case 3:
		 common_sect->rect.n_group = 10;
		 common_sect->rect.n_profil = 5;
		 Type_sect = RECT_TUBE ;
	   break;
	   case 4:
		 common_sect->circ.n_group = 10;
		 common_sect->circ.n_profil = 5;
		 Type_sect = CIRCULAR_TUBE;
	   break;
	   case 5:
		 common_sect->tavr.n_group = 0;
		 common_sect->tavr.n_profil = 5;
		 Type_sect = TAVR;
	   break;
	  }
    }
	Check_Original();
    Check_Type(Sender);

}
//---------------------------------------------------------------------------


void __fastcall TSectSelectCom_ParamFrame::Edit3Change(TObject *Sender)
{
  flag_sect_change=true;


}
//---------------------------------------------------------------------------
// Заполнение списка профилей  ГОСТ Двутавр
void __fastcall TSectSelectCom_ParamFrame::Change_type_sect(int index_profil, TObject *Sender)
{
	if (index_profil < 0) {
	  ;
	}
	else {
	   TabSheet_Standart->TabVisible = true;
	   if (index_profil >=typeGOST_G57837_B && index_profil <=typeGOST_G57837_S)
		  RadioGroupGOST57837Click(Sender);
	   if (index_profil <=typeTU_S)
		  RadioGroup_TUClick(Sender);
	}
}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::Change_type_sect_tube(int index_profil, TObject *Sender)
{
    if (index_profil < 0) {
	   TabSheet_Standart->TabVisible = false;
       TabSheet_StandTube->TabVisible = false;
	}
    else {
	   TabSheet_Standart->TabVisible = false;
       if (index_profil != typeCIRC) {
         TabSheet_StandTube->TabVisible = true;
         TabSheet_CYL->TabVisible = false;
       }  
       else {
         TabSheet_StandTube->TabVisible = false;
         TabSheet_CYL->TabVisible = true;
       }

    }
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::ComboBox_profilChange(TObject *Sender)
{
       double * ParamProfil;
       ParamProfil = StandartProfil.GetVectorParamProfil(ComboBox_profil->ItemIndex);          //ComboBox_profil->Items
	   StringGrid_B->Cells[1][0]=FloatToStr(ParamProfil[parHSECT]);
	   StringGrid_B->Cells[1][1]=FloatToStr(ParamProfil[parBF]);
       StringGrid_B->Cells[1][2]=FloatToStr(ParamProfil[parTW]);
       StringGrid_B->Cells[1][3]=FloatToStr(ParamProfil[parTF]);
       StringGrid_B->Cells[1][4]=FloatToStrF(ParamProfil[parAREA]/100, ffFixed, 6, 0);
       StringGrid_B->Cells[1][5]=FloatToStrF(ParamProfil[parIZZ]/10000, ffFixed, 6, 0);
       StringGrid_B->Cells[1][6]=FloatToStrF(ParamProfil[parIRADZ], ffFixed, 6, 1);
	   StringGrid_B->Cells[1][7]=FloatToStr(ParamProfil[parHSECT]/2);

	   //flag_image = true;

	   DrawSect();

}
//---------------------------------------------------------------------------


void __fastcall TSectSelectCom_ParamFrame::PageControl_StandDvutChange(TObject *Sender)
{
	if (PageControl_StandDvut->ActivePage == TabSheet_GOST57837) {
	   index_GOST_or_TU = typeGOST_G57837_B;
	   RadioGroupGOST57837Click(Sender);
	}
	if (PageControl_StandDvut->ActivePage == TabSheet_TU) {
	   index_GOST_or_TU = typeTU_U;
	   RadioGroup_TUClick(Sender);

	}
}
//------------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::RadioGroup_orientClick(TObject *Sender)
{
   double h0, b0;
   b0 = common_sect->rect.b;
   h0 = common_sect->rect.h;

   if (RadioGroup_orient->ItemIndex==0) {
     common_sect->rect.b = MIN(b0, h0);
     common_sect->rect.h = MAX(b0, h0);
   }
   else {
     common_sect->rect.b = MAX(b0, h0);
     common_sect->rect.h = MIN(b0, h0);
   }

   //flag_image = true;
   DrawSect();

}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::Put_h_rect(TObject *Sender)
{
   int i;
   AnsiString *NameProfil;
   int num_profil;
   double h0;

   h0 = 0;
   StandartProfil.SetProfil_Tube(typeRECT);   // typeSQUARE
   // Получить вектор имен профилей и длину вектора
   NameProfil = StandartProfil.GetVectorNameProfil(&num_profil);   // количество профилей

   for (i=0; i<num_profil; i++) {
     //if (h0 <
   }

}

void __fastcall TSectSelectCom_ParamFrame::ComboBox_h_b_rectChange(
      TObject *Sender)
{
       double * ParamProfil;
       int i, rc;
       double *thick;
       int num_thick;

       int index = MAX(0, ComboBox_h_b_rect->ItemIndex);

       ParamProfil = StandartProfil.GetVectorParamProfil_Tube(index, common_sect->square.n_profil);
       thick = StandartProfil.GetVectorParamThickness_Tube(index, &num_thick);

       if (thick == NULL || ParamProfil == NULL) {
		  #ifdef EMBRAC
			rc=Application->MessageBox(L"Программная ошибка в SetCom_Param: несуществующий профиль", L" ", MB_OK | MB_ICONERROR);
		  #else
			rc=Application->MessageBox("Программная ошибка в SetCom_Param: несуществующий профиль", " ", MB_OK | MB_ICONERROR);
		  #endif
		 return;
       }
       // Заполнение StringGrid_Tube rect
       StringGrid_Tube->Cells[1][0]=FloatToStr(ParamProfil[parHSECT]);
       StringGrid_Tube->Cells[1][1]=FloatToStr(ParamProfil[parBSECT]);
       StringGrid_Tube->Cells[1][2]=FloatToStr(ParamProfil[parT_RECT_TUBE]);
       StringGrid_Tube->Cells[1][3]=FloatToStr(ParamProfil[parAREA_RECT_TUBE]/100);
       StringGrid_Tube->Cells[1][4]=FloatToStr(ParamProfil[parIZZ_RECT_TUBE]/10000);
       StringGrid_Tube->Cells[1][5]=FloatToStr(ParamProfil[parIYY_RECT_TUBE]/10000);

       ComboBox_t_rect->Items->Clear();
       for (i=0; i<num_thick; i++) {
         ComboBox_t_rect->Items->Add(FloatToStr(thick[i]));
       }
       ComboBox_t_rect->ItemIndex = common_sect->square.n_profil;
       RadioGroup_orientClick(Sender);

}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::ComboBox_t_rectChange(TObject *Sender)
{
       double * ParamProfil;

       int i, rc;

       ParamProfil = StandartProfil.GetVectorParamProfil_Tube(ComboBox_h_b_rect->ItemIndex, ComboBox_t_rect->ItemIndex);
       // Заполнение StringGrid_Tube rect
       StringGrid_Tube->Cells[1][0]=FloatToStr(ParamProfil[parHSECT]);
       StringGrid_Tube->Cells[1][1]=FloatToStr(ParamProfil[parBSECT]);
       StringGrid_Tube->Cells[1][2]=FloatToStr(ParamProfil[parT_RECT_TUBE]);
       StringGrid_Tube->Cells[1][3]=FloatToStr(ParamProfil[parAREA_RECT_TUBE]/100);
       StringGrid_Tube->Cells[1][4]=FloatToStr(ParamProfil[parIZZ_RECT_TUBE]/10000);
       StringGrid_Tube->Cells[1][5]=FloatToStr(ParamProfil[parIYY_RECT_TUBE]/10000);

       RadioGroup_orientClick(Sender);

}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::ComboBox_h_b_squareChange(
      TObject *Sender)
{
	   double * ParamProfil;
       int i, rc;
       double *thick;
       int num_thick;

       int index = MAX(0, ComboBox_h_b_square->ItemIndex);

	   ParamProfil = StandartProfil.GetVectorParamProfil_Tube(index, common_sect->square.n_profil);
	   thick = StandartProfil.GetVectorParamThickness_Tube(index, &num_thick);
	   if (thick == NULL || ParamProfil == NULL) {
		 #ifdef EMBRAC
		 rc=Application->MessageBox(L"Программная ошибка в SetCom_Param: несуществующий профиль", L" ", MB_OK | MB_ICONERROR);
		 #else
		 rc=Application->MessageBox("Программная ошибка в SetCom_Param: несуществующий профиль", " ", MB_OK | MB_ICONERROR);
		 #endif
		 return;
       }
       // Заполнение StringGrid_Tube square
       StringGrid_Tube->Cells[1][0]=FloatToStr(ParamProfil[parHSECT]);
       StringGrid_Tube->Cells[1][1]=FloatToStr(ParamProfil[parBSECT]);
       StringGrid_Tube->Cells[1][2]=FloatToStr(ParamProfil[parT_SQUARE_TUBE]);
       StringGrid_Tube->Cells[1][3]=FloatToStr(ParamProfil[parAREA_SQUARE_TUBE]/100);
       StringGrid_Tube->Cells[1][4]=FloatToStr(ParamProfil[parIYY_SQUARE_TUBE]/10000);
       StringGrid_Tube->Cells[1][5]=FloatToStr(ParamProfil[parIYY_SQUARE_TUBE]/10000);

       ComboBox_t_square->Items->Clear();
	   for (i=0; i<num_thick; i++) {
		 ComboBox_t_square->Items->Add(FloatToStr(thick[i]));
       }
	   //ComboBox_t_square->ItemIndex = common_sect->square.n_profil;
	   ComboBox_t_square->ItemIndex = MIN(common_sect->square.n_profil, num_thick-1);

	   //flag_image = true;
	   DrawSect();

}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::ComboBox_t_squareChange(
      TObject *Sender)
{
       double * ParamProfil;

       int i, rc;

       ParamProfil = StandartProfil.GetVectorParamProfil_Tube(ComboBox_h_b_square->ItemIndex, ComboBox_t_square->ItemIndex);
       // Заполнение StringGrid_Tube square
       StringGrid_Tube->Cells[1][0]=FloatToStr(ParamProfil[parHSECT]);
       StringGrid_Tube->Cells[1][1]=FloatToStr(ParamProfil[parBSECT]);
       StringGrid_Tube->Cells[1][2]=FloatToStr(ParamProfil[parT_SQUARE_TUBE]);
       StringGrid_Tube->Cells[1][3]=FloatToStr(ParamProfil[parAREA_SQUARE_TUBE]/100);
       StringGrid_Tube->Cells[1][4]=FloatToStr(ParamProfil[parIYY_SQUARE_TUBE]/10000);
       StringGrid_Tube->Cells[1][5]=FloatToStr(ParamProfil[parIYY_SQUARE_TUBE]/10000);

	   //flag_image = true;
	   DrawSect();
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::CheckBox_type_sectClick(
      TObject *Sender)
{
    if (CheckBox_type_sect->Checked) {
       ComboBox_TypeSect->Enabled = true;
    }

}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::SquareTube_Change(TObject *Sender)
{
  AnsiString* NameProfil;
  int i, n_profil;
           // Установить тип профиля - квадратная труба
            StandartProfil.SetProfil_Tube(typeSQUARE);
            Change_type_sect_tube(typeSQUARE, Sender);
         // Получить вектор имен профилей и длину вектора
            NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

            if (ComboBox_h_b_square->ItemIndex <0)  {
              ComboBox_h_b_square->Items->Clear();
              for (i=0; i<n_profil; i++) {
                ComboBox_h_b_square->Items->Add(NameProfil[i]);
              }
              ComboBox_h_b_square->ItemIndex = 0;
              ComboBox_h_b_squareChange(Sender);   // здесь устанавливается список ComboBox_t_square и ComboBox_t_square->ItemIndex = 0
            }
			ComboBox_t_squareChange(Sender);
            TabSheet_Rect->TabVisible = false;
            TabSheet_Square->TabVisible = true;
}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::RectTube_Change(TObject *Sender)
{
  AnsiString* NameProfil;
  int i, n_profil;
		   // Установить тип профиля - прямоугольная труба
            StandartProfil.SetProfil_Tube(typeRECT);
            Change_type_sect_tube(typeRECT, Sender);
         // Получить вектор имен профилей и длину вектора
            NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

            if (ComboBox_h_b_rect->ItemIndex <0) {
              ComboBox_h_b_rect->Items->Clear();
              for (i=0; i<n_profil; i++) {
                ComboBox_h_b_rect->Items->Add(NameProfil[i]);
              }
              ComboBox_h_b_rect->ItemIndex = 0;
              ComboBox_h_b_rectChange(Sender);
            }
            ComboBox_t_rectChange(Sender);
            TabSheet_Rect->TabVisible = true;
            TabSheet_Square->TabVisible = false;
}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::CylTube_Change(TObject *Sender)
{
  AnsiString* NameProfil;
  int i, n_profil;
           // Установить тип профиля - круглая труба
            StandartProfil.SetProfil_Tube(typeCIRC);
            Change_type_sect_tube(typeCIRC, Sender);
         // Получить вектор имен профилей и длину вектора
            NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

            if (ComboBox_Cyl_D->ItemIndex <0) {
			  ComboBox_Cyl_D->Items->Clear();
              for (i=0; i<n_profil; i++) {
                ComboBox_Cyl_D->Items->Add(NameProfil[i]);
              }
              ComboBox_Cyl_D->ItemIndex = 0;
              ComboBox_Cyl_DChange(Sender);
            }
            ComboBox_Cyl_tChange(Sender);
}
// Заполнить список профилей
void __fastcall TSectSelectCom_ParamFrame::FillComboBox1(TObject *Sender)
{
  ComboBox_TypeSect->Items->Clear();
  ComboBox_TypeSect->Items->Add("0. Тип не выбран");
  ComboBox_TypeSect->Items->Add("1. Двутавр");
  ComboBox_TypeSect->Items->Add("2. Труба квадратная");
  ComboBox_TypeSect->Items->Add("3. Труба прямоугольная");
  ComboBox_TypeSect->Items->Add("4. Труба круглая");
  ComboBox_TypeSect->Items->Add("5. Тавр");

}
//---------------------------------------------------------------
// Заполнение списка профилей GOST_G57837
void __fastcall TSectSelectCom_ParamFrame::RadioGroupGOST57837Click(
      TObject *Sender)
{
   AnsiString *NameProfil;
   int n_profil, i;

   // Установить тип стандартного сечения
   StandartProfil.SetProfil(RadioGroupGOST57837->ItemIndex + typeGOST_G57837_B);
   // Получить вектор имен профилей и длину вектора
   NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

   ComboBox_profil->Items->Clear();
   for (i=0; i<n_profil; i++) {
	  ComboBox_profil->Items->Add(NameProfil[i]);
   }
   // Найти ближайший по площади
   ComboBox_profil->ItemIndex = StandartProfil.Get_NumberProfil(&(common_sect->dvutavr), 4);
   ComboBox_profilChange(Sender);
   PageControl_StandDvut->ActivePage = TabSheet_GOST57837;
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::ComboBox_Cyl_DChange(
      TObject *Sender)
{
       double * ParamProfil;
       int i, rc;
       double *thick;
	   int num_thick;

       int index = MAX(0, ComboBox_Cyl_D->ItemIndex);

       ParamProfil = StandartProfil.GetVectorParamProfil_Tube(index, common_sect->square.n_profil);
       thick = StandartProfil.GetVectorParamThickness_Tube(index, &num_thick);

       if (thick == NULL || ParamProfil == NULL) {
		 #ifdef EMBRAC
		 rc=Application->MessageBox(L"Программная ошибка в SetCom_Param: несуществующий профиль", L" ", MB_OK | MB_ICONERROR);
		 #else
		 rc=Application->MessageBox("Программная ошибка в SetCom_Param: несуществующий профиль", " ", MB_OK | MB_ICONERROR);
		 #endif
		 return;
       }
       StringGrid_Cyl->Cells[1][0]=FloatToStr(ParamProfil[parDCIRC]);
       StringGrid_Cyl->Cells[1][1]=FloatToStr(ParamProfil[parTCIRC]);
       StringGrid_Cyl->Cells[1][2]=FloatToStr(ParamProfil[parAREA_CIRC_TUBE]/100);
       StringGrid_Cyl->Cells[1][3]=FloatToStr(ParamProfil[parIYY_CIRC_TUBE]/10000);
       StringGrid_Cyl->Cells[1][4]=FloatToStr(ParamProfil[parWY_CIRC_TUBE]/1000);

       ComboBox_Cyl_t->Items->Clear();
       for (i=0; i<num_thick; i++) {
         ComboBox_Cyl_t->Items->Add(FloatToStr(thick[i]));
       }
       ComboBox_Cyl_t->ItemIndex = common_sect->square.n_profil;

	   //flag_image = true;
	   DrawSect();
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::ComboBox_Cyl_tChange(
      TObject *Sender)
{
       double * ParamProfil;

       int i, rc;

	   ParamProfil = StandartProfil.GetVectorParamProfil_Tube(ComboBox_Cyl_D->ItemIndex, ComboBox_Cyl_t->ItemIndex);
       StringGrid_Cyl->Cells[1][0]=FloatToStr(ParamProfil[parDCIRC]);
       StringGrid_Cyl->Cells[1][1]=FloatToStr(ParamProfil[parTCIRC]);
       StringGrid_Cyl->Cells[1][2]=FloatToStr(ParamProfil[parAREA_CIRC_TUBE]/100);
       StringGrid_Cyl->Cells[1][3]=FloatToStr(ParamProfil[parIYY_CIRC_TUBE]/10000);
       StringGrid_Cyl->Cells[1][4]=FloatToStr(ParamProfil[parWY_CIRC_TUBE]/1000);

       common_sect->square.n_profil = ComboBox_Cyl_t->ItemIndex;


        
}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::RadioGroup_Tavr_GOSTClick(TObject *Sender)

{
   AnsiString *NameProfil;
   int n_profil, i;

   // Установить тип стандартного сечения
   StandartProfil.SetProfil(RadioGroup_Tavr_GOST->ItemIndex + typeTAVR_BT);
   // Получить вектор имен профилей и длину вектора
   NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

   ComboBox_Tavr->Items->Clear();
   for (i=0; i<n_profil; i++) {
	  ComboBox_Tavr->Items->Add(NameProfil[i]);
   }
   if (RadioGroup_Tavr_GOST->ItemIndex == common_sect->tavr.n_group - typeTAVR_BT)
	 ComboBox_Tavr->ItemIndex = common_sect->tavr.n_profil;
   else
	 ComboBox_Tavr->ItemIndex = StandartProfil.Get_NumberProfil_Com(TAVR, common_sect, parAREA);
   //ComboBox_Tavr->ItemIndex = MIN(n_profil - 1, common_sect->tavr.n_profil);
   ComboBox_TavrChange(Sender);

}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::ComboBox_TavrChange(TObject *Sender)
{
	   double * ParamProfil;
	   ParamProfil = StandartProfil.GetVectorParamProfil(ComboBox_Tavr->ItemIndex);          //ComboBox_profil->Items
	   StringGrid_Tavr->Cells[1][0]=FloatToStr(ParamProfil[parHSECT]);                       // ParamProfil[4]
	   StringGrid_Tavr->Cells[1][1]=FloatToStr(ParamProfil[parBF]);
	   StringGrid_Tavr->Cells[1][2]=FloatToStr(ParamProfil[parTW]);
	   StringGrid_Tavr->Cells[1][3]=FloatToStr(ParamProfil[parTF]);
	   StringGrid_Tavr->Cells[1][4]=FloatToStrF(ParamProfil[parAREA]/100, ffFixed, 6, 1);
	   StringGrid_Tavr->Cells[1][5]=FloatToStrF(ParamProfil[parIZZ_TAVR]/10000, ffFixed, 6, 0);
	   StringGrid_Tavr->Cells[1][6]=FloatToStrF(ParamProfil[parIRADZ_TAVR], ffFixed, 6, 1);
	   StringGrid_Tavr->Cells[1][7]=FloatToStrF(ParamProfil[parZ0_TAVR], ffFixed, 6, 1);

	   //flag_image = true;       //ParamProfil[9]
	   DrawSect();

}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::RadioGroup_TUClick(TObject *Sender)
{
   AnsiString *NameProfil;
   int n_profil, i;

   // Установить тип стандартного сечения
   StandartProfil.SetProfil(RadioGroup_TU->ItemIndex + typeTU_U);
   // Получить вектор имен профилей и длину вектора
   NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

   ComboBox_profil->Items->Clear();
   for (i=0; i<n_profil; i++) {
	  ComboBox_profil->Items->Add(NameProfil[i]);
   }
   // Найти ближайший по площади
   ComboBox_profil->ItemIndex = StandartProfil.Get_NumberProfil(&(common_sect->dvutavr), 4);
   ComboBox_profilChange(Sender);
   PageControl_StandDvut->ActivePage = TabSheet_TU;
}
//---------------------------------------------------------------------------
void __fastcall TSectSelectCom_ParamFrame::RadioGroup_Tavr_TUClick(TObject *Sender)
{
   AnsiString *NameProfil;
   int n_profil, i;

   // Установить тип стандартного сечения
   StandartProfil.SetProfil(RadioGroup_Tavr_TU->ItemIndex + typeTAVR_TU_UT);
   // Получить вектор имен профилей и длину вектора
   NameProfil = StandartProfil.GetVectorNameProfil(&n_profil);

   ComboBox_Tavr->Items->Clear();
   for (i=0; i<n_profil; i++) {
	  ComboBox_Tavr->Items->Add(NameProfil[i]);
   }
   if (RadioGroup_Tavr_TU->ItemIndex == common_sect->tavr.n_group - typeTAVR_TU_UT)
	 ComboBox_Tavr->ItemIndex = common_sect->tavr.n_profil;
   else
     ComboBox_Tavr->ItemIndex = StandartProfil.Get_NumberProfil_Com(TAVR, common_sect, parAREA);
   ComboBox_TavrChange(Sender);
   PageControl_Tavr->ActivePage = TabSheet_Tavr_TU;

}
//---------------------------------------------------------------------------

void __fastcall TSectSelectCom_ParamFrame::PageControl_TavrChange(TObject *Sender)

{
	if (PageControl_Tavr->ActivePage == TabSheet_Tavr_GOST) {
	   index_TAVR_GOST_or_TU = typeTAVR_BT;
	   RadioGroup_Tavr_GOSTClick(Sender);
	}
	if (PageControl_Tavr->ActivePage == TabSheet_Tavr_TU) {
	   index_TAVR_GOST_or_TU = typeTAVR_TU_UT;
	   RadioGroup_Tavr_TUClick(Sender);

	}

}
//---------------------------------------------------------------------------

