
#include <vcl.h>
#pragma hdrstop


#include "main.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tmain_Form *main_Form;
//---------------------------------------------------------------------------

//[BuildTool 정의]
//{
    //[2022.09.14.수][추가]{------------------------------------------------------------------
    //[맷돌-IDE] 제작도구가 <TC++2006> 인지 <ECB/CE> 인지 구분하는 정의값이 들어 있다.
    //
    //이 <BuildToolDefine.h> 는 아래와 같이 내용이 다르므로 <TC++2006> 으로 빌드하는 묶음과
    //<ECB/CE> 로 빌드하는 묶음에서 각각 고유하게 가지고 있어야 한다.
    //
    //#define  d_BuildTool_TC2006    true   <=== <TC++2006> 으로 빌드되는 묶음안의 정의 내용.
    //#define  d_BuildTool_TC2006    false  <=== <ECB/CE> 로 빌드되는 묶음안의 정의 내용.
    //
    //[참고]----------------------------------------------------------------------------------
    //<TC++2006> : Turbo C++ 2006 Explorer
    //<ECB/CE>   : Embarcadero C++Builder/Community Edition
    //}---------------------------------------------------------------------------------------

    #include "BuildToolDefine.h"

//}

//[가상머신 설계용]
//{
    #include "c_define.h"

    #include "ide_library.h"
    #include "library.h"
    #include "database.h"
    #include "font.h"
	#include "file.h"
	#include "gui.h"

    #include "compiler.h"
    #include "parser.h"
    #include "asmencoder.h"
    #include "object1st.h"
    #include "object.h"

    //[2009.03.12.목][추가!!!]
    #include "vmos.h"

    //[2009.04.06.월][추가!!!]
    #include "vdebug.h"

//}

#include "ide_main.h"
#include "ide_submenu.h"
#include "ide_msgbox.h"
#include "msg_msg.h"
#include "editor_top.h"
#include "editor_edit.h"
#include "ide_popup.h"

#include "editor_edit.h"

#include "ide_editor.h"

//[2010.12.06.화][추가!!!]
#include "file_ginf.h"

//[2010.12.10.금][추가!!!]
#include "vmos_info.h"

#include "math.h"

//[2012.05.23.수][추가!!!]
#include "info_tree.h"

//[2018.05.05.토][추가!!!]
#include "ide_buttons.h"


//[DATABASE]
//{
    //[!]{----------------------------------------
    //{DATABASE} 의 본체 주소값을 가지는 pointer.
    //test 를 위한 용도 만으로 사용한다.
    //}-------------------------------------------

    class DATABASE  *_Pdatabase;

//}

__fastcall Tmain_Form::Tmain_Form(TComponent* Owner)
        : TForm(Owner)
{
  //[VAR]
  //{
      struct  IDE_OPTION    *ide_Option;

  //}

  //[기타]
  //{
      //[2012.06.05.화][추가!!!]
      _swResize = true;

  //}

  //[실행 이름 지정]
  //{
      //[2018.10.15.월][추가!!!]{-----------------------------------------------------
      //[폼디자인] 용 [그림부품] 이 모두 [독립창] 기능이 추가되어 [작업표시줄] 상에서
      //서로 구분이 필요하므로 [맷돌-IDE] 의 경우 기존의 "IDE" 에서 "[맷돌-IDE]" 로
      //이름을 수정한다.
      //}-----------------------------------------------------------------------------
      
      Application->Title = "맷돌-IDE";

  //}

  //[설정위치얻기]{------------
  //[2009.04.20.월][추가!!!]
  IDE_Get_Option(&ide_Option);

  //[환경설정 초기화]----------
  //[2010.07.05.월][추가!!!]
  Ide_Option_Init();
  //}--------------------------

  //[Database 주소 얻기]
  //{
      //[2005.08.29.월][추가!!!]{--------------------------------------
      //{DATABASE} 본체의 주소값을 얻는다.
      //{DATABASE} 는 이미 parser.c 안에 이미 전역 변수로 선언되 있다.
      //}--------------------------------------------------------------

      DATABASE_GetPtr(&_Pdatabase);

  //}

  //[경로 정보 얻기]
  //{      
      //[2005.09.06.화][추가!!!]{-------------------------------------------
      //{DATABASE} 에 현재 실행 파일 경로를 기록해 준다.
      //*.exe 이 실행 되자마자 반드시 경로를 저장해 놓아야 한다.(매우 중요)
      //}-------------------------------------------------------------------

	  STR_Assign(_Pdatabase->programpath, ((AnsiString)ExtractFilePath(Application->ExeName)).c_str());

      //[2005.09.20.화][추가!!!]{------------------------------
      //일단 IDE 와 같은 위치에 *.exe 가 있는 것으로 설정한다.
      //}------------------------------------------------------

	  STR_Assign(_Pdatabase->compilerpath, ((AnsiString)ExtractFilePath(Application->ExeName)).c_str());

      //[2005.10.07.금][추가!!!]{------------------------------
      //일단 IDE 와 같은 위치에 *.prj 가 있는 것으로 설정한다.
      //}------------------------------------------------------

	  STR_Assign(_Pdatabase->projectpath, ((AnsiString)ExtractFilePath(Application->ExeName)).c_str());

      //[2006.06.07.수][추가!!!]{------------------------
      //*.prj 가 위치한 곳에 "Build" 폴더가 있어야 한다.
      //이 경로를 만들어 준다.
      //}------------------------------------------------

      STR_Assign(_Pdatabase->buildpath, _Pdatabase->projectpath);
      STR_Add_AB(_Pdatabase->buildpath, _Pdatabase->buildpath, "\\build\\");

  //}

  //[글꼴 리소스 만들기]
  //{
      //[!]{-----------------------------------------------------------------------
      //이 프로그램에서 사용할 [글꼴] 을 전부 읽어 들여서 [글꼴 리소스] 를 만든다.
      //항상 사용하는 자원이므로 프로그램 시작과 동시에 불러 들여야 한다.
      //}--------------------------------------------------------------------------

      FONTRESOURCE_Load();

  //}

  //[폼크기제한]
  //{
      //[!]{-----------------------------------------------------------------
      //최대화시 아래 작업 표시줄을 가리지 않도록 폼의 최대 크기를 제한한다.
      //아래의 트레이영역을 제외한 화면의 높이값을 사용한다.
      //}--------------------------------------------------------------------

      this->Constraints->MaxHeight = Screen->WorkAreaHeight;

  //}
  
  //[temp 폴더 만들기]
  //{
      //[2010.04.06.화][추가!!!]{--------------------------------------------
      //사용자가 삭제할수 있으므로 IDE 를 시작할때 <temp> 와 <temp\gui_temp>
      //두개 폴더를 무조건 만들어 준다.
      //}--------------------------------------------------------------------

      Ide_Make_TempFolder();

  //}

  //[환경변수 설정]
  //{
      //[2007.10.02.화][추가!!!]{---------------------
      //환경변수 설정 파일을 읽어서 다시 설정을 한다.
      //}---------------------------------------------

      IDE_OptionFile_Open();

  //}

  //[IDE:GUI 만들기]
  //{
      IDE_CreateForms();

  //}    

  //[AlphaBlend 적용]
  //{
      //[2007.03.25.일]
      this->AlphaBlend      = ide_Option->alphaBlendUse;
      this->AlphaBlendValue = ide_Option->alphaBlendValue;

  //}

  //[운영체제 정보 구조체 초기화]
  //{
      //[2010.12.10.금][추가!!!]{-------
      //반드시 한번은 초기화 해야 한다.
      //}-------------------------------

      VmosInfo_Init();

  //}

  //[IDE:부가처리]
  //{
      //[2022.06.07.화][추가]{-----------------------------------------
      //[맷돌-IDE] 시작시 사용할 기본 정보, 문서를 만든다.
      //
      //일단, <IDE\glib\def_file.glist> 를 생성하기 위하여 추가하는것.
      //}--------------------------------------------------------------

      IDE_StartUp_Etc();

  //}

  //[검증 함수 초기화]
  //{
      //[2021.03.29.월][추가]
      GIGYENICS_GUI_Test_Init();

  //}

}

__fastcall Tmain_Form::~Tmain_Form(void)
{
  //[소멸]

  //[여기서 처리하지 않는다!!!]
  //{
      //[2010.03.08.월][중요수정!!!]{-------------------------------------------------
      //아래 두개의 함수는 절대 여기서 처리하면 안된다.
      //<ide_main.cpp> 문서안의 IDE_Close() 함수안에서 main_Form->Close() 이전에
      //먼저 처리해 주어야 한다.
      //이렇게 하지 않으면 <GVmos> 가 제대로 삭제되지 않아서 <IDE> 가 종료되지 못하는
      //문제가 발생한다.
      //}-----------------------------------------------------------------------------

      /*
      //[VMOS Thread 삭제]
      //{
          //[2009.03.16.월][추가!!!]{--------------
          //동적 생성된 [VMOS Thread] 를 삭제한다.
          //}--------------------------------------

          VMOS_ThreadDelete();

      //}

      //[VDEBUG Thread 삭제]
      //{
          //[2009.04.06.월][추가!!!]{----------------
          //동적 생성된 [VDEBUG Thread] 를 삭제한다.
          //}----------------------------------------

          VDEBUG_ThreadDelete();

      //}
      */

  //}

  FONTRESOURCE_Init();

  //동적 생성된 모든 폼을 삭제한다.
  IDE_DeleteForms();

  //[그림부품]
  //{
      //[2010.02.10.수][중요추가!!!]{---------------------------------
      //<Application> 을 모체로 생성한 경우는 여기서 삭제하면 안된다.
      //자동 관리되므로 그냥 두면 된다.
      //}-------------------------------------------------------------

      //[2010.01.28.목][추가!!!]{-------------------------
      //[전역변수] 로 생성된 [공용 그림부품] 을 삭제한다.
      //GPART_GBalloonBox_Delete();
      //[전역변수] 로 생성된 [공용 귀뜸말] 을 삭제한다.
      //GPART_GHint_Delete();
      //}-------------------------------------------------

      //[2010.02.03.수][추가!!!]{-----------------------
      //[전역변수] 로 생성된 [공용 알림창] 을 삭제한다.
      //GPART_GMsgBox_Delete();
      //}-----------------------------------------------

      //[2010.02.07.일][추가!!!]{------------------------
      //[전역변수] 로 생성된 [찾기대화상자] 를 삭제한다.
      //GPART_GFindDialog_Delete();
      //}------------------------------------------------

      //[2010.02.04.목][추가!!!]{---------------
      //[기본환경] 을 가장 마지막으로 삭제한다.
      //GPART_GVmos_Delete();
      //}---------------------------------------

  //}

  return;

}

//------------------------------------------------------------------------------
//[서브클래싱]------------------------------------------------------------------
//------------------------------------------------------------------------------

void __fastcall Tmain_Form::WndProc(Messages::TMessage  &Message)
{
  switch(Message.Msg)
  {
    case WM_ERASEBKGND :
    {
      //[!]{----------------------------------------------------------------------------
      //바로 죵료하지 않으면 WM_ERASEBKGND 메세지가 다음 TForm::WndProc(Message); 에서
      //다시 처리 되어 TForm->Color 로 칠해지게 되어 _Draw() 로 그린 것이 다 지워지므로
      //바로 종료한다.
      //
      //[2012.06.07.목][설명!!!]--------------------------------------------------------
      //보이는 부분이 없기 때문에 [다시 그리기] 할 필요가 없다.
      //최대한 [그리기] 시간을 절약하기 위한것.
      //}-------------------------------------------------------------------------------

      return;

    } break;

    case WM_MOVING :
    {


    } break;

    case WM_MOVE :
    {


    } break;

    case WM_SIZE :
    {
      //[2006.10.15.일][생성!!!]{---------------------------
      //내부 [컨트롤] 의 크기를 다시 조정해 준다.

      //[2007.03.18.일][수정!!!]----------------------------
      //FormResizeEvent 를 여기서 처리하는 것으로 수정한다.
      //}---------------------------------------------------

     _Resize();

      return;

    } break;

  }

  //[기본처리]
  //{
      //기본 메세지는 반드시 처리 되어야 한다.
      TForm::WndProc(Message);
  //}

  return;

}

//------------------------------------------------------------------------------
//[처리함수]--------------------------------------------------------------------
//------------------------------------------------------------------------------

void __fastcall Tmain_Form::_Resize(void)
{
  //[2006.12.15.금][생성!!!]{-------------------------------------------
  //폼의 크기가 변하는 경우 포함하고 있는 모든 폼의 크기를 바꾸어 준다.
  //
  //[2012.06.05.화][수정!!!]--------------------------------------------
  //[맷돌-통합개발환경] 크기 조정시 [중복 처리] 방지 부분 추가.
  //}-------------------------------------------------------------------

  //[하위메뉴] 등 메뉴가 보이지 않게 만든다.
  if(ide_menu_Form != NULL)
  {
    ide_menu_Form->_SubMenu_Hide();
    ide_menu_Form->_Menu2();

    //[정보판:감추기]
    //{
        //[2012.05.23.수][추가!!!]{-----------------
        //잔상이 남지 않도록 반드시 가장 먼저 처리.
        //}-----------------------------------------

        if(info_tree_Form != NULL)
        {
          if(info_tree_Form->Visible == true) { info_tree_Form->Visible = false; }

        }

    //}

  }

  //[중복 방지]
  //{
      //[2012.06.05.화][추가!!!]{-------------------------------------------------
      //[맷돌-통합개발환경] 크기 조정시 [가로/세로] 순으로 두번
      //전체 크기 조정이 이루어 지는 것을 막기 위하여 마지막 한번만
      //처리하도록 한다.
      //실제는 <Tide_caption_Form::FormMouseUp()> 안에서 <_swResize> 가 설정된다.
      //}-------------------------------------------------------------------------

      if(_swResize == true) { IDE_ResizeForms(); }
      
  //}
  
  return;

}

void __fastcall Tmain_Form::IDE_Test(void)
{
  //여러 검증을 위한 함수.

  //...

  return;

}

//------------------------------------------------------------------------------
//[가상통신포트]----------------------------------------------------------------
//------------------------------------------------------------------------------

void __fastcall Tmain_Form::ComM0_Txd(void)
{
  //[2009.04.13.월][생성!!!]{---------------------
  //[MODE:0] 의 [송신 저장소] 의 내용을 출력한다.
  //}---------------------------------------------

  //[VAR]
  //{
      class VMOS   *vmos;

  //}

  //[VMOSCOM 주소얻기]{---
  VMOS_GetPtr(&vmos);
  //}---------------------

  //[전송]
  //{
      //상대방의 [수신 저장소] 에 기록한다.
      vmos->ComM0_Rxd(comM0_TxdBuf, comM0_TxdCount);

  //}

  //[후처리]
  //{
      //모두 전송하였으므로 비워준다.
      comM0_TxdCount = 0;

  //}

  return;

}

void __fastcall Tmain_Form::ComM0_Rxd(//대상 저장소.
                                      DTU1  *pBuf,
                                      //복사할 개수.
                                      DTU2   pCount)
{
  //[2009.04.13.월][생성!!!]{------------------------------------
  //[MODE:0] 의 [수신 저장소] 에 현재 입력 받은 내용을 저장한다.
  //}------------------------------------------------------------

  //[수신]
  //{
      //[수신 저장소] 복사한다.
      memmove(comM0_RxdBuf, pBuf, pCount);

  //}

  //[후처리]
  //{
      //[수신 저장소] 의 수신개수를 기록한다.
      comM0_RxdCount = pCount;

  //}

  return;

}

void __fastcall Tmain_Form::ComM1_Txd(void)
{
  //[2009.04.12.일][생성!!!]{-----------------------------------------------
  //현재 [출력 저장소] 안의 내용을 [저장개수] 만큼 [VCOM:RXD] 에 복사한다음
  //현재 [출력 저장소] 를 초기화 한다(실제 전송하는 것).
  //}-----------------------------------------------------------------------

  //[VAR]
  //{
      class VMOS   *vmos;

  //}

  //[VMOSCOM 주소얻기]{-----
  VMOS_GetPtr(&vmos);
  //}-----------------------

  //[전송]
  //{
      //상대방의 [수신 저장소] 에 기록한다.
      vmos->ComM1_Rxd(comM1_TxdBuf, comM1_TxdCount);

  //}

  //[후처리]
  //{
      //모두 전송하였으므로 비워준다.
      comM1_TxdCount = 0;

  //}

  return;

}

void __fastcall Tmain_Form::ComM1_Rxd(//대상 저장소.
                                      DTU1  *pBuf,
                                      //복사할 개수.
                                      DTU2   pCount)
{
  //[2009.04.12.일][생성!!!]{-------------------------------------
  //전달 받은 [저장소] 의 값을 [수신저장소] 에 개수만큼 복사한다.
  //이는 실제는 [수신] 이 된다.
  //}-------------------------------------------------------------

  //[수신]
  //{
      //[수신 저장소] 복사한다.
      memmove(comM1_RxdBuf, pBuf, pCount);

  //}

  //[후처리]
  //{
      //[수신 저장소] 의 수신개수를 기록한다.
      comM1_RxdCount = pCount;

  //}

  return;

}

void __fastcall Tmain_Form::ComM2_Txd(void)
{
  //[2009.04.12.일][생성!!!]{-----------------------------------------------
  //현재 [출력 저장소] 안의 내용을 [저장개수] 만큼 [VCOM:RXD] 에 복사한다음
  //현재 [출력 저장소] 를 초기화 한다(실제 전송하는 것).
  //}-----------------------------------------------------------------------

  //[VAR]
  //{
      class VMOS   *vmos;

  //}

  //[VMOSCOM 주소얻기]{-----
  VMOS_GetPtr(&vmos);
  //}-----------------------

  //[전송]
  //{
      //상대방의 [수신 저장소] 에 기록한다.
      vmos->ComM2_Rxd(comM2_TxdBuf, comM2_TxdCount);

  //}

  //[후처리]
  //{
      //모두 전송하였으므로 비워준다.
      comM2_TxdCount = 0;

  //}

  return;

}

void __fastcall Tmain_Form::ComM2_Rxd(//대상 저장소.
                                      DTU1  *pBuf,
                                      //복사할 개수.
                                      DTU2   pCount)
{
  //[2009.04.12.일][생성!!!]{-------------------------------------
  //전달 받은 [저장소] 의 값을 [수신저장소] 에 개수만큼 복사한다.
  //이는 실제는 [수신] 이 된다.
  //}-------------------------------------------------------------

  //[수신]
  //{
      //[수신 저장소] 복사한다.
      memmove(comM2_RxdBuf, pBuf, pCount);

  //}

  //[후처리]
  //{
      //[수신 저장소] 의 수신개수를 기록한다.
      comM2_RxdCount = pCount;

  //}

  return;

}

//------------------------------------------------------------------------------
//[제한시간설정 타이머]---------------------------------------------------------
//------------------------------------------------------------------------------

void __fastcall Tmain_Form::vmosApiTimeOut_TimerTimer(TObject *Sender)
{
  //[2010.06.13.일][생성!!!]{--------------------------------------------------
  //<VMOS> 내부 지원용으로 [API_시간제한XXX()] 를 지원하기 위한 것이다.
  //이 타이머의 동작은 전부 해당 API 에서만 처리된다.
  //
  //API 쪽에서는 아래와 같이 타이머의 <Enabled> 속성으로 쉽게 구분가능하다.
  //<vmosApiTimeOut_Timer->Enabled : false> : 시간제한에 걸린것.
  //<vmosApiTimeOut_Timer->Enabled : true>  : 아직 시간제한에 안걸린것(구동중).
  //}--------------------------------------------------------------------------

  //[타이머 끄기]
  //{
      //[!]{----------------------------------------
      //일회용이므로 여기서 무조건 타이머를 꺼준다.
      //}-------------------------------------------

      vmosApiTimeOut_Timer->Enabled = false;

  //}

}

void __fastcall Tmain_Form::timeOut_TimerTimer(TObject *Sender)
{
  //[2009.04.11.토][생성!!!]{------------------------------------------------------
  //[제한 시간 설정용 타이머] 로 정해진 시간이 되면 비활성화 시킨다.
  //다른 곳에서 이 [타이머] 가 비활성화 됬다면 [시간제한] 에 걸린것으로 보면 된다.
  //}------------------------------------------------------------------------------

  timeOut_Timer->Interval = 0;
  timeOut_Timer->Enabled  = false;

  return;

}

void __fastcall Tmain_Form::debug_TimerTimer(TObject *Sender)
{
  //[2009.04.17.금][생성!!!]{-----------
  //실제 [검증구동] 을 여기서 담당한다.
  //}-----------------------------------
                                                  
  //[VAR]
  //{
      class  VDEBUG  *vdebug;

  //}

  //[VDEBUG 위치 얻기]{---
  VDEBUG_GetPtr(&vdebug);
  //}---------------------

  //[검증 구동] 처리 함수 호출.
  vdebug->Debug();

  return;

}

void __fastcall Tmain_Form::btnQueue_TimerTimer(TObject *Sender)
{
  //[2009.04.17.금][생성!!!]{----------------------------------------------------------
  //<ACK> 를 확인하고 있는 중에 다른 버튼이 눌려서 실행되는 경우 <ACK> 를 확인할수
  //없는 문제가 발생한다. 따라서 <ACK> 를 확인 중인 경우는 일단 해당 버튼의 처리함수를
  //이곳에 등록했다가 <ACK> 확인이 끝나면 자동으로 처리하게 만든다.
  //일종의 [QUEUE] 와 유사한 개념이다.
  //이로 인하여 어떤 겅우라도 <ACK> 는 반드시 제대로 확인된다.
  //}----------------------------------------------------------------------------------

  //[타이머 끄고 시작]
  //{
      //[2011.07.22.금][중요!!!]{---------------------------------------------------------
      //반드시 타이머를 끝 상태에서 시작한다.
      //그렇지 않은 경우는 예상과 다른 동작이 발생한다.
      //이는 <ide_tree_Form->_EVENT_TabSelect()> 에서 [검증식 계산] 에서 [대기열 등록] 이
      //발생하는 경우 유독 동기화가 제대로 되지 않는 문제가 발생하였다.
      //금일 수정후 제대로 동작되는 것을 확인하였다.
      //}---------------------------------------------------------------------------------
      
      btnQueue_Timer->Enabled = false;

  //}

  //[<ACK> 확인 타이머가 구동중인가?]
  //{
      if(timeOut_Timer->Enabled == true)
      {
        //[2011.07.22.금][타이머]{------------------------
        //아직 처리해서는 안되므로 다음에 처리하기 위하여
        //다시 이 타이머를 동작 시킨다.
        btnQueue_Timer->Enabled = true;
        //}-----------------------------------------------

        return;

      }

  //}

  //[등록 버튼 처리]
  //{
      //동록된 버튼이 있나?
      if(BtnQueue_Event != NULL) { BtnQueue_Event(); }

      //계속 실행되는 것을 방지 하기 위하여 다시 초기화 한다.
      BtnQueue_Event = NULL;

      //계속 실행되는 것을 방지하기 위하여 초기화 한다.
      btnQueue_Timer->Enabled = false;

  //}

  return;

}

void __fastcall Tmain_Form::autoSave_TimerTimer(TObject *Sender)
{
  //[2018.05.05.토][생성!!!]{-------------------------------------------------
  //[맷돌-IDE:자동 저장 기능] 구현.
  //일정 시간 주기로 현재 열려 있는 모든 문서를 자동 저장.
  //
  //[설정대화상자] 에서 [사용:true] 인 경우 타이머가 자동 동작하여 처리하므로
  //여기서는 [설정] 내용을 확인할 필요 없음.
  //
  //[주의!!!]-----------------------------------------------------------------
  //단, [검증] 때는 하지 않고 [편집중] 인 경우만 처리.
  //}-------------------------------------------------------------------------

  //[편집중 인가?]
  //{
      //[!]{-----------------------------------------------------
      //[편집중] 이 아니라 [검증] 등의 경우라면 처리하지 않는다.
      //[편집증] 인 경우는 <_tabindex : 0>.
      //}--------------------------------------------------------
      
      if(ide_buttons_Form->_tabs->_tabindex > 0) return;

  //}

  IDE_File_SaveAll();
  
}

void __fastcall Tmain_Form::FormClose(TObject *Sender, TCloseAction &Action)
{
  //[2009.04.20.월][생성!!!]{-----------------
  //현재 설정 내용을 <*.opt> 문서로 저장한다.
  //}-----------------------------------------

  IDE_OptionFile_Save();

  return;

}

void __fastcall Tmain_Form::FormShow(TObject *Sender)
{
  //[2022.07.15.금][생성]{-------------------------------------------------------
  //실제 모든 [맷돌-IDE] GUI 가 완성된 시점이고,
  //GUI 관련 기능이 완전히 동작할수 있는 시점이다.
  //
  //[중요]***********************************************************************
  //단, <main_Form> 이 가장 먼저 보이고 그 내부 다른 [그림부품] 이 보이게 되므로
  //<IDE_OnShow()> 에서 [픙선도움말] 출력시 정확한 좌표 계산이 안되므로 여기서는
  //일단, <ideShowTimer> 를 <0.5초> 로 설정한 뒤 구동시키는 것만 한다.
  //<0.5초> 동안 모든 그리기가 완료된 뒤 <IDE_OnShow()> 를 처리한다.
  //}----------------------------------------------------------------------------

  ideShowTimer->Interval = 500; //<0.5초>

  ideShowTimer->Enabled = true;

}

void __fastcall Tmain_Form::ideShowTimerTimer(TObject *Sender)
{
  //[2022.07.15.금][생성]

  //계속 이벤트가 발생하는 것을 방지하기 위하여 타이머 정지.
  ideShowTimer->Enabled = false;

  //[맷돌-IDE] 가 보인시점의 처리를 수행.
  IDE_OnShow();
  
}
//------------------------------------------------------------------------------
//[그림부품확인]----------------------------------------------------------------
//------------------------------------------------------------------------------

void __fastcall Tmain_Form::GIGYENICS_GuiPart_Event(void)
{
  //[2010.02.13.금][생성!!!]{--------------------------
  //각 [부품] 들의 [동작함수] 를 확인하기 위한 것이다.
  //}--------------------------------------------------

  //[VAR]
  //{
      char  str[512];

  //}


  //ide_msgbox_Form->_MsgBox(d_MSGBOX_info, IntToStr(_GList->_itemSelIndex).c_str());


  //_GList->_ItemSelStr(str);
  //_GList->_ItemMouseSelStr(str);
  //_GVmos->_captionTitleLabel->_Caption(str);

  //_GVmos->_captionTitleLabel->_Caption("촛점을 얻었다!!!");





}

/*
#include  "event.h"
#include  "msg_queue.h"

char tempBuf[2550];
char printBoxBuf[1024];
*/


//#include  "ide_caption.h"


void __fastcall Tmain_Form::GIGYENICS_GuiPart_Test1(void)
{
  //[2010.02.10.수][생성!!!]{---------
  //새로운 검증 함수를 하나 정의한다.
  //}---------------------------------


/*

  //[VAR]
  //{
      int  i;

  //}

  //_GList->_ItemAdd(" 기계닉스 첨단 대장간 \r\n 하늘나라\r\n백성\r\n");

  //_GList->_ItemReplace(4, " 기계닉스 ");

  _GList->_ItemInsert(5, " 기계닉스 첨단 대장간 \r\n 하늘나라\r\n백성\r\n");

  //_GList->_ItemDelete(0);

  return;



  GVmos_Create(tempBuf, 12, 100, 100, 600, 300, true);

  return;


  ide_editor_Form->_GDotMatrix->_RotStep(1);
  ide_editor_Form->_GDotMatrix->_RotTime(100);

  //ide_editor_Form->_GDotMatrix->_RotStr("기계닉스 첨단대장간 : http://www.gigyenics.co.kr");
  ide_editor_Form->_GDotMatrix->_RotStr("ide_editor_Form->_GDotMatrix->_PrintStr");

  ide_editor_Form->_GDotMatrix->_RotTimer(true);

  return;





      //ide_editor_Form->_GDotMatrix->_Border(true);
      //ide_editor_Form->_GDotMatrix->_Led_Make(d_GDotMatrix_LedBox, 7, clBlack, clWhite, false, clRed, clWhite);

      for(i = 0; i > -250; i--)
      {

        ide_editor_Form->_GDotMatrix->_PrintStr(i, 0, "기계닉스 첨단대장간 : http://www.gigyenics.co.kr");
        Application->ProcessMessages();

        Sleep(100);

      }

      return;


  //[GDotMatrix]
  //{


      _GDotMatrix->_Border(false);
      _GDotMatrix->_BorderColor(clBlue);
      _GDotMatrix->_LedOrgX(0);
      _GDotMatrix->_LedOrgY(0);
      _GDotMatrix->_LedGap(1);

      //0x000080FF

      //_GDotMatrix->_ledTransparent = false;

      _GDotMatrix->_Led_Make(d_GDotMatrix_LedBox, 4, clBlack, clWhite, false, clRed, clWhite);

      for(i = 0; i > -250; i--)
      {

        _GDotMatrix->_PrintStr(i, 0, "          기계닉스 첨단대장간 : http://www.gigyenics.co.kr");
        Application->ProcessMessages();

        Sleep(100);

      }

      return;

  //}

  //[GPrintBox]
  //{
      _GPrintBox->_PrintItem_Set(clBlue, d_FONTSTYLE_default, clWhite);

      FILE_Open_inBUF("H:\\GIGYENICS\\GIGYEIN\\G_PART\\BORLAND\\Turbo2006\\@예제\\맷돌용\\@이전것\\74HC165\\main.c",
                      (unsigned char *)tempBuf, &i);

      _GPrintBox->_Buf(printBoxBuf);
      _GPrintBox->_BufSize(1024);


      //편집기 배경 그림을 바꾼다.
      _GPrintBox->_EditorBack_SetJpeg("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\147BE60C4A7CE37510A206.jpeg");
      _GPrintBox->_EditorBack_Brightness(150);

      //STR_Assign(printBoxBuf, "한글은 가장\r\n우수한 글이다.\r\n한글은 가장 완벽한 문자이다!!!\r\n"
      //                        "C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\164988024AFA6CC525E322.jpeg" );

      //_GPrintBox->_PrintAdd(" ");

      //[출력설정 검증]
      //{
          _GPrintBox->_Print(tempBuf);

          _GPrintBox->_PrintItem_Set(clBlue, d_FONTSTYLE_bold, clWhite);
          _GPrintBox->_PrintAdd("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\147BE60C4A7CE37510A206.jpeg\r\n"
                                "기계닉스\r\n첨단\r\n대장간");

          _GPrintBox->_PrintItem_Set(clWhite, d_FONTSTYLE_default, clRed);
          _GPrintBox->_PrintAdd("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\147BE60C4A7CE37510A206.jpeg\r\n"
                                "기계닉스\r\n첨단\r\n대장간");

          _GPrintBox->_PrintItem_Set(clGreen, d_FONTSTYLE_bold, clWhite);
          _GPrintBox->_PrintAdd("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\147BE60C4A7CE37510A206.jpeg\r\n"
                                "기계닉스\r\n첨단\r\n대장간");

          _GPrintBox->_PrintItem_Set(clGray, d_FONTSTYLE_default, clYellow);
          _GPrintBox->_PrintAdd("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\147BE60C4A7CE37510A206.jpeg\r\n"
                                "기계닉스\r\n첨단\r\n대장간");

      //}

      _GPrintBox->_BorderColor(clRed);

      _GPrintBox->_ScrollVColor(clBlue);
      _GPrintBox->_ScrollHColor(clBlack);

      return;

  //}



  //[GEditor]
  //{
      //편집기 배경 그림을 바꾼다.
      _GEditor->_EditorBack_SetJpeg("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\164988024AFA6CC525E322.jpeg");

      _GEditor->_EditorBack_Brightness(150);

      return;

  //}


  //_GEditor->_editorEdit->_EDITFILE_NewFile();

  //_GEditor->_editorEdit->_EditBackBrightness(150);

  for(i = 0; i < 2; i++)
  {
    _GEditor->_FocusLine(100); Application->ProcessMessages();
    _GEditor->_FocusLine(50);  Application->ProcessMessages();
    _GEditor->_FocusLine(150); Application->ProcessMessages();
    _GEditor->_FocusLine(10);  Application->ProcessMessages();
    _GEditor->_FocusLine(2);   Application->ProcessMessages();
    _GEditor->_FocusLine(80);  Application->ProcessMessages();
    _GEditor->_FocusLine(30);  Application->ProcessMessages();
    _GEditor->_FocusLine(150); Application->ProcessMessages();
    _GEditor->_FocusLine(100); Application->ProcessMessages();

  }
*/

  


}

void __fastcall Tmain_Form::GIGYENICS_GuiPart_Test0(void)
{
  //[2010.01.25.월][생성!!!]{-----------------------------
  //새로 개발되는 [그림부품] 들의 동작확인을 위한 것이다.
  //}-----------------------------------------------------






  

/*
  //[VAR]
  //{
      struct FONTRESOURCE  *fontresource;

  //}

  //[핸들얻기]
  //{
      FONTRESOURCE_GetHandle(&fontresource);

  //}

  //[기본환경 생성]
  //{
      //[2010.02.04.목][추가!!!]{----------------------------
      //모든 것의 기본이 되므로 가장먼저 생성해 주어야 한다.
      //}----------------------------------------------------

      GPART_GVmos_Create();

  //}

  //[공용부품 생성]
  //{
      GPART_GBalloonBox_Create();

      GPART_GHint_Create();

      GPART_GMsgBox_Create();

      GPART_GFindDialog_Create();


  //}
*/
  //[GVmos]
  //{
      /*
      GPART_GVmos_GetPtr(&_GVmos);

      _GVmos->Visible = true;
      _GVmos->_baseForm->SetFocus();

      //_GVmos->_BackColor(clGray);

      //_GVmos->_CaptionBackColor(clYellow);
      //_GVmos->_CaptionFontColor(clLime);
      //_GVmos->_CaptionFontStyle(d_FONTSTYLE_bold);
      //_GVmos->_BackColor(clYellow);
      */

  //}

  //[GForm]
  //{
      /*
      _GForm          = new TGForm_Form(_GVmos);
      //_GForm->Parent  = _GVmos->_baseForm;

      _GForm->Width  = 550;
      _GForm->Height = 350;

      //화면 중간에 위치하게 만든다.
      _GForm->Left = (_GVmos->Width/2 - _GForm->Width/2);
      _GForm->Top  = (_GVmos->Height/2 - _GForm->Height/2);

      _GForm->Visible = true;


      //_GForm->_BorderColor(clBlue);
      //_GForm->_OutLineColor(clRed);
      //_GForm->_BackColor(clBlack);
      //_GForm->_CaptionFontColor(clLime);
      //_GForm->_CaptionFontStyle(d_FONTSTYLE_bold);
     */

  //}

  //[GList]
  //{
      /*
      _GList          = new TGList_Form(Application);
      _GList->Parent  = _GVmos->_baseForm;
      _GList->Visible = true;

      _GList->_Left(10);
      _GList->_Top(10);
      _GList->_Width(200);
      _GList->_Height(95);

      //_GList->_FontColor(clBlack);
      //_GList->_BackColor(clSilver);

      //_GList->_BorderColor(clRed);

      _GList->_AutoWidth(true);
      _GList->_AutoHeight(true);

      //_GList->_FontSelColor(clYellow);
      //_GList->_FontSelBackColor(clBlue);

      //_GList->_FontMouseSelColor(clYellow);
      //_GList->_FontMouseSelBackColor(clRed);

      //_GList->_MenuMode(true);
      //_GList->_ScrollVisible(true);

      _GList->_ItemStr(" 복사 \r\n"
                       " 잘라내기 \r\n"
                       " 붙이기 \r\n"
                       "\r\n"
                       " 삭제 \r\n"
                       " 모두선택 ");

      //[동작함수]
      //{
          //_GList->_EVENT_ItemSelect = GIGYENICS_GuiPart_Event;
          //_GList->_EVENT_ItemMouseSelect = GIGYENICS_GuiPart_Event;
          //_GList->_EVENT_FocusKill  = GIGYENICS_GuiPart_Event;
          //_GList->_EVENT_FocusSet   = GIGYENICS_GuiPart_Event;
          //_GList->_EVENT_MouseEnter = GIGYENICS_GuiPart_Event;
          //_GList->_EVENT_MouseLeave = GIGYENICS_GuiPart_Event;

      //}

      //_GList->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      //_GList->_BalloonHelpUse(true);
      */

  //}


  //[GPrintBox]
  //{
      /*
      _GPrintBox          = new TGPrintBox_Form(Application);
      _GPrintBox->Parent  = _GForm->_baseForm;
      _GPrintBox->Visible = true;

      _GPrintBox->Top  = 5;
      _GPrintBox->Left = 5;

      //편집기 배경 그림을 바꾼다.
      _GPrintBox->_EditorBack_SetJpeg("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\147BE60C4A7CE37510A206.jpeg");
      _GPrintBox->_EditorBack_Brightness(150);
      */

  //}


  //[GDotMatrix]
  //{
      /*
      _GDotMatrix          = new TGDotMatrix_Form(Application);
      _GDotMatrix->Parent  = _GPrintBox;
      _GDotMatrix->Visible = true;

      _GDotMatrix->Left = 10;
      _GDotMatrix->Top  = 70;


      _GPrintBox->_scrollH->BringToFront();
      _GPrintBox->_scrollV->BringToFront();


      //_GDotMatrix->_BackColor(clBlack);

      _GDotMatrix->_BackBmp(_GPrintBox->_bmp_back_, 10, 70);


      FONTPACK_SetFont_withName(&(_GDotMatrix->_font), 3, "굴림체(6_12_영문_d_v).gft");
      _GDotMatrix->_font.en_offset_left  = 1;
      _GDotMatrix->_font.en_offset_right = 0;

      _GDotMatrix->_ledGap = 1;


      //_GDotMatrix->_Led_Make(d_GDotMatrix_LedBox, 4, clBlack, clWhite, false, clWhite, clWhite);
      _GDotMatrix->_Led_Make(d_GDotMatrix_LedBox, 4, 0x000080FF, clBlack, false, clBlack, clBlack);
      */

  //}


  //[GEditor]
  //{
      /*
      _GEditor          = new TGEditor_Form(Application);
      _GEditor->Parent  = _GForm->_baseForm;
      _GEditor->Visible = true;

      _GEditor->Top  = 10;
      _GEditor->Left = 10;

      _GEditor->_BorderColor(clBlue);

      //새문서생성.
      _GEditor->_editorEdit->_EDITFILE_NewFile();

      _GEditor->_ScrollVColor(clGreen);
      _GEditor->_ScrollHColor(clRed);

      _GEditor->_LineArrowColor(clRed);
      _GEditor->_BreakPointColor(clRed);

      //_GEditor->_FocusLineNum(43);
      //_GEditor->_FocusLineFontColor(clYellow);
      _GEditor->_FocusLineBackColor(clLime);

      //[특수 속성]
      //{
          //_GEditor->_Syntax_ColorKeyword(clRed);
          //_GEditor->_Syntax_ColorString(clBlue);
          //_GEditor->_Syntax_ColorDirective(clYellow);
          //_GEditor->_Syntax_ColorComment(clLime);

          _GEditor->_Document_FileKind(d_Editor_FileKind_c);

      //}
      */

  //}


  //[GEdit]
  //{
      /*
      _GEdit          = new TGEdit_Form(Application);
      _GEdit->Parent  = _GForm->_baseForm;
      _GEdit->Visible = true;

      //화면 중간에 위치하게 만든다.,
      _GEdit->_Left(10);
      _GEdit->_Top(10);
      _GEdit->_Width(200);
      //_GEdit->_Height(20);

      _GEdit->_BorderColor(clRed);
      _GEdit->_FontColor(clBlue);
      _GEdit->_FontStyle(d_FONTSTYLE_bold);
      _GEdit->_BackColor(clYellow);

      //[동작함수]
      //{
          _GEdit->_EVENT_KeyEnter = GIGYENICS_GuiPart_Event;

      //}
      */

  //}



  //[GLabel]
  //{
      /*
      _GLabel          = new TGLabel_Form(Application);
      _GLabel->Parent  = _GVmos->_baseForm;
      _GLabel->Visible = true;

      _GLabel->_Left(10);
      _GLabel->_Top(10);
      _GLabel->_Width(400);
      _GLabel->_Height(16);

      FONTPACK_SetFont_withName(&(_GLabel->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      _GLabel->_GBalloonBox->_font.en_offset_left  = 1;
      _GLabel->_GBalloonBox->_font.en_offset_right = 0;

      //FONTPACK_SetFont_withName(&(_GLabel->_font), 0, "굴림체(16_16_한글_d_f).gft");
      //FONTPACK_SetFont_withName(&(_GLabel->_font), 3, "굴림체(8_16_영문_b_v).gft");
      //_GLabel->_font.en_offset_left  = 2;
      //_GLabel->_font.en_offset_right = 0;

      _GLabel->_FontColor(clBlack);
      _GLabel->_BackColor(clYellow);

      _GLabel->_Border(true);
      _GLabel->_BorderColor(clRed);


      _GLabel->_AutoWidth(true);
      _GLabel->_AutoHeight(true);


      _GLabel->_Caption(" 알림글 gigyenics GIGYENICS \r\n 기계닉스 첨단 대장간 \r\n KOREA http://www.gigyenics.co.kr \r\n 알림글 gigyenics GIGYENICS ");
      //_GLabel->_Caption("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GLabel->_CaptionAutoPosV(false);
      //_GLabel->_CaptionAutoPosH(true);


      _GLabel->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GLabel->_BalloonHelpUse(true);
      */

  //}



  //[GMsgBox]
  //{
      /*
      _GMsgBox          = new TGMsgBox_Form(Application);
      _GMsgBox->Parent  = _GVmos->_baseForm;
      //_GMsgBox->Visible = true;

      //_GMsgBox->_PartColor(clRed);
      //_GMsgBox->_BorderColor(clRed);
      //_GMsgBox->_OutLineColor(clRed);
      //_GMsgBox->_BackColor(clYellow);
      //_GMsgBox->_BtnBackColor(clSilver);
      //_GMsgBox->_BtnFontColor(clRed);
      //_GMsgBox->_BtnFontStyle(d_FONTSTYLE_bold);
      //_GMsgBox->_MsgFontColor(clGreen);
      //_GMsgBox->_MsgFontStyle(d_FONTSTYLE_bold);
      //_GMsgBox->_CaptionFontColor(clLime);
      //_GMsgBox->_CaptionFontStyle(d_FONTSTYLE_bold);

      //_GMsgBox->_MsgBox(d_MSGBOX_default, "확인용문자열");

      //_GMsgBox->_MsgBox(d_MSGBOX_default,
      //                  "알림글 GIGYENICS\r\n기계닉스 첨단 대장간\r\nhttp://www.gigyenics.co.kr");

      //_GMsgBox->_MsgBox_OkCancel(d_MSGBOX_default,
      //                           "알림글 GIGYENICS\r\n기계닉스 첨단 대장간\r\nhttp://www.gigyenics.co.kr");

      _GMsgBox->_MsgBox_Edit(d_MSGBOX_info,
                             "알림글 GIGYENICS\r\n기계닉스 첨단 대장간\r\nhttp://www.gigyenics.co.kr");
      */

  //}



  //[GScrollH]
  //{
      /*
      _GScrollH          = new TGScrollH_Form(Application);
      _GScrollH->Parent  = _GVmos->_baseForm;
      _GScrollH->Visible = true;

      _GScrollH->_Left(10);
      _GScrollH->_Top(10);
      _GScrollH->_Width(600);
      _GScrollH->_Height(15);

      _GScrollH->_DesignSize(100);
      _GScrollH->_Min(0);
      _GScrollH->_Max(200);

      _GScrollH->_Position(100);

      FONTPACK_SetFont_withName(&(_GScrollH->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      _GScrollH->_GBalloonBox->_font.en_offset_left  = 1;
      _GScrollH->_GBalloonBox->_font.en_offset_right = 0;

      _GScrollH->_Border(true);
      _GScrollH->_BorderColor(clRed);

      _GScrollH->_BackColor(clYellow);
      _GScrollH->_ThumbColor(clRed);
      _GScrollH->_ThumbBackColor(clBlack);
      _GScrollH->_ArrowLColor(clBlue);
      _GScrollH->_ArrowRColor(clGreen);




      _GScrollH->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GScrollH->_BalloonHelpUse(true);
      */

  //}



  //[GEdgeBox]
  //{
      /*
      _GEdgeBox          = new TGEdgeBox_Form(Application);
      _GEdgeBox->Parent  = _GVmos->_baseForm;
      _GEdgeBox->Visible = true;

      //화면 중간에 위치하게 만든다.,
      _GEdgeBox->_Left(10);
      _GEdgeBox->_Top(10);

      _GEdgeBox->_Width(100);
      _GEdgeBox->_Height(20);

      _GEdgeBox->_BackColor(clYellow);
      _GEdgeBox->_BorderColor(clRed);

      */


  //}

  //[GEdit]
  //{
      /*
      _GEdit          = new TGEdit_Form(Application);
      _GEdit->Parent  = _GVmos->_baseForm;
      _GEdit->Visible = true;

      //화면 중간에 위치하게 만든다.,
      _GEdit->_Left(10);
      _GEdit->_Top(10);
      _GEdit->_Width(200);
      //_GEdit->_Height(20);

      //_GEdit->_BorderColor(clRed);
      //_GEdit->_FontColor(clBlue);
      //_GEdit->_FontStyle(d_FONTSTYLE_bold);
      //_GEdit->_BackColor(clYellow);
      */

  //}


  //[GCaret]
  //{
      /*
      _GCaret          = new TGCaret_Form(Application);
      _GCaret->Parent  = _GVmos->_baseForm;

      //화면 중간에 위치하게 만든다.,
      _GCaret->Left = 10;
      _GCaret->Top  = 10;

      _GCaret->_Show();

      _GCaret->_FontColor(clYellow);
      _GCaret->_BackColor(clBlue);
      _GCaret->_Shape_Composition('갑');
      */

  //}


  //[GFindDialog]
  //{
      /*
      _GFindDialog          = new TGFindDialog_Form(Application);
      _GFindDialog->Parent  = _GVmos->_baseForm;

      //화면 중간에 위치하게 만든다.,
      _GFindDialog->Left = (_GVmos->Width/2 - _GFindDialog->Width/2);
      _GFindDialog->Top  = (_GVmos->Height/2 - _GFindDialog->Height/2);

      _GFindDialog->Visible = true;

      //_GFindDialog->_BtnBackColor(clYellow);
      //_GFindDialog->_BackColor(clYellow);
      //_GFindDialog->_BorderColor(clLime);
      //_GFindDialog->_PartColor(clRed);

      //[편집기] 와 연결한다.
      //_GFindDialog->_GEditor = (TGEditor_Form *)editor_edit_Form;
      */

  //}



  //[GForm]
  //{
      /*
      _GForm          = new TGForm_Form(Application);
      _GForm->Parent  = _GVmos->_baseForm;

      //화면 중간에 위치하게 만든다.,
      //_GForm->Left = (Screen->Width/2 - _GForm->Width/2);
      //_GForm->Top  = (Screen->Height/2 - _GForm->Height/2);

      _GForm->Left = (_GVmos->Width/2 - _GForm->Width/2);
      _GForm->Top  = (_GVmos->Height/2 - _GForm->Height/2);

      _GForm->Visible = true;

      //_GForm->_BorderColor(clBlue);
      //_GForm->_OutLineColor(clRed);
      //_GForm->_BackColor(clWhite);
      //_GForm->_CaptionFontColor(clLime);
      //_GForm->_CaptionFontStyle(d_FONTSTYLE_bold);
      */

  //}


  //[GLabel]
  //{
      /*
      _GLabel          = new TGLabel_Form(Application);
      _GLabel->Parent  = _GVmos->_baseForm;
      _GLabel->Visible = true;

      _GLabel->_Left(10);
      _GLabel->_Top(10);
      _GLabel->_Width(400);
      _GLabel->_Height(16);

      FONTPACK_SetFont_withName(&(_GLabel->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      _GLabel->_GBalloonBox->_font.en_offset_left  = 1;
      _GLabel->_GBalloonBox->_font.en_offset_right = 0;

      //FONTPACK_SetFont_withName(&(_GLabel->_font), 0, "굴림체(16_16_한글_d_f).gft");
      //FONTPACK_SetFont_withName(&(_GLabel->_font), 3, "굴림체(8_16_영문_b_v).gft");
      //_GLabel->_font.en_offset_left  = 2;
      //_GLabel->_font.en_offset_right = 0;

      _GLabel->_FontColor(clBlack);
      _GLabel->_BackColor(clYellow);

      _GLabel->_Border(true);
      _GLabel->_BorderColor(clRed);


      _GLabel->_AutoWidth(true);
      _GLabel->_AutoHeight(true);


      _GLabel->_Caption(" 알림글 GIGYENICS \r\n 기계닉스 첨단 대장간 \r\n http://www.gigyenics.co.kr ");
      //_GLabel->_Caption("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GLabel->_CaptionAutoPosV(false);
      //_GLabel->_CaptionAutoPosH(true);


      _GLabel->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GLabel->_BalloonHelpUse(true);
      */

  //}


  //[GRadioButton]
  //{
      /*
      _GRadioButton          = new TGRadioButton_Form(Application);
      _GRadioButton->Parent  = _GVmos->_baseForm;
      _GRadioButton->Visible = true;

      _GRadioButton->_Left(10);
      _GRadioButton->_Top(10);

      //_GRadioButton->_FrontColor(clBlue);
      //_GRadioButton->_BackColor(clLime);
      _GRadioButton->_Checked(true);

      _GRadioButton->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GRadioButton->_BalloonHelpUse(true);

      FONTPACK_SetFont_withName(&(_GRadioButton->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      FONTPACK_SetFont_withName(&(_GRadioButton->_GBalloonBox->_font), 7, "굴림체(6_12_영문_b_v).gft");

      _GRadioButton->_GBalloonBox->_font.en_offset_left  = 1;
      _GRadioButton->_GBalloonBox->_font.en_offset_right = 0;
      //_GRadioButton->_GBalloonBox->_FontStyle(d_FONTSTYLE_bold);
      _GRadioButton->_GBalloonBox->_FontColor(clBlue);
      _GRadioButton->_GBalloonBox->_BackColor(clYellow);

      _GRadioButton->_Enable(true);
      */

  //}




  //[GCheckButton]
  //{
      /*
      _GCheckButton          = new TGCheckButton_Form(Application);
      _GCheckButton->Parent  = _GVmos->_baseForm;
      _GCheckButton->Visible = true;

      _GCheckButton->_Left(10);
      _GCheckButton->_Top(10);


      //_GCheckButton->_FrontColor(clRed);
      //_GCheckButton->_BackColor(clYellow);
      _GCheckButton->_Checked(true);


      _GCheckButton->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GCheckButton->_BalloonHelpUse(true);

      FONTPACK_SetFont_withName(&(_GCheckButton->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      FONTPACK_SetFont_withName(&(_GCheckButton->_GBalloonBox->_font), 7, "굴림체(6_12_영문_b_v).gft");

      _GCheckButton->_GBalloonBox->_font.en_offset_left  = 1;
      _GCheckButton->_GBalloonBox->_font.en_offset_right = 0;
      _GCheckButton->_GBalloonBox->_FontStyle(d_FONTSTYLE_bold);
      _GCheckButton->_GBalloonBox->_FontColor(clBlue);
      _GCheckButton->_GBalloonBox->_BackColor(clYellow);

      //_GCheckButton->_Enable(false);
      */

  //}



  //[GScrollV]
  //{
      /*
      _GScrollV          = new TGScrollV_Form(Application);
      _GScrollV->Parent  = _GVmos->_baseForm;
      _GScrollV->Visible = true;

      _GScrollV->_Left(10);
      _GScrollV->_Top(10);
      _GScrollV->_Width(15);
      _GScrollV->_Height(150);

      FONTPACK_SetFont_withName(&(_GScrollV->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      _GScrollV->_GBalloonBox->_font.en_offset_left  = 1;
      _GScrollV->_GBalloonBox->_font.en_offset_right = 0;

      _GScrollV->_Border(true);
      _GScrollV->_BorderColor(clRed);

      _GScrollV->_BackColor(clYellow);
      _GScrollV->_ThumbColor(clRed);
      _GScrollV->_ThumbBackColor(clBlack);
      _GScrollV->_ArrowUColor(clBlue);
      _GScrollV->_ArrowDColor(clGreen);

      _GScrollV->_DesignSize(100);
      _GScrollV->_Min(0);
      _GScrollV->_Max(200);

      _GScrollV->_Position(100);


      _GScrollV->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GScrollV->_BalloonHelpUse(true);
      */

  //}


  //[GProgress]
  //{
      /*
      _GProgress          = new TGProgress_Form(Application);
      _GProgress->Parent  = _GVmos->_baseForm;
      _GProgress->Visible = true;

      _GProgress->_Left(10);
      _GProgress->_Top(10);
      _GProgress->_Width(600);
      _GProgress->_Height(20);

      FONTPACK_SetFont_withName(&(_GProgress->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      _GProgress->_GBalloonBox->_font.en_offset_left  = 1;
      _GProgress->_GBalloonBox->_font.en_offset_right = 0;

      _GProgress->_BackColor(clYellow);

      _GProgress->_BorderColor(clRed);
      _GProgress->_BorderGap(4);

      _GProgress->_ProgressBackColor(clLime);
      _GProgress->_ProgressBorderColor(clBlack);
      _GProgress->_ProgressColor(clGreen);

      _GProgress->_Min(0);
      _GProgress->_Max(100);
      _GProgress->_Progress(50);

      _GProgress->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GProgress->_BalloonHelpUse(true);
      */

  //}

  //[GTabs]
  //{
      /*
      _GTabs          = new TGTabs_Form(Application);
      _GTabs->Parent  = _GVmos->_baseForm;
      _GTabs->Visible = true;

      _GTabs->_Left(10);
      _GTabs->_Top(10);
      _GTabs->_Width(600);
      _GTabs->_Height(16);

      //FONTPACK_SetFont_withName(&(_GTabs->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      //_GTabs->_GBalloonBox->_font.en_offset_left  = 1;
      //_GTabs->_GBalloonBox->_font.en_offset_right = 0;

      //FONTPACK_SetFont_withName(&(_GTabs->_font), 0, "굴림체(16_16_한글_d_f).gft");
      //FONTPACK_SetFont_withName(&(_GTabs->_font), 3, "굴림체(8_16_영문_b_v).gft");
      //_GTabs->_font.en_offset_left  = 2;
      //_GTabs->_font.en_offset_right = 0;

      _GTabs->_FontSelColor(clBlack);
      _GTabs->_FontSelStyle(d_FONTSTYLE_bold);

      _GTabs->_FontDSelColor(clBlue);
      _GTabs->_FontDSelStyle(d_FONTSTYLE_default);

      _GTabs->_Tabs(" 대한민국 \r\n 기계닉스 \r\n 첨단대장간 ");
      _GTabs->_TabSelColor(clYellow);

      _GTabs->_BackColor(clWhite);

      _GTabs->_BorderColor(clRed);
      //_GTabs->_BorderSelUse(false);

      //_GTabs->_Width_Self();

      _GTabs->_BlankText("기계닉스(Gigyenics) 첨단 대장간");
      _GTabs->_BlankTextFontColor(clGreen);
      _GTabs->_BlankTextFontStyle(d_FONTSTYLE_default);

      _GTabs->_TabSelect(2);

      _GTabs->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GTabs->_BalloonHelpUse(true);
      */

  //}




  //[GBmpButton]
  //{
      /*
      _GBmpButton          = new TGBmpButton_Form(Application);
      _GBmpButton->Parent  = _GVmos->_baseForm;
      _GBmpButton->Visible = true;

      _GBmpButton->_Left(10);
      _GBmpButton->_Top(10);
      _GBmpButton->_Width(40);
      _GBmpButton->_Height(32);

      _GBmpButton->_Bitmap(ExtractFilePath(Application->ExeName) + "sysbmp\\button\\control\\compile.bmp");

      _GBmpButton->_ImageWidth(40);
      _GBmpButton->_ImageHeight(32);
      //_GBmpButton->_ImageX(10);
      //_GBmpButton->_ImageY(10);


      _GBmpButton->_IndexBitmap(true);
      _GBmpButton->_IndexWidth(40);
      _GBmpButton->_Index(0);

      _GBmpButton->_FrontColor(clBlue);
      _GBmpButton->_BackColor(clYellow);

      _GBmpButton->_Border(true);
      _GBmpButton->_BorderColor(clRed);

      _GBmpButton->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GBmpButton->_BalloonHelpUse(true);

      FONTPACK_SetFont_withName(&(_GBmpButton->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      FONTPACK_SetFont_withName(&(_GBmpButton->_GBalloonBox->_font), 7, "굴림체(6_12_영문_b_v).gft");
      _GBmpButton->_GBalloonBox->_font.en_offset_left  = 1;
      _GBmpButton->_GBalloonBox->_font.en_offset_right = 0;
      _GBmpButton->_GBalloonBox->_FontStyle(d_FONTSTYLE_bold);
      */

  //}



  //[GHint]
  //{
      /*
      _GHint          = new TGHint_Form(Application);
      _GHint->Parent  = _GVmos->_baseForm;
      _GHint->Visible = false;

      //FONTPACK_SetFont_withName(&(_GHint->_font), 0, "굴림체(16_16_한글_d_f).gft");
      FONTPACK_SetFont_withName(&(_GHint->_font), 3, "굴림체(6_12_영문_d_v).gft");

      _GHint->_font.en_offset_left  = 1;
      _GHint->_font.en_offset_right = 0;

      _GHint->_ShowHint(30, 10, "기계닉스(Gigyenics) : http://www.gigyenics.co.kr 대한민국");

      _GHint->_BackColor(clYellow);
      _GHint->_FontColor(clBlack);
      _GHint->_BorderColor(clRed);
      */

  //}



  //[GBalloonBox]
  //{
      //이것은 오직 한개만 사용하므로 별도 설정할 필요는 없다.

      /*
      _GBalloonBox          = new TGBalloonBox_Form(Application);
      _GBalloonBox->Parent  = _GVmos->_baseForm;
      _GBalloonBox->Visible = false;

      _GBalloonBox->Left    = 10;
      _GBalloonBox->Top     = 10;


      FONTPACK_SetFont_withName(&(_GBalloonBox->_font), 0, "굴림체(16_16_한글_d_f).gft");
      FONTPACK_SetFont_withName(&(_GBalloonBox->_font), 3, "굴림체(8_16_영문_b_v).gft");

      _GBalloonBox->_font.offset_left   = 0;
      _GBalloonBox->_font.offset_right  = 0;
      _GBalloonBox->_font.offset_top    = 0;
      _GBalloonBox->_font.offset_bottom = 0;

      _GBalloonBox->_font.en_offset_left  = 2;
      _GBalloonBox->_font.en_offset_right = 0;


      _GBalloonBox->_BalloonBox(30, 10, false, "기계닉스(Gigyenics) : http://www.gigyenics.co.kr");


      _GBalloonBox->_OutLineColor(clRed);
      _GBalloonBox->_BackColor(clYellow);
      _GBalloonBox->_FontColor(clBlack);

      //_GBalloonBox->_AlphaBlend(true);
      //_GBalloonBox->_AlphaBlendValue(200);
      */


  //}


  //[GButton]
  //{
      /*
      _GButton          = new TGButton_Form(Application);
      _GButton->Parent  = _GVmos->_baseForm;
      _GButton->Visible = true;

      _GButton->_Left(10);
      _GButton->_Top(10);
      _GButton->_Width(420);
      _GButton->_Height(30);

      FONTPACK_SetFont_withName(&(_GButton->_GBalloonBox->_font), 3, "굴림체(6_12_영문_d_v).gft");
      _GButton->_GBalloonBox->_font.en_offset_left  = 1;
      _GButton->_GBalloonBox->_font.en_offset_right = 0;

      FONTPACK_SetFont_withName(&(_GButton->_font), 0, "굴림체(16_16_한글_d_f).gft");
      FONTPACK_SetFont_withName(&(_GButton->_font), 3, "굴림체(8_16_영문_b_v).gft");
      _GButton->_font.en_offset_left  = 2;
      _GButton->_font.en_offset_right = 0;

      _GButton->_FontColor(clBlack);
      _GButton->_BackColor(clYellow);
      _GButton->_BorderColor(clRed);

      _GButton->_Caption("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      //_GButton->_CaptionAutoPos(false);

      _GButton->_BalloonHelpStr("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");
      _GButton->_BalloonHelpUse(true);
      */

  //}


 /*

  //[일반 포인터를 사용한 동적 생성]{-------------------------------------
  //이 경우 [포인터(8Byte)] 는 [한국형C] 안에서 제공한다.
  //VMOS 내부적으로 관리할 필요가 없이 [생성자] 의 정보로 직접 관리하므로
  //관리가 매우 쉬워진다.
  //}---------------------------------------------------------------------

  //[ide_mbutton]
  //{
      ((TGButton_Form *)_GPart_)          = new TGButton_Form(Application);
      ((TGButton_Form *)_GPart_)->Parent  = msg_msg_Form;
      ((TGButton_Form *)_GPart_)->Visible = true;

      ((TGButton_Form *)_GPart_)->Left = 10;
      ((TGButton_Form *)_GPart_)->Top  = 50;

  //}

  FONTPACK_SetFont_withName(&(((TGButton_Form *)_GPart_)->_font), 0, "굴림체(12_12_한글_d_f).gft");
  FONTPACK_SetFont_withName(&(((TGButton_Form *)_GPart_)->_font), 3, "굴림체(6_12_영문_d_v).gft");

  ((TGButton_Form *)_GPart_)->_font.offset_left   = 0;
  ((TGButton_Form *)_GPart_)->_font.offset_right  = 0;
  ((TGButton_Form *)_GPart_)->_font.offset_top    = 0;
  ((TGButton_Form *)_GPart_)->_font.offset_bottom = 0;

  ((TGButton_Form *)_GPart_)->_font.en_offset_left  = 1;
  ((TGButton_Form *)_GPart_)->_font.en_offset_right = 0;

  ((TGButton_Form *)_GPart_)->_Width(300);
  ((TGButton_Form *)_GPart_)->_Height(20);

  //((TGButton_Form *)_GPart_)->_FontColor(clGreen);

  ((TGButton_Form *)_GPart_)->_Caption("기계닉스(Gigyenics) : http://www.gigyenics.co.kr");

  */

}

/*
class GTimer_CopyEx
{
  private:
  public:

  __fastcall GTimer_CopyEx(void);
  __fastcall ~GTimer_CopyEx(void);

  TTimer * timer;

  void __fastcall _TimerEvent(TObject *Sender);

};

__fastcall GTimer_CopyEx::GTimer_CopyEx(void)
{
  timer = new TTimer(NULL);
  timer->OnTimer = _TimerEvent;
  timer->Interval = 10;
  timer->Enabled = true;

}

__fastcall GTimer_CopyEx::~GTimer_CopyEx(void)
{
  ShowMessage("삭제!!!");

  delete  timer;

}

void __fastcall GTimer_CopyEx::_TimerEvent(TObject *Sender)
{
  //가장 먼저 타이머 정지 처리. 
  timer->Enabled = false;


  //파일 복사 내용 기술.
  // ...


  ShowMessage("복사 타이머 가동됐음!!!");

  delete this;

}
*/

void __fastcall Tmain_Form::GIGYENICS_GUI_Test_Init(void)
{
  //[2021.03.29.월][생성]{-------------------
  //<GIGYENICS_GUI_Test()> 관련 초기화 수행.
  //<Tmain_Form()> 에서 호출.
  //}----------------------------------------
/*
  _GImageBox = NULL;
*/
}

void __fastcall Tmain_Form::GImgBox_EVENT_Click(void)
{
/*
  //[VAR]
  //{
      AnsiString  imagePathNameExt;

      char        name[1024];

      int         bmpWidth, bmpHeight;

  //}

  //[이름만 추출]
  //{
      STR_GetFileNameOnly_ExceptExt(_GImageBox->_imagePathNameExt.c_str(), name);

  //}

  if     (STR_Match_NoCase(name, "G.MTDL.A") == true)
  {
    imagePathNameExt = ExtractFilePath(Application->ExeName) + "gigyenics\\etc\\gmtdl-x-pin-table\\G.MTDL.A1.jpg";

  }
  else if(STR_Match_NoCase(name, "G.MTDL.A1") == true)
  {
    imagePathNameExt = ExtractFilePath(Application->ExeName) + "gigyenics\\etc\\gmtdl-x-pin-table\\G.MTDL.B.jpg";

  }
  else if(STR_Match_NoCase(name, "G.MTDL.B") == true)
  {
    imagePathNameExt = ExtractFilePath(Application->ExeName) + "gigyenics\\etc\\gmtdl-x-pin-table\\G.MTDL.A.jpg";

  }

  Jpg_Get_Size(imagePathNameExt.c_str(), &bmpWidth, &bmpHeight);

  _GImageBox->_Width(bmpWidth + 20);
  _GImageBox->_Height(bmpHeight + 20);
  _GImageBox->Left = (Screen->Width/2 - _GImageBox->Width/2);
  _GImageBox->Top  = (Screen->Height/2 - _GImageBox->Height/2);

  _GImageBox->_ImageWidth(bmpWidth);
  _GImageBox->_ImageHeight(bmpHeight);

  _GImageBox->_Image(imagePathNameExt.c_str(), true, true);
*/
}

void __fastcall Tmain_Form::GImgBox_EVENT_Down(void)
{
//  _GImageBox->_BackColor(clRed);

}

void __fastcall Tmain_Form::GImgBox_EVENT_Up(void)
{
//  _GImageBox->_BackColor(clLime);

}

void __fastcall Tmain_Form::GImgBox_EVENT_MouseEnter(void)
{
//  _GImageBox->_BorderColor(clBlack);

}

void __fastcall Tmain_Form::GImgBox_EVENT_MouseLeave(void)
{
//  _GImageBox->_BorderColor(clRed);

}

void __fastcall Tmain_Form::GIGYENICS_GUI_Test(void)
{
  //[2018.06.11.월][생성!!!]{----------------
  //[폼디자이너] 용[그림부품] 확인을 위한것.
  //}----------------------------------------


  //[확인용]
//{
//    int  처리결과;

//_Dir_경로생성_("C:\\Users\\AMD\\Downloads\\BB\\BB\\@MIG-41X\\");

/*
_File_고급_이동_("C:\\Users\\AMD\\Downloads\\AA\\AA\\@MIG-41\\",
               "C:\\Users\\AMD\\Downloads\\BB\\BB\\@MIG-41X\\",
               //덮어쓰는 경우는 <true>.
               true,
               //진행대화상자를 보이는 경우는 <true>.
               true,
               //내부 처리를 중단시킬 경우 <true>.
               //사용하지 않을 때는 <NULL>.
               NULL,
               //[처리결과] 반환.
               &처리결과);
*/

//MoveFile("C:\\Users\\AMD\\Downloads\\AA\\AA\\@MIG-41",
//         "C:\\Users\\AMD\\Downloads\\BB\\BB\\@MIG-41X");


return;

//}


  /*
  #if d_BuildTool_TC2006
  //{
      ShowMessage("Turbo C++ 2006 으로 빌드!!!");

  //}
  #else
  //{
      ShowMessage("<ECB/CE> 로 빌드!!!");

  //}
  #endif
  */

  //[VAR]
  //{
      //AnsiString  fileName;

  //}

  //fileName = "C:\\Users\\AMD\\Downloads\\기계닉스\\download (6).jpeg";

  //SHBrowseForFolder("");

  //main_Form->vmos_OpenDialog->FileName = fileName;

  //main_Form->vmos_OpenDialog->Execute();


  /*
  //[2022.09.10.토][추가]
  ITEMIDLIST* pItem = ILCreateFromPath("Z:\\@SX\\((@))토렌트바이\\2950637897_7cj4gGHZ_image.jpg");

  SHOpenFolderAndSelectItems(pItem, 0, NULL, 0);

  ILFree(pItem);
  */


//  MoveFile("C:\\Users\\AMD\\Downloads\\폴더이름X\\", "C:\\Users\\AMD\\Downloads\\폴더이름@\\");






/*
  //[GImageBox]
  //{
      //[2021.03.29.월][추가]

      //[VAR]
      //{
          AnsiString  imagePathNameExt;

          int         bmpWidth, bmpHeight;

      //}

      if(_GImageBox != NULL) { delete _GImageBox; _GImageBox = NULL; }

      _GImageBox          = new TGImageBox_Form(this);
      _GImageBox->Parent  = NULL;

      //[초기화]
      //{
          //그림 할당하기.
          imagePathNameExt = ExtractFilePath(Application->ExeName) + "gigyenics\\etc\\gmtdl-x-pin-table\\G.MTDL.A.jpg";

          Jpg_Get_Size(imagePathNameExt.c_str(), &bmpWidth, &bmpHeight);

          _GImageBox->_Width(bmpWidth + 20);
          _GImageBox->_Height(bmpHeight + 20);
          _GImageBox->Left = (Screen->Width/2 - _GImageBox->Width/2);
          _GImageBox->Top  = (Screen->Height/2 - _GImageBox->Height/2);

          _GImageBox->_Border(true);

          _GImageBox->_ImageX(10);
          _GImageBox->_ImageY(10);
          _GImageBox->_ImageWidth(bmpWidth);
          _GImageBox->_ImageHeight(bmpHeight);

          _GImageBox->_Image(imagePathNameExt.c_str(), true, true);

          _GImageBox->_BorderColor(clRed);
          _GImageBox->_BackColor(clLime);

          _GImageBox->_EVENT_Click      = GImgBox_EVENT_Click;
          _GImageBox->_EVENT_Down       = GImgBox_EVENT_Down;
          _GImageBox->_EVENT_Up         = GImgBox_EVENT_Up;
          _GImageBox->_EVENT_MouseEnter = GImgBox_EVENT_MouseEnter;
          _GImageBox->_EVENT_MouseLeave = GImgBox_EVENT_MouseLeave;

      //}

      _GImageBox->Visible = true;

  //}
  
*/

/*
  //[타이머 활성화]
  //{
      GTimer_CopyEx *timer_CopyEx;
      timer_CopyEx = new GTimer_CopyEx();

  //}

*/


/*
  main_Form->vmos_OpenDialog->Options.Clear ();
  main_Form->vmos_OpenDialog->Options << ofHideReadOnly << ofAllowMultiSelect << ofEnableSizing;

  main_Form->vmos_OpenDialog->Execute();

  if(main_Form->vmos_OpenDialog->Options.Contains(ofAllowMultiSelect) == true)
  {
    ShowMessage("다중선택!!!");

  }
  else
  {
    ShowMessage("단일선택!!!");

  }

  main_Form->vmos_OpenDialog->Options.Clear ();
  main_Form->vmos_OpenDialog->Options << ofHideReadOnly << ofEnableSizing;

  main_Form->vmos_OpenDialog->Execute();

  if(main_Form->vmos_OpenDialog->Options.Contains(ofAllowMultiSelect) == true)
  {
    ShowMessage("다중선택!!!");

  }
  else
  {
    ShowMessage("단일선택!!!");

  }

*/


  //ShowMessage(main_Form->vmos_OpenDialog->Files->Strings[0] + "#");
  //ShowMessage(main_Form->vmos_OpenDialog->Files->Text + "#");


  /*
  main_Form->vmos_OpenDialog->Options.Clear ();
  main_Form->vmos_OpenDialog->Options << ofHideReadOnly << ofEnableSizing;

  main_Form->vmos_OpenDialog->Execute();
  */


  /*
  bool result = false;

  result = Files_MoveEx("C:\\Users\\AMD\\Downloads\\12 Strong(2018).mp4\r\n"
                        "D:\\@WD3T(복구)\\Orbiter 9(2017).mp4",
                        "F:\\새 폴더\\확인\\(복사)12 Strong(2018).mp4\r\n"
                        "F:\\새 폴더\\확인\\(복사)Orbiter 9(2017).mp4",
                        true,
                        true);

  if(result == true) ShowMessage("성공");
  else               ShowMessage("오류");
  return;
  */

  /*
  bool result = false;

  result = Files_CopyEx("C:\\Users\\AMD\\Downloads\\12 Strong(2018).mp4\r\n"
                        "D:\\@WD3T(복구)\\Orbiter 9(2017).mp4",
                        "F:\\새 폴더\\확인\\(복사)12 Strong(2018).mp4\r\n"
                        "F:\\새 폴더\\확인\\(복사)Orbiter 9(2017).mp4",
                        true,
                        true);

  if(result == true) ShowMessage("성공");
  else               ShowMessage("오류");
  return;
  */

  /*
  bool result = false;

  //[폴더] 는 복사되지 않는다(파일만 가능).
  result = File_CopyEx("D:\\@WD3T(복구)\\",
                       "F:\\새 폴더\\",
                       true,
                       true);

  if(result == true) ShowMessage("성공");
  else               ShowMessage("오류");
  return;
  */


  /*
  bool result = false;

  result = Dir_MoveEx("D:\\@WD3T(복구)\\",
                      "F:\\새 폴더\\",
                      true,
                      true);

  if(result == true) ShowMessage("성공");
  else               ShowMessage("오류");

  return;
  */


  /*
  bool result = false;

  result = RemoveDir("D:\\@WD3T(복구)\\(@)우주\\Space Cowboys(2000)\\새 폴더\\");

  if(result == true) ShowMessage("성공");
  else               ShowMessage("오류");
  */

  /*
  bool result = false;

  result = DirectoryExists((AnsiString)("D:\\@WD3T(복구)\\(@)우주\\Space Cowboys(2000)\\"));

  if(result == true) ShowMessage("중복!!!");
  else               ShowMessage("겹치지 않음");
  */


  /*
  bool result = false;

  result = Dir_IsEmpty("F:\\새 폴더\\(@)우주\\Space Cowboys(2000)\\");

  if(result == true) ShowMessage("비었음");
  else               ShowMessage("들어있음");
  */




  /*
  bool result = false;

  result = File_MoveEx("D:\\@WD3T(복구)\\(@)우주\\Orbiter 9(2017)\\Orbiter 9(2017).mp4",
                       "F:\\새 폴더\\Orbiter 9(2017).mp4",
                       true,
                       false);

  return;
  */


  /*
  bool result = false;

  result = Dir_CopyEx("D:\\@WD3T(복구)\\",
                      "F:\\새 폴더\\",
                      false,
                      true);

  if(result == true) ShowMessage("성공");
  else               ShowMessage("오류");
  return;
  */

  
  /*
  bool result = false;

  result = File_CopyEx("F:\\(e)\\a.mp4",
                       "C:\\Users\\AMD\\Downloads\\a.mp4",
                       false,
                       true);

  if(result == true) ShowMessage("성공");
  else               ShowMessage("오류");

  return;
  */
  
  /*
  Dir_Copy("F:\\새 폴더\\",
           "D:\\@WD3T(복구)\\(@)묶음\\@Avatar\\");

  return;

  */


  /*
  File_MoveEx("F:\\(e)\\새 폴더\\a.mp4",
              "C:\\Users\\AMD\\Downloads\\a.mp4",
              true,
              true);
  */


/*

  //[2020.09.30.수][추가]
  //{
      //[2020.09.30.수][추가]

      //[VAR]
      //{
          GProgressDialog  *_GProgressDialog;

          int  t, i;

      //}

      //<GProgressDialog> 확인을 위한것.
      _GProgressDialog = new GProgressDialog();


      _GProgressDialog->_Mode_Multi();


      _GProgressDialog->_Visible(true);


      _GProgressDialog->_TotalProgress_Min(0);
      _GProgressDialog->_TotalProgress_Max(10);
      _GProgressDialog->_TotalProgress_Progress(0);

      for(t = 0; (t < 10) && (_GProgressDialog->_IsVisible()); )
      {

        _GProgressDialog->_OneProgress_Min(0);
        _GProgressDialog->_OneProgress_Max(100);
        _GProgressDialog->_OneProgress_Progress(0);

        for(i = 0; (i < 100) && (_GProgressDialog->_IsVisible()); )
        {
          i++;
          _GProgressDialog->_OneProgress_Progress(i);

          Application->ProcessMessages();

          Sleep(10);

        }

        if(t == 4)
        {
          _GProgressDialog->_Mode_Single();
          Application->ProcessMessages();

        }

        t++;
        _GProgressDialog->_TotalProgress_Progress(t);
        Application->ProcessMessages();

      }


      delete _GProgressDialog;

  //}


*/











  //}



  //[VAR]
  //{
      //struct FONTRESOURCE  *fontresource;

  //}

  //[핸들얻기]
  //{
      //FONTRESOURCE_GetHandle(&fontresource);

  //}

  //[기본환경 생성]
  //{
      //[2010.02.04.목][추가!!!]{----------------------------
      //모든 것의 기본이 되므로 가장먼저 생성해 주어야 한다.
      //}----------------------------------------------------

      //GPART_GVmos_Create();

  //}

  //[공용부품 생성]
  //{
      /*
      GPART_GBalloonBox_Create();

      GPART_GHint_Create();

      GPART_GMsgBox_Create();

      GPART_GFindDialog_Create();
      */

  //}

  //[GVmos]
  //{
      /*
      GPART_GVmos_GetPtr(&_GVmos);

      _GVmos->Visible = true;
      _GVmos->_baseForm->SetFocus();

      //_GVmos->_BackColor(clGray);

      //_GVmos->_CaptionBackColor(clYellow);
      //_GVmos->_CaptionFontColor(clLime);
      //_GVmos->_CaptionFontStyle(d_FONTSTYLE_bold);
      //_GVmos->_BackColor(clYellow);
      */

  //}

  //[GForm]
  //{

      /*
      _GForm          = new TGForm_Form(NULL);
      //_GForm->Parent  = _GVmos->_baseForm;

      _GForm->_Width(550);
      _GForm->_Height(350);

      //화면 중간에 위치하게 만든다.
      _GForm->_Left(Screen->Width/2 - _GForm->Width/2);
      _GForm->_Top(Screen->Height/2 - _GForm->Height/2);

      _GForm->Visible = true;

      //_GForm->_BorderColor(clRed);
      //_GForm->_OutLineColor(clRed);
      _GForm->_BackColor(clRed);
      //_GForm->_CaptionFontColor(clLime);
      //_GForm->_CaptionFontStyle(d_FONTSTYLE_bold);

      _GForm->_Caption("::: 폼디자이너 개발용 :::");

      _GForm->_FormDesignMode(true);
      */

  //}

}


