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

#include <vcl.h>
#pragma hdrstop

#include "ide_dialogbox.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tide_dialogbox_Form *ide_dialogbox_Form;
//---------------------------------------------------------------------------


#include "main.h"
#include "ide_main.h"
#include "ide_library.h"
#include "ide_msgbox.h"
#include "editor_edit.h"
#include "editor_linebox.h"
#include "string_editor.h"

#include "gui.h"

//[2008.02.03.일][추가!!!]
#include "ide_BalloonBox.h"


//[2007.09.26.수][생성!!!]
//{
    //"ide_msgbox" 를 가지고 새로 만들었다.
    //이 날짜 이전의 날짜는 무시한다.

//}


__fastcall Tide_dialogbox_Form::Tide_dialogbox_Form(TComponent* Owner)
        : TForm(Owner)
{
  //[VAR]
  //{
      AnsiString     bmp_path;
      int            width, height;

      TRect          colorBoxTRect;
      int            w, h;

      int            i;

  //}

  //[환경변수]
  //{
      //[2007.10.02.화][추가!!!]
      IDE_Get_Option(&_ide_option);

  //}

  //[초기화]
  //{
      //--------------------------------------------------------------------------
      //크기는 표시되는 내용에 따라 자동으로 처리 되지만 일단 임의 값을 기록한다.
      this->Left     = 0;
      this->Top      = 0;
      this->Width    = 318*2;
      this->Height   = 416;//530;//370;//308;//205;
      this->Color    = clWhite;

      //실제 그림 영역을 생성한다.
      _bmp_ = new Graphics::TBitmap;

      //그림 영역 크기 설정.
      _bmp_->Width       = this->Width;
      _bmp_->Height      = this->Height;

      //24bit bitmap 으로 지정한다.
      _bmp_->PixelFormat = pf24bit;
      //--------------------------------------------------------------------------
  //}

  //[글꼴 설정]
  //{
      //[기본 끌꼴 등록]{------------------------------------------------
      //모든 프로그램에서 기본적으로 사용하는 [system 글꼴] 을 등록한다.
      FONTPACK_SetDefault(&_font);
      //}----------------------------------------------------------------

      //[editor debug margin]
      //{
          _font.margin_size = 0;

      //}

      //문자 margin 을 설정한다.
      _font.offset_left   = 0;
      _font.offset_right  = 0;
      _font.offset_top    = 0;
      _font.offset_bottom = 0;

  //}

  //[속성초기화]
  //{
      //기본적으로 선택되지 않은 상태.
      _caption_selected = false;

  //}

  //[caption 설정]
  //{
      //caption 문자열.(크게 바뀔일이 없다.)
      STR_Assign(_caption, " 기계닉스 대화상자 ");

      //높이 지정.
      _caption_height = 22;

      //caption 문자열의 width 를 구한다.
      FONT_Get_StringOutAreaInfo(&_font, _caption, &width, &height);

      //실제 사용할 caption 폭을 설정한다.
      //_font.margin_size 는 처음 기본값인 0 을 사용한다.(한번만 그려주면 된다.)
      _caption_width = width + (_font.margin_size * 2) + 2;

  //}

  //[컨트롤 생성]
  //{
      //[닫기 버튼]
      //{
          _close_bmpbtns          = new Tgui_bmpbutton_Form(this);
          _close_bmpbtns->Parent  = this;
          _close_bmpbtns->Visible = true;

          //[초기화]
          //{
              //그림 할당하기.
              bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\control\\close.bmp";

              _close_bmpbtns->_Top(0);
              _close_bmpbtns->_Width(12);
              _close_bmpbtns->_Left(0);
              _close_bmpbtns->_Height(12);
              _close_bmpbtns->_Border(true);
              _close_bmpbtns->_Bitmap(bmp_path);
              _close_bmpbtns->_Image_Width(12);
              _close_bmpbtns->_Image_Height(12);

              //동작함수 등록.
              _close_bmpbtns->_EVENT_Click = _EVENT_CloseButton_Click;

          //}

      //}

  //}

  //[풍선도움말]
  //{
      //[2008.02.03.일][추가!!!]
      //처음에는 사용하지 않는다.
      _balloonHelpUse = false;

      //문자열을 초기화 한다.
      _balloonHelpStr = NULL;
      
  //}

  //[그리기]
  //{
      _Shape();

  //}

  //[내부 컨트롤]
  //{
      //[위치 정의]
      //{
          #define  d_LineStyle     psDot//psSolid//psDot
          #define  d_Page2_Left    315

          //[1쪽]
          //{
              #define  d_colorTextTop                    30
              #define  d_colorColorBoxTop                d_colorTextTop + 20
              #define  d_colorEndDotLine                 d_colorColorBoxTop + 28

              #define  d_comportTextTop                  d_colorEndDotLine + 10
              #define  d_comportNumberTop                d_comportTextTop + 20
              #define  d_comportSelectTop                d_comportNumberTop + 16
              #define  d_comportDotLineTop               d_comportSelectTop + 16 + 3

              #define  d_editorTextTop                   d_comportDotLineTop + 10
              #define  d_editorBrigntnessTextTop         d_editorTextTop + 16 + 3
              #define  d_editorBrightnessTop             d_editorBrigntnessTextTop + 12
              #define  d_editorEndDotLine                d_editorBrightnessTop + 20
              #define  d_brightnessScrollH_Width         265

              //[2007.11.22.목][추가!!!]
              #define  d_controlColorTextTop             d_editorEndDotLine + 10

              #define  d_controlColorBreakPointBtn       d_controlColorTextTop + 18
              #define  d_controlColorBreakPointText      d_controlColorBreakPointBtn + 18/2 - 12/2
              #define  d_controlColorBreakPointTop       d_controlColorBreakPointBtn + 18/2 - 8/2

              #define  d_controlColorRunArrowBtn         d_controlColorTextTop + 18 * 2 + 3 * 1
              #define  d_controlColorRunArrowText        d_controlColorRunArrowBtn + 18/2 - 12/2
              #define  d_controlColorRunArrowTop         d_controlColorRunArrowBtn + 18/2 - 11/2 - 1

              #define  d_controlColorLineBoxBtn          d_controlColorTextTop + 18 * 3 + 3 * 2
              #define  d_controlColorLineBoxText         d_controlColorLineBoxBtn + 18/2 - 12/2
              #define  d_controlColorLineBoxTop          d_controlColorLineBoxBtn + 18/2 - 12/2

              #define  d_controlColorEndDotLine          d_controlColorLineBoxBtn + 18 + 6

              //[2007.12.02.일]
              #define  d_syntaxlColorTextTop             d_controlColorEndDotLine + 10

              #define  d_syntaxColorKeywordBtn           d_syntaxlColorTextTop + 18
              #define  d_syntaxColorKeywordText          d_syntaxColorKeywordBtn + 18/2 - 12/2

              #define  d_syntaxColorCommentBtn           d_syntaxlColorTextTop + 18 * 2 + 3 * 1
              #define  d_syntaxColorCommentText          d_syntaxColorCommentBtn + 18/2 - 12/2

              #define  d_syntaxColorHexWordBtn           d_syntaxlColorTextTop + 18 * 3 + 3 * 2
              #define  d_syntaxColorHexWordText          d_syntaxColorHexWordBtn + 18/2 - 12/2

              #define  d_syntaxColorBinWordBtn           d_syntaxlColorTextTop + 18 * 4 + 3 * 3
              #define  d_syntaxColorBinWordText          d_syntaxColorBinWordBtn + 18/2 - 12/2

              #define  d_syntaxColorEndDotLine           d_syntaxColorBinWordBtn + 18 + 6

          //}

          //[2쪽]
          //{
              #define  d_editorBackPicTextTop            30

              #define  d_editorBackPicBtn                d_editorBackPicTextTop + 18
              #define  d_editorBackPicText               d_editorBackPicBtn + 18/2 - 12/2

              #define  d_editorBackPicEndDotLine         d_editorBackPicBtn + 18 + 6

              //[2007.11.30.금][추가!!!]
              #define  d_debugDelayTextTop               d_editorBackPicEndDotLine + 10
              #define  d_debugDelayScrollTextTop         d_debugDelayTextTop + 16 + 3
              #define  d_debugDelayScrollTop             d_debugDelayScrollTextTop + 12
              #define  d_debugDelayScrollH_Width         235

              #define  d_debugDelayEndDotLine            d_debugDelayScrollTop + 18

              //[2007.12.17.월][추가!!!]
              #define  d_alphaBlendTextTop               d_debugDelayEndDotLine + 10
              #define  d_alphaBlendScrollTextTop         d_alphaBlendTextTop + 16 + 3
              #define  d_alphaBlendScrollTop             d_alphaBlendScrollTextTop + 12
              #define  d_alphaBlendScrollH_Width         235
              #define  d_alphaBlendCheckBtnTop           d_alphaBlendScrollTop + 16

              #define  d_alphaBlenEndDotLine             d_alphaBlendCheckBtnTop + 18

              //[2008.02.05.화][추가!!!]
              #define  d_balloonHelpTextTop                d_alphaBlenEndDotLine + 10
              #define  d_balloonHelpCheckBtnTop            d_balloonHelpTextTop + 16
              #define  d_balloonHelpAlphaBlendCheckBtnTop  d_balloonHelpCheckBtnTop + 16

              #define  d_balloonHelpEndDotLine             d_balloonHelpAlphaBlendCheckBtnTop + 18



              //[간단한 회사 정보]
              //{
                  #define  d_gigyenicsTextTop     this->Height - 36
                  #define  d_gigyenicsUrlTop      d_gigyenicsTextTop + 16

              //}

          //}

      //}

      //[색 설정]
      //{
          FONT_Out_StyleString2(_bmp_, &_font, 6, d_colorTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                "[전체 색 설정]",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);

          //[색표시상자]
          //{
              _COLOR_SelectColor(_ide_option->color_0);

          //}

          //[색 선택 대화상자 열기]
          //{
              _color_SelectBtn          = new Tgui_button_Form(this);
              _color_SelectBtn->Parent  = this;
              _color_SelectBtn->Visible = true;

              //[초기화]
              //{
                  _color_SelectBtn->_down = false;

                  _color_SelectBtn->_Left(106);
                  _color_SelectBtn->_Top(d_colorColorBoxTop);
                  _color_SelectBtn->_Width(100);
                  _color_SelectBtn->_Height(20);

                  //버튼의 중앙에 문자가 표시 되도록 한다.
                  _color_SelectBtn->_Caption_AutoPos(true);
                  _color_SelectBtn->_Caption("색 선택");

                  _color_SelectBtn->_EVENT_Click= _EVENT_ButtonClick_ColorSelect;

              //}

          //}

          //[색 적용]
          //{
              _color_SetBtn          = new Tgui_button_Form(this);
              _color_SetBtn->Parent  = this;
              _color_SetBtn->Visible = true;

              //[초기화]
              //{
                  _color_SetBtn->_down = false;

                  _color_SetBtn->_Left(_color_SelectBtn->Left + _color_SelectBtn->Width + 4);
                  _color_SetBtn->_Top(d_colorColorBoxTop);
                  _color_SetBtn->_Width(100);
                  _color_SetBtn->_Height(20);

                  //버튼의 중앙에 문자가 표시 되도록 한다.
                  _color_SetBtn->_Caption_AutoPos(true);
                  _color_SetBtn->_Caption("색 적용");

                  _color_SetBtn->_EVENT_Click= _EVENT_ButtonClick_ColorSet;

              //}

          //}

          //[분리 가로줄을 설치]
          //{
              //다른 부품들과 구분하기 위하여 점선으로 가로줄을 만든다.

              _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
              _bmp_->Canvas->Pen->Style   = d_LineStyle;
              _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
              _bmp_->Canvas->Pen->Width   = 1;
              _bmp_->Canvas->MoveTo(4 , d_colorEndDotLine);
              _bmp_->Canvas->LineTo(d_Page2_Left, d_colorEndDotLine);

              //다시 원래대로 돌려놓는다.
              _bmp_->Canvas->Pen->Style = psSolid;

          //}

      //}

      //[통신 설정]
      //{
          FONT_Out_StyleString2(_bmp_, &_font, 6, d_comportTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                "[통신 포트 선택(38400Bps)]",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);

          //[서보 번호 기록]
          //{
              //수직 줄이동막대 아래에 해당 서보의 번호를 기록한다.

              FONT_Out_StyleString2(_bmp_, &_font, 20 * 0 + 10, d_comportNumberTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "1",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

              FONT_Out_StyleString2(_bmp_, &_font, 20 * 1 + 10, d_comportNumberTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "2",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

              FONT_Out_StyleString2(_bmp_, &_font, 20 * 2 + 10, d_comportNumberTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "3",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

              FONT_Out_StyleString2(_bmp_, &_font, 20 * 3 + 10, d_comportNumberTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "4",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

              FONT_Out_StyleString2(_bmp_, &_font, 20 * 4 + 10, d_comportNumberTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "5",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

              FONT_Out_StyleString2(_bmp_, &_font, 20 * 5 + 10, d_comportNumberTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "6",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

              FONT_Out_StyleString2(_bmp_, &_font, 20 * 6 + 10, d_comportNumberTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "7",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

              FONT_Out_StyleString2(_bmp_, &_font, 20 * 7 + 10, d_comportNumberTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "8",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

          //}

          //[통신선택]
          //{
              for(i = 0; i < 8; i++)
              {
                _comport_RadioBtn[i]          = new Tgui_radio_button_Form(this);
                _comport_RadioBtn[i]->Parent  = this;
                _comport_RadioBtn[i]->Visible = true;

                //[컨트롤 초기화]
                //{
                    _comport_RadioBtn[i]->_Left(20 * i + 8);
                    _comport_RadioBtn[i]->_Top(d_comportSelectTop);

                    //기본적으로 on 으로 설정한다.
                    _comport_RadioBtn[i]->_Checked(false);

                //}

              }

              //기본적으로 0 을 선택한것으로 본다.
              _comport_RadioBtn[0]->_Checked(true);

              //[EVENT 함수]
              //{
                  //줄이동자가 움직이는 경우.
                  _comport_RadioBtn[0]->_EVENT_Click = _EVENT_Click_ComportSelect0;
                  _comport_RadioBtn[1]->_EVENT_Click = _EVENT_Click_ComportSelect1;
                  _comport_RadioBtn[2]->_EVENT_Click = _EVENT_Click_ComportSelect2;
                  _comport_RadioBtn[3]->_EVENT_Click = _EVENT_Click_ComportSelect3;
                  _comport_RadioBtn[4]->_EVENT_Click = _EVENT_Click_ComportSelect4;
                  _comport_RadioBtn[5]->_EVENT_Click = _EVENT_Click_ComportSelect5;
                  _comport_RadioBtn[6]->_EVENT_Click = _EVENT_Click_ComportSelect6;
                  _comport_RadioBtn[7]->_EVENT_Click = _EVENT_Click_ComportSelect7;

              //}

          //}

          //[통신 포트 열기]
          //{
              _comport_OpenCloseBtn          = new Tgui_button_Form(this);
              _comport_OpenCloseBtn->Parent  = this;
              _comport_OpenCloseBtn->Visible = true;

              //[초기화]
              //{
                  _comport_OpenCloseBtn->_down = false;

                  _comport_OpenCloseBtn->_Left(190);
                  _comport_OpenCloseBtn->_Top(d_comportNumberTop + 2);
                  _comport_OpenCloseBtn->_Width(120);
                  _comport_OpenCloseBtn->_Height(26);

                  //버튼의 중앙에 문자가 표시 되도록 한다.
                  _comport_OpenCloseBtn->_Caption_AutoPos(true);
                  _comport_OpenCloseBtn->_Caption("통신 포트 열기");

                  _comport_OpenCloseBtn->_EVENT_Click= _EVENT_ButtonClick_ComportOpenClose;

              //}

          //}

          //[분리 가로줄을 설치]
          //{
              //다른 부품들과 구분하기 위하여 점선으로 가로줄을 만든다.

              _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
              _bmp_->Canvas->Pen->Style   = d_LineStyle;
              _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
              _bmp_->Canvas->Pen->Width   = 1;
              _bmp_->Canvas->MoveTo(4 , d_comportDotLineTop);
              _bmp_->Canvas->LineTo(d_Page2_Left, d_comportDotLineTop);

              //다시 원래대로 돌려놓는다.
              _bmp_->Canvas->Pen->Style = psSolid;

          //}

      //}

      //[편집기 바탕화면 설정]
      //{
          FONT_Out_StyleString2(_bmp_, &_font, 6, d_editorTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                "[편집기 바탕화면 밝기 설정]",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);

          //[줄이동 막대 문자]
          //{
              FONT_Out_StyleString2(_bmp_, &_font, 9, d_editorBrigntnessTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "0",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

              FONT_Out_StyleString2(_bmp_, &_font, 9 + d_brightnessScrollH_Width - 9 * 3 + 2, d_editorBrigntnessTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "255",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

          //}

          //[밝기 설정 줄이동 막대]
          //{
              _brightnessScrollH          = new Tgui_scroll_h_Form(this);
              _brightnessScrollH->Parent  = this;
              _brightnessScrollH->Visible = true;

              //[컨트롤 초기화]
              //{
                  _brightnessScrollH->_Left(8);
                  _brightnessScrollH->_Top(d_editorBrightnessTop);
                  _brightnessScrollH->_Width(d_brightnessScrollH_Width);

              //}

              //[환경변수설정]
              //{
                  //처음에는 문서가 없다.
                  _brightnessScrollH->_Min(0);
                  _brightnessScrollH->_Max(255);
                  _brightnessScrollH->_DesignSize(20);
                  _brightnessScrollH->_Position(225);

              //}

              //[EVENT 함수]
              //{
                  //줄이동자가 움직이는 경우.
                  _brightnessScrollH->_EVENT_Scroll = _EVENT_Scroll_EditorBrightness;

              //}

          //}

          //[밝기 보기]
          //{      
              _brightnessGuiEdit          = new Tgui_edit_Form(this);
              _brightnessGuiEdit->Parent  = this;
              _brightnessGuiEdit->Visible = true;

              _brightnessGuiEdit->Top   = d_editorBrightnessTop - 3;
              _brightnessGuiEdit->Left  = _brightnessScrollH->Left + _brightnessScrollH->Width + 11;
              _brightnessGuiEdit->_Width(26);

              _brightnessGuiEdit->_EDIT_TextOut(IntToStr(_brightnessScrollH->_position).c_str());

          //}

          //[분리 가로줄을 설치]
          //{
              //다른 부품들과 구분하기 위하여 점선으로 가로줄을 만든다.

              _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
              _bmp_->Canvas->Pen->Style   = d_LineStyle;
              _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
              _bmp_->Canvas->Pen->Width   = 1;
              _bmp_->Canvas->MoveTo(4 , d_editorEndDotLine);
              _bmp_->Canvas->LineTo(d_Page2_Left, d_editorEndDotLine);

              //다시 원래대로 돌려놓는다.
              _bmp_->Canvas->Pen->Style = psSolid;

          //}

      //}

      //[구성 요소 색 설정]
      //{
          //[2007.11.22.목][추가!!!]

          FONT_Out_StyleString2(_bmp_, &_font, 6, d_controlColorTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                "[구성 요소 색 설정]",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);

          //[정지점]
          //{
              //[비트맵 만들기]
              //{
                  //[정지점] 을 표시하기 위한 bmp 를 만든다.
                  bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\8_8\\breakpoint.bmp";

                  //실제 그림 영역을 생성한다.
                  _bmp_breakpoint_ = new Graphics::TBitmap;

                  //그림을 올려준다.(8*8)
                  _bmp_breakpoint_->LoadFromFile(bmp_path);

                  //24bit bitmap 으로 지정한다.
                  _bmp_breakpoint_->PixelFormat = pf24bit;

                  //그림색을 지정색으로 바꾼다.
                  BMP_Self_ChangeColor2(_bmp_breakpoint_, clBlack, IDE_COLOR_breakpoint, clWhite, clWhite);

              //}

              //[표시]
              //{
                  BMP_Copy_Transparent(//출발지 정보.
                                       _bmp_breakpoint_, 0, 0, _bmp_breakpoint_->Width, _bmp_breakpoint_->Height,
                                       //도착지 정보.
                                       _bmp_, 10, d_controlColorBreakPointTop,
                                       //폭과 높이는 행의 높이와 같은 것으로 한다.
                                       _bmp_breakpoint_->Width, _bmp_breakpoint_->Height,
                                       //투명 지정 색.
                                       clWhite);

              //}

              //[해당 문자열 표시]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font, 40, d_controlColorBreakPointText, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        ": 정지점",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);


              //}

              //[색 선택 대화상자 열기]
              //{
                  _breakpoint_ColorSelectSetBtn          = new Tgui_button_Form(this);
                  _breakpoint_ColorSelectSetBtn->Parent  = this;
                  _breakpoint_ColorSelectSetBtn->Visible = true;

                  //[초기화]
                  //{
                      _breakpoint_ColorSelectSetBtn->_down = false;

                      _breakpoint_ColorSelectSetBtn->_Left(106 + 40);
                      _breakpoint_ColorSelectSetBtn->_Top(d_controlColorBreakPointBtn);
                      _breakpoint_ColorSelectSetBtn->_Width(80 * 2 + 4);
                      _breakpoint_ColorSelectSetBtn->_Height(18);

                      //버튼의 중앙에 문자가 표시 되도록 한다.
                      _breakpoint_ColorSelectSetBtn->_Caption_AutoPos(true);
                      _breakpoint_ColorSelectSetBtn->_Caption("색 선택과 적용");

                      _breakpoint_ColorSelectSetBtn->_EVENT_Click = _EVENT_ButtonClick_BreakPoint_ColorSelectSet;

                  //}

              //}

          //}

          //[실행 지정자]
          //{
              //[비트맵 만들기]
              //{
                  //[실행 지정자] 를 표시하기 위한 bmp 를 만든다.
                  bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\12_12\\run_arrow.bmp";

                  //실제 그림 영역을 생성한다.
                  _bmp_run_arrow_ = new Graphics::TBitmap;

                  //그림을 올려준다.(8*8)
                  _bmp_run_arrow_->LoadFromFile(bmp_path);

                  //24bit bitmap 으로 지정한다.
                  _bmp_run_arrow_->PixelFormat = pf24bit;

                  //그림색을 지정색으로 바꾼다.
                  BMP_Self_ChangeColor2(_bmp_run_arrow_,  clBlack, IDE_COLOR_run_arrow, clWhite, clWhite);

              //}

              //[표시]
              //{
                  BMP_Copy_Transparent(//출발지 정보.
                                       _bmp_run_arrow_, 0, 0, _bmp_run_arrow_->Width, _bmp_run_arrow_->Height,
                                       //도착지 정보.
                                       _bmp_, 10, d_controlColorRunArrowTop,
                                       //폭과 높이는 행의 높이와 같은 것으로 한다.
                                       _bmp_run_arrow_->Width, _bmp_run_arrow_->Height,
                                       //투명 지정 색.
                                       clWhite);

              //}

              //[해당 문자열 표시]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font, 40, d_controlColorRunArrowText, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        ": 행지정화살표",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);


              //}

              //[색 선택 대화상자 열기]
              //{
                  _run_arrow_ColorSelectSetBtn          = new Tgui_button_Form(this);
                  _run_arrow_ColorSelectSetBtn->Parent  = this;
                  _run_arrow_ColorSelectSetBtn->Visible = true;

                  //[초기화]
                  //{
                      _run_arrow_ColorSelectSetBtn->_down = false;

                      _run_arrow_ColorSelectSetBtn->_Left(106 + 40);
                      _run_arrow_ColorSelectSetBtn->_Top(d_controlColorRunArrowBtn);
                      _run_arrow_ColorSelectSetBtn->_Width(80 * 2 + 4);
                      _run_arrow_ColorSelectSetBtn->_Height(18);

                      //버튼의 중앙에 문자가 표시 되도록 한다.
                      _run_arrow_ColorSelectSetBtn->_Caption_AutoPos(true);
                      _run_arrow_ColorSelectSetBtn->_Caption("색 선택과 적용");

                      _run_arrow_ColorSelectSetBtn->_EVENT_Click = _EVENT_ButtonClick_RunArrow_ColorSelectSet;

                  //}

              //}

          //}

          //[행지정 상자]
          //{
              //[비트맵 만들기]
              //{
                  //[실행 지정자] 를 표시하기 위한 bmp 를 만든다.
                  bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\27_12\\linebox.bmp";

                  //실제 그림 영역을 생성한다.
                  _bmp_linebox_ = new Graphics::TBitmap;

                  //그림을 올려준다.(8*8)
                  _bmp_linebox_->LoadFromFile(bmp_path);

                  //24bit bitmap 으로 지정한다.
                  _bmp_linebox_->PixelFormat = pf24bit;

                  //그림색을 지정색으로 바꾼다.
                  BMP_Self_ChangeColor2(_bmp_linebox_,  clBlack, IDE_COLOR_linebox, clWhite, clWhite);

              //}

              //[표시]
              //{
                  BMP_Copy_Transparent(//출발지 정보.
                                       _bmp_linebox_, 0, 0, _bmp_linebox_->Width, _bmp_linebox_->Height,
                                       //도착지 정보.
                                       _bmp_, 10, d_controlColorLineBoxTop,
                                       //폭과 높이는 행의 높이와 같은 것으로 한다.
                                       _bmp_linebox_->Width, _bmp_linebox_->Height,
                                       //투명 지정 색.
                                       clWhite);

              //}

              //[해당 문자열 표시]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font, 40, d_controlColorLineBoxText, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        ": 행지정상자",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);


              //}

              //[색 선택 대화상자 열기]
              //{
                  _linebox_ColorSelectSetBtn          = new Tgui_button_Form(this);
                  _linebox_ColorSelectSetBtn->Parent  = this;
                  _linebox_ColorSelectSetBtn->Visible = true;

                  //[초기화]
                  //{
                      _linebox_ColorSelectSetBtn->_down = false;

                      _linebox_ColorSelectSetBtn->_Left(106 + 40);
                      _linebox_ColorSelectSetBtn->_Top(d_controlColorLineBoxBtn);
                      _linebox_ColorSelectSetBtn->_Width(80 * 2 + 4);
                      _linebox_ColorSelectSetBtn->_Height(18);

                      //버튼의 중앙에 문자가 표시 되도록 한다.
                      _linebox_ColorSelectSetBtn->_Caption_AutoPos(true);
                      _linebox_ColorSelectSetBtn->_Caption("색 선택과 적용");

                      _linebox_ColorSelectSetBtn->_EVENT_Click = _EVENT_ButtonClick_LineBox_ColorSelectSet;

                  //}

              //}

          //}

          //[분리 가로줄을 설치]
          //{
              //[2007.11.30.금][추가!!!]
              //다른 부품들과 구분하기 위하여 점선으로 가로줄을 만든다.

              _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
              _bmp_->Canvas->Pen->Style   = d_LineStyle;
              _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
              _bmp_->Canvas->Pen->Width   = 1;
              _bmp_->Canvas->MoveTo(4 , d_controlColorEndDotLine);
              _bmp_->Canvas->LineTo(d_Page2_Left, d_controlColorEndDotLine);

              //다시 원래대로 돌려놓는다.
              _bmp_->Canvas->Pen->Style = psSolid;

          //}

      //}

      //[색동문자 색 설정]
      //{
          //[2007.12.02.일][추가!!!]

          FONT_Out_StyleString2(_bmp_, &_font, 6, d_syntaxlColorTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                "[색동문자 설정]",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);

          //[명령어]
          //{
              //[해당 문자열 표시]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font, 10, d_syntaxColorKeywordText, _ide_option->color_Keyword, IDE_COLOR_2, true, d_FONTSTYLE_bold,
                                        "명령어",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

              //}

              //[색 선택 대화상자 열기]
              //{
                  _keyWord_ColorSelectSetBtn          = new Tgui_button_Form(this);
                  _keyWord_ColorSelectSetBtn->Parent  = this;
                  _keyWord_ColorSelectSetBtn->Visible = true;

                  //[초기화]
                  //{
                      _keyWord_ColorSelectSetBtn->_down = false;

                      _keyWord_ColorSelectSetBtn->_Left(106 + 40);
                      _keyWord_ColorSelectSetBtn->_Top(d_syntaxColorKeywordBtn);
                      _keyWord_ColorSelectSetBtn->_Width(80 * 2 + 4);
                      _keyWord_ColorSelectSetBtn->_Height(18);

                      //버튼의 중앙에 문자가 표시 되도록 한다.
                      _keyWord_ColorSelectSetBtn->_Caption_AutoPos(true);
                      _keyWord_ColorSelectSetBtn->_Caption("색 선택과 반영");

                      _keyWord_ColorSelectSetBtn->_EVENT_Click = _EVENT_ButtonClick_Keyword_ColorSelectSet;

                  //}

              //}

          //}

          //[주석문]
          //{
              //[해당 문자열 표시]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font, 10, d_syntaxColorCommentText, _ide_option->color_Comment, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        "주석문",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

              //}

              //[색 선택 대화상자 열기]
              //{
                  _comment_ColorSelectSetBtn          = new Tgui_button_Form(this);
                  _comment_ColorSelectSetBtn->Parent  = this;
                  _comment_ColorSelectSetBtn->Visible = true;

                  //[초기화]
                  //{
                      _comment_ColorSelectSetBtn->_down = false;

                      _comment_ColorSelectSetBtn->_Left(106 + 40);
                      _comment_ColorSelectSetBtn->_Top(d_syntaxColorCommentBtn);
                      _comment_ColorSelectSetBtn->_Width(80 * 2 + 4);
                      _comment_ColorSelectSetBtn->_Height(18);

                      //버튼의 중앙에 문자가 표시 되도록 한다.
                      _comment_ColorSelectSetBtn->_Caption_AutoPos(true);
                      _comment_ColorSelectSetBtn->_Caption("색 선택과 반영");

                      _comment_ColorSelectSetBtn->_EVENT_Click = _EVENT_ButtonClick_Comment_ColorSelectSet;

                  //}

              //}

          //}

          //[16진수]
          //{
              //[해당 문자열 표시]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font, 10, d_syntaxColorHexWordText, _ide_option->color_HexWord, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        "16진수",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

              //}

              //[색 선택 대화상자 열기]
              //{
                  _hexNumber_ColorSelectSetBtn          = new Tgui_button_Form(this);
                  _hexNumber_ColorSelectSetBtn->Parent  = this;
                  _hexNumber_ColorSelectSetBtn->Visible = true;

                  //[초기화]
                  //{
                      _hexNumber_ColorSelectSetBtn->_down = false;

                      _hexNumber_ColorSelectSetBtn->_Left(106 + 40);
                      _hexNumber_ColorSelectSetBtn->_Top(d_syntaxColorHexWordBtn);
                      _hexNumber_ColorSelectSetBtn->_Width(80 * 2 + 4);
                      _hexNumber_ColorSelectSetBtn->_Height(18);

                      //버튼의 중앙에 문자가 표시 되도록 한다.
                      _hexNumber_ColorSelectSetBtn->_Caption_AutoPos(true);
                      _hexNumber_ColorSelectSetBtn->_Caption("색 선택과 반영");

                      _hexNumber_ColorSelectSetBtn->_EVENT_Click = _EVENT_ButtonClick_HexWord_ColorSelectSet;

                  //}

              //}

          //}

          //[2진수]
          //{
              //[해당 문자열 표시]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font, 10, d_syntaxColorBinWordText, _ide_option->color_BinWord, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        "2진수",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

              //}

              //[색 선택 대화상자 열기]
              //{
                  _binNumber_ColorSelectSetBtn          = new Tgui_button_Form(this);
                  _binNumber_ColorSelectSetBtn->Parent  = this;
                  _binNumber_ColorSelectSetBtn->Visible = true;

                  //[초기화]
                  //{
                      _binNumber_ColorSelectSetBtn->_down = false;

                      _binNumber_ColorSelectSetBtn->_Left(106 + 40);
                      _binNumber_ColorSelectSetBtn->_Top(d_syntaxColorBinWordBtn);
                      _binNumber_ColorSelectSetBtn->_Width(80 * 2 + 4);
                      _binNumber_ColorSelectSetBtn->_Height(18);

                      //버튼의 중앙에 문자가 표시 되도록 한다.
                      _binNumber_ColorSelectSetBtn->_Caption_AutoPos(true);
                      _binNumber_ColorSelectSetBtn->_Caption("색 선택과 반영");

                      _binNumber_ColorSelectSetBtn->_EVENT_Click = _EVENT_ButtonClick_BinWord_ColorSelectSet;

                  //}

              //}

          //}

      //}

      //[쪽 분리 가로줄을 설치]
      //{
          //[2008.02.05.화][추가!!!]{------
          //쪽을 구분하는 세로줄을 만든다.
          //}------------------------------

          _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
          _bmp_->Canvas->Pen->Style   = psSolid;
          _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
          _bmp_->Canvas->Pen->Width   = 1;
          _bmp_->Canvas->MoveTo(d_Page2_Left, _caption_height);
          _bmp_->Canvas->LineTo(d_Page2_Left, this->Height - 4);

          //다시 원래대로 돌려놓는다.
          _bmp_->Canvas->Pen->Style = psSolid;

      //}

      //[편집기 배경 그림 설정]
      //{
          //[2007.12.02.일][추가!!!]

          FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 6, d_editorBackPicTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                "[편집기 배경 그림 설정]",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);



          //[색 선택 대화상자 열고 반영]
          //{
              _editorBackPic_SelectSetBtn          = new Tgui_button_Form(this);
              _editorBackPic_SelectSetBtn->Parent  = this;
              _editorBackPic_SelectSetBtn->Visible = true;

              //[초기화]
              //{
                  _editorBackPic_SelectSetBtn->_down = false;

                  _editorBackPic_SelectSetBtn->_Left(d_Page2_Left + 8);
                  _editorBackPic_SelectSetBtn->_Top(d_editorBackPicBtn);
                  _editorBackPic_SelectSetBtn->_Width(150 * 2 + 2);
                  _editorBackPic_SelectSetBtn->_Height(18);

                  //버튼의 중앙에 문자가 표시 되도록 한다.
                  _editorBackPic_SelectSetBtn->_Caption_AutoPos(true);
                  _editorBackPic_SelectSetBtn->_Caption("JPG 그림 선택과 반영");

                  _editorBackPic_SelectSetBtn->_EVENT_Click = _EVENT_ButtonClick_EditorBackPicSelectSet;

              //}

          //}

          //[분리 가로줄을 설치]
          //{
              //[2007.12.02.일][추가!!!]
              //다른 부품들과 구분하기 위하여 점선으로 가로줄을 만든다.

              _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
              _bmp_->Canvas->Pen->Style   = d_LineStyle;
              _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
              _bmp_->Canvas->Pen->Width   = 1;
              _bmp_->Canvas->MoveTo(d_Page2_Left, d_editorBackPicEndDotLine);
              _bmp_->Canvas->LineTo(this->Width - 4, d_editorBackPicEndDotLine);

              //다시 원래대로 돌려놓는다.
              _bmp_->Canvas->Pen->Style = psSolid;

          //}

      //}

      //[검증 실행 시간 간격 설정]
      //{
          //[2007.11.30.금][추가!!!]

          FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 6, d_debugDelayTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                "[검증 실행 시간 간격 설정]",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);

          //[줄이동 막대 문자]
          //{
              FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 9, d_debugDelayScrollTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "0",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

              FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 9 + d_debugDelayScrollH_Width - 9 * 3 + 2, d_debugDelayScrollTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "500",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

          //}

          //[시간 간격 설정 줄이동 막대]
          //{
              _debugDelayScrollH          = new Tgui_scroll_h_Form(this);
              _debugDelayScrollH->Parent  = this;
              _debugDelayScrollH->Visible = true;

              //[컨트롤 초기화]
              //{
                  _debugDelayScrollH->_Left(d_Page2_Left + 8);
                  _debugDelayScrollH->_Top(d_debugDelayScrollTop);
                  _debugDelayScrollH->_Width(d_debugDelayScrollH_Width);

              //}

              //[환경변수설정]
              //{
                  //처음에는 문서가 없다.
                  _debugDelayScrollH->_Min(0);
                  _debugDelayScrollH->_Max(500);
                  _debugDelayScrollH->_DesignSize(20);
                  _debugDelayScrollH->_Position(10);

              //}

              //[EVENT 함수]
              //{
                  //줄이동자가 움직이는 경우.
                  _debugDelayScrollH->_EVENT_Scroll = _EVENT_Scroll_DebugDelay;

              //}

          //}

          //[시간값 표시]
          //{
              FONT_Out_StyleString2(_bmp_, &_font,
                                    _debugDelayScrollH->Left + _debugDelayScrollH->Width + 10, d_debugDelayScrollTop,
                                    _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                    "0.1 초",
                                    d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                    &w, &h);

          //}

          //[분리 가로줄을 설치]
          //{
              //[2007.12.17.월][추가!!!]
              //다른 부품들과 구분하기 위하여 점선으로 가로줄을 만든다.

              _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
              _bmp_->Canvas->Pen->Style   = d_LineStyle;
              _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
              _bmp_->Canvas->Pen->Width   = 1;
              _bmp_->Canvas->MoveTo(d_Page2_Left, d_debugDelayEndDotLine);
              _bmp_->Canvas->LineTo(this->Width  - 4, d_debugDelayEndDotLine);

              //다시 원래대로 돌려놓는다.
              _bmp_->Canvas->Pen->Style = psSolid;

          //}

      //}

      //[알파블렌드 설정]
      //{
          //[2007.12.17.월][추가!!!]

          FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 6, d_alphaBlendTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                "[개발환경 자체 투명도 설정]",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);
          //[알파블레드값 설정]
          //{
              //[줄이동 막대 문자]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 9, d_alphaBlendScrollTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        "50",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

                  FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 9 + d_alphaBlendScrollH_Width - 9 * 3 + 2, d_alphaBlendScrollTextTop, _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        "255",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

              //}

              //[시간 간격 설정 줄이동 막대]
              //{
                  _alphaBlend_ScrollH          = new Tgui_scroll_h_Form(this);
                  _alphaBlend_ScrollH->Parent  = this;
                  _alphaBlend_ScrollH->Visible = true;

                  //[컨트롤 초기화]
                  //{
                      _alphaBlend_ScrollH->_Left(d_Page2_Left + 8);
                      _alphaBlend_ScrollH->_Top(d_alphaBlendScrollTop);
                      _alphaBlend_ScrollH->_Width(d_alphaBlendScrollH_Width);

                  //}

                  //[환경변수설정]
                  //{
                      //처음에는 문서가 없다.
                      _alphaBlend_ScrollH->_Min(50);
                      _alphaBlend_ScrollH->_Max(255);
                      _alphaBlend_ScrollH->_DesignSize(20);
                      _alphaBlend_ScrollH->_Position(225);

                  //}

                  //[동작 함수]
                  //{
                      //줄이동자가 움직이는 경우.
                      _alphaBlend_ScrollH->_EVENT_Scroll = _EVENT_Scroll_AlphaBlend;

                  //}

                  //일단 처음에는 사용하지 않는 것으로 처리한다.
                  _alphaBlend_ScrollH->Enabled = false;

              //}

              //[알파블렌드값 보이기]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font,
                                        _alphaBlend_ScrollH->Left + _alphaBlend_ScrollH->Width + 10, d_alphaBlendScrollTop,
                                        _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        "225",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

              //}

          //}

          //[알파블렌드 사용 유/무]
          //{
              _alphaBlend_CheckBtn          = new Tgui_check_button_Form(this);
              _alphaBlend_CheckBtn->Parent  = this;
              _alphaBlend_CheckBtn->Visible = true;

              //[컨트롤 초기화]
              //{
                  _alphaBlend_CheckBtn->_Left(d_Page2_Left + 8);
                  _alphaBlend_CheckBtn->_Top(d_alphaBlendCheckBtnTop);

                  //기본적으로 on 으로 설정한다.
                  _alphaBlend_CheckBtn->_Checked(false);

              //}

              //[동작 함수]
              //{
                  _alphaBlend_CheckBtn->_EVENT_Up = _EVENT_Up_AlphaBlend;

              //}

              //[내용 문자열 출력]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font,
                                        _alphaBlend_CheckBtn->Left + _alphaBlend_CheckBtn->Width + 4, d_alphaBlendCheckBtnTop + 1,
                                        _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        "개발환경 투명 기능 사용(느려질 수 있음)",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

              //}

          //}

          //[분리 가로줄을 설치]
          //{
              //[2008.02.05.화][추가!!!]{-------------------------------
              //다른 부품들과 구분하기 위하여 점선으로 가로줄을 만든다.
              //}-------------------------------------------------------

              _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
              _bmp_->Canvas->Pen->Style   = d_LineStyle;
              _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
              _bmp_->Canvas->Pen->Width   = 1;
              _bmp_->Canvas->MoveTo(d_Page2_Left, d_alphaBlenEndDotLine);
              _bmp_->Canvas->LineTo(this->Width  - 4, d_alphaBlenEndDotLine);

              //다시 원래대로 돌려놓는다.
              _bmp_->Canvas->Pen->Style = psSolid;

          //}

      //}

      //[풍선 도움말 설정]
      //{
          //[2008.02.05.화][추가!!!]

          FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 6, d_balloonHelpTextTop, _ide_option->color_0, IDE_COLOR_2, true,
                                d_FONTSTYLE_default,
                                "[풍선 도움말 설정]",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);

          //[풍선 도웅말 사용 유/무]
          //{
              _balloonHelpUse_CheckBtn          = new Tgui_check_button_Form(this);
              _balloonHelpUse_CheckBtn->Parent  = this;
              _balloonHelpUse_CheckBtn->Visible = true;

              //[컨트롤 초기화]
              //{
                  _balloonHelpUse_CheckBtn->_Left(d_Page2_Left + 8);
                  _balloonHelpUse_CheckBtn->_Top(d_balloonHelpCheckBtnTop);

                  //기본적으로 on 으로 설정한다.
                  _balloonHelpUse_CheckBtn->_Checked(true);

              //}

              //[동작 함수]
              //{
                  _balloonHelpUse_CheckBtn->_EVENT_Up = _EVENT_Up_BalloonHelpUse;

              //}

              //[내용 문자열 출력]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font,
                                        _balloonHelpUse_CheckBtn->Left + _balloonHelpUse_CheckBtn->Width + 4, d_balloonHelpCheckBtnTop + 1,
                                        _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        "풍선 도움말 사용",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

              //}

          //}

          //[풍선 도움말 투명 사용 유/무]
          //{
              _balloonHelpAlphaBlend_CheckBtn          = new Tgui_check_button_Form(this);
              _balloonHelpAlphaBlend_CheckBtn->Parent  = this;
              _balloonHelpAlphaBlend_CheckBtn->Visible = true;

              //[컨트롤 초기화]
              //{
                  _balloonHelpAlphaBlend_CheckBtn->_Left(d_Page2_Left + 8);
                  _balloonHelpAlphaBlend_CheckBtn->_Top(d_balloonHelpAlphaBlendCheckBtnTop);

                  //기본적으로 on 으로 설정한다.
                  _balloonHelpAlphaBlend_CheckBtn->_Checked(true);

              //}

              //[동작 함수]
              //{
                  _balloonHelpAlphaBlend_CheckBtn->_EVENT_Up = _EVENT_Up_BalloonHelpAlphaBlend;

              //}

              //[내용 문자열 출력]
              //{
                  FONT_Out_StyleString2(_bmp_, &_font,
                                        _balloonHelpAlphaBlend_CheckBtn->Left + _balloonHelpAlphaBlend_CheckBtn->Width + 4, d_balloonHelpAlphaBlendCheckBtnTop + 1,
                                        _ide_option->color_0, IDE_COLOR_2, true, d_FONTSTYLE_default,
                                        "풍선 도움말 투명 기능 사용(느려질 수 있음)",
                                        d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                        &w, &h);

              //}

          //}

          //[분리 가로줄을 설치]
          //{
              //[2008.02.05.화][추가!!!]{-------------------------------
              //다른 부품들과 구분하기 위하여 점선으로 가로줄을 만든다.
              //}-------------------------------------------------------

              _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
              _bmp_->Canvas->Pen->Style   = d_LineStyle;
              _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
              _bmp_->Canvas->Pen->Width   = 1;
              _bmp_->Canvas->MoveTo(d_Page2_Left, d_balloonHelpEndDotLine);
              _bmp_->Canvas->LineTo(this->Width  - 4, d_balloonHelpEndDotLine);

              //다시 원래대로 돌려놓는다.
              _bmp_->Canvas->Pen->Style = psSolid;

          //}

      //}

      //[화사 정보 표시]
      //{
          //[2008.02.05.화][추가!!!]
          //여백에 간단한 회사 정보를 준다.
          FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 6 + 65 + 36, d_gigyenicsTextTop, _ide_option->color_0, IDE_COLOR_2, true,
                                d_FONTSTYLE_bold,
                                "기계닉스 첨단 대장간",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);

          FONT_Out_StyleString2(_bmp_, &_font, d_Page2_Left + 6 + 55, d_gigyenicsUrlTop, _ide_option->color_0, IDE_COLOR_2, true,
                                d_FONTSTYLE_default,
                                "http://www.gigyenics.co.kr",
                                d_FONT_underline_no, true, 0, IDE_COLOR_1,
                                &w, &h);

      //}

  //}

  return;

}

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

  //[VAR]
  //{
      int  i;

  //}

  delete  _bmp_;
  delete  _close_bmpbtns;

  //[2007.11.22.목]
  delete _color_SelectBtn;
  delete _color_SetBtn;

  for(i = 0; i < 8; i++) { delete _comport_RadioBtn[i]; }

  delete _comport_OpenCloseBtn;

  delete _brightnessScrollH;
  delete _brightnessGuiEdit;

  delete _bmp_breakpoint_;
  delete _breakpoint_ColorSelectSetBtn;

  delete _bmp_run_arrow_;
  delete _run_arrow_ColorSelectSetBtn;

  delete _bmp_linebox_;
  delete _linebox_ColorSelectSetBtn;

  //[2008.02.03.일][추가!!!]{----------------------------
  //지금 버퍼에 내용이 있다면 삭제한다.
  if(_balloonHelpStr != NULL) delete [] _balloonHelpStr;
  //}----------------------------------------------------

  return;

}

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

void __fastcall Tide_dialogbox_Form::_FormCut(void)
{
  //[2006.11.07.화][생성!!!]{----------------------------------------------------
  //폼의 caption 의 모양을 보기 좋게 하기 위하여 caption 의 영역을 제외한 나머지
  //영역의 폼을 제거해 준다.(구멍을 뚫어준다.)
  //여러개의 [사각형] 모양으로 구멍을 뚫어준다.
  //}----------------------------------------------------------------------------

  //[VAR]
  //{
      HRGN    rgn_main,                              //대상 폼.
              rgn_cut_rect,                          //caption 오른쪽 영역 전부.
              rgn_cut_left_line, rgn_cut_left_dot,   //수평line, dot.
              rgn_cut_right_line, rgn_cut_right_dot; //수평line, dot.
  //}


  //[Form 초기화]
  //{
      //포인터 초기화.
      rgn_main = 0;

      //Form 의 영역 정보를 얻는다.
      GetWindowRgn(this->Handle, rgn_main);

      //일단 현재 Form 영역을 지운다.
      DeleteObject(rgn_main);
  //}

  //[영역 생성]
  //{
      //새로운 영역을 생성한다.
      rgn_main = CreateRectRgn(0, 0, this->Width, this->Height);

      //[구멍 뚫을 영역 지정]
      //{
          //caption 오른쪽 영역.
          rgn_cut_rect       = CreateRectRgn(_caption_width, 0, this->Width, 18);

          //좌측 라인.
          rgn_cut_left_line  = CreateRectRgn(0, 0, 2, 1);

          //좌측 점.
          rgn_cut_left_dot   = CreateRectRgn(0, 1, 1, 2);

          //우측 라인.
          rgn_cut_right_line = CreateRectRgn(_caption_width - 2, 0, _caption_width, 1);

          //우측 점.
          rgn_cut_right_dot  = CreateRectRgn(_caption_width - 1, 1, _caption_width, 2);

      //}

      CombineRgn(rgn_main, rgn_main, rgn_cut_rect, RGN_DIFF);
      CombineRgn(rgn_main, rgn_main, rgn_cut_left_line, RGN_DIFF);
      CombineRgn(rgn_main, rgn_main, rgn_cut_left_dot, RGN_DIFF);
      CombineRgn(rgn_main, rgn_main, rgn_cut_right_line, RGN_DIFF);
      CombineRgn(rgn_main, rgn_main, rgn_cut_right_dot, RGN_DIFF);

      SetWindowRgn(this->Handle, rgn_main, TRUE);
  //}

  //[구멍 뚫기]
  //{
      //--------------------------------
      //지정 영역에 구멍을 뚫는다.
      DeleteObject(rgn_cut_rect);
      DeleteObject(rgn_cut_left_line);
      DeleteObject(rgn_cut_left_dot);
      DeleteObject(rgn_cut_right_line);
      DeleteObject(rgn_cut_right_dot);
      //--------------------------------
  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_Border(void)
{
  //[설명!!!]{----------------------------------------------------------------
  //Form 전체의 테두리를 만든다.
  //두께는 4pixel, 동서남 3 면만 그리면 된다.
  //테두리는 직접 보이는 것이고 내용에 영향을 주지 않아야 하므로 직접 그린다.

  //[2007.03.18.일][수정!!!]
  //1 pixel 의 [통합개발환경] 전체 테두리를 마지막에 그려준다.
  //이는 윤곽을 더 뚜렷하게 하기 위한 것이다.
  //}-------------------------------------------------------------------------

  //[VAR]
  //{
      TRect            trect;
  //}

  //[테두리 만들기]
  //{
      //[좌측 테두리]{-------------------------------
      trect.Left   = 0;
      trect.Top    = 0;
      trect.Right  = d_border_width;
      trect.Bottom = _bmp_->Height;

      _bmp_->Canvas->Brush->Color = _ide_option->color_0;
      _bmp_->Canvas->FillRect(trect);
      //[우측 테두리]{-------------------------------
      trect.Left   = _bmp_->Width - d_border_width;
      trect.Top    = 0;
      trect.Right  = _bmp_->Width;
      trect.Bottom = _bmp_->Height;

      _bmp_->Canvas->Brush->Color = _ide_option->color_0;
      _bmp_->Canvas->FillRect(trect);
      //[아래 테두리]{-------------------------------
      trect.Left   = 0;
      trect.Top    = _bmp_->Height - d_border_width;
      trect.Right  = _bmp_->Width;
      trect.Bottom = _bmp_->Height;

      _bmp_->Canvas->Brush->Color = _ide_option->color_0;
      _bmp_->Canvas->FillRect(trect);
      //---------------------------------------------
  //}

  //[윤곽선 만들기]
  //{
      //[2007.03.18.일][추가!!!]
      if(d_OPTION_msgbox_outline)
      {
        //[왼쪽]
        _bmp_->Canvas->Pen->Color = IDE_COLOR_outline;
        _bmp_->Canvas->MoveTo(0, 2);
        _bmp_->Canvas->LineTo(0, this->Height);

        //[오른쪽]
        _bmp_->Canvas->Pen->Color = IDE_COLOR_outline;
        _bmp_->Canvas->MoveTo(this->Width - 1, 0);
        _bmp_->Canvas->LineTo(this->Width - 1, this->Height);

        //[아래쪽]
        _bmp_->Canvas->Pen->Color = IDE_COLOR_outline;
        _bmp_->Canvas->MoveTo(0, this->Height - 1);
        _bmp_->Canvas->LineTo(this->Width - 1, this->Height - 1);

        //[제목줄 위쪽]
        _bmp_->Canvas->Pen->Color = IDE_COLOR_outline;
        _bmp_->Canvas->MoveTo(2, 0);
        _bmp_->Canvas->LineTo(_caption_width-3, 0);

        //[오늘쪽 위쪽]
        _bmp_->Canvas->Pen->Color = IDE_COLOR_outline;
        _bmp_->Canvas->MoveTo(_caption_width -1 , _caption_height - d_border_width);
        _bmp_->Canvas->LineTo(this->Width - 1, _caption_height - d_border_width);

        //[제목줄 오른쪽]
        _bmp_->Canvas->Pen->Color = IDE_COLOR_outline;
        _bmp_->Canvas->MoveTo(_caption_width -1 , 2);
        _bmp_->Canvas->LineTo(_caption_width -1, _caption_height - d_border_width);

        //[제목줄 왼쪽위 모서리]
        _bmp_->Canvas->Pen->Color = IDE_COLOR_outline;
        _bmp_->Canvas->MoveTo(2 , 0);
        _bmp_->Canvas->LineTo(0, 2);

        //[제목줄 오른쪽위 모서리]
        _bmp_->Canvas->Pen->Color = IDE_COLOR_outline;
        _bmp_->Canvas->MoveTo(_caption_width-3 , 0);
        _bmp_->Canvas->LineTo(_caption_width -1, 2);

      }
      
  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_Shape(void)
{
  //[2007.09.26.수][생성!!!]{---
  //컨트롤의 모양을 만든다.
  //}---------------------------

  //[VAR]
  //{
      TRect  rect;
      TRect  rect_caption;

      int    w, h;
      
  //}

  //[수정]
  //{
      //[닫기] 버튼의 폭과 배치를 반영하여 폭을 늘려준다.
      _caption_width += (_close_bmpbtns->Width + 4);

  //}

  //[폼 오려내기]
  //{
      _FormCut();
  //}

  //[모양 그리기]
  //{
      //[전체 배경 처리]
      //{
          //[영역정보]{-------------------
          rect = _bmp_->Canvas->ClipRect;
          //}-----------------------------

          //[바탕 지우기]{---------------------------
          _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
          _bmp_->Canvas->FillRect(rect);
          //}----------------------------------------

      //}

      //[caption 처리]
      //{
          //[caption 영역]{----------------------
          rect_caption = rect;
          rect_caption.Bottom = _caption_height;
          //}------------------------------------

          //[caption 바탕 지우기]{-------------------
          _bmp_->Canvas->Brush->Color = _ide_option->color_0;
          _bmp_->Canvas->FillRect(rect_caption);
          //}----------------------------------------

          //[caption 문자열]{---------------------------------------------------
          _font.margin_size = 0;
          FONT_Out_String2(_bmp_, &_font, 0, 5, IDE_COLOR_3, _ide_option->color_0, true,
                           _caption,
                           d_FONT_underline_no, true, 0, IDE_COLOR_1,
                           &w, &h);
          //}-------------------------------------------------------------------

      //}

      //[닫기 단추 배치]
      //{
          _close_bmpbtns->_Top(5);
          _close_bmpbtns->_Left(_caption_width - _close_bmpbtns->Width - 5);

          //[단추 배경 지우기]
          //{
              rect.Left   = _close_bmpbtns->Left - 1;
              rect.Top    = _close_bmpbtns->Top  - 1;
              rect.Right  = _close_bmpbtns->Left + _close_bmpbtns->Width  + 1;
              rect.Bottom = _close_bmpbtns->Top  + _close_bmpbtns->Height + 1;

              _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
              _bmp_->Canvas->FillRect(rect);

          //}

      //}

  //}

  //[테두리]
  //{
      _Border();
  //}

  //[view]{-------------
  //그린 것을 보여준다.
  _Draw();
  //}-------------------

  //[폼 위치 조정]
  //{
      //폼이 항상 화면의 중앙에 나오도록 위치를 조정한다.
      this->Left = Screen->Width/2  - this->Width/2;
      this->Top  = Screen->Height/2 - this->Height/2;

  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_Draw(void)
{ 
  BitBlt(this->Canvas->Handle, 0, 0,
         this->Width, this->Height,
         _bmp_->Canvas->Handle, 0, 0, SRCCOPY);

  return;

}

void __fastcall Tide_dialogbox_Form::_BalloonHelpUse(bool    pUse)
{
  //[2008.02.03.일][생성!!!]{-----------------
  //[풍선도움말] 기능의 사용 유무를 결정한다.
  //}-----------------------------------------

  _balloonHelpUse = pUse;

  return;

}

void __fastcall Tide_dialogbox_Form::_BalloonHelpStr(char   *pStr)
{
  //[2008.02.03.일][생성!!!]{-----------------
  //[풍선도움말] 에 표시할 문자열을 기록한다.
  //지정된 문자열의 길이만큼 동적 생성한다.
  //}-----------------------------------------

  //지금 버퍼에 내용이 있다면 삭제한다.
  if(_balloonHelpStr != NULL) delete [] _balloonHelpStr;

  //동적으로 공간을 생성한다.
  _balloonHelpStr = new char [strlen(pStr) + 1];

  //문자열을 복사한다.
  STR_Assign(_balloonHelpStr, pStr);

  return;

}

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

void __fastcall Tide_dialogbox_Form::WndProc(Messages::TMessage  &Message)
{
  //[설명!!!]{--------------------------------------------------------------------
  //TForm 의 경우는 바탕을 칠하고 OnPaint() 를 발생하게 되므로 실제 _Draw() 를
  //OnPaint() 에서 사용하는 경우는 크기가 변경되는 경우 바로 칠해지지 않아서
  //하얀색 바탕이 그대로 나오게 되어 보기 좋지 않게 된다.
  //따라서 TForm 자체의 바탕을 그리는 WM_ERASEBKGND 에서 바로 _Draw() 를 사용하여
  //그리고 OnPaint() 는 처리하지 않는다.
  //C++Builder 와 같이 완벽하게 처리되는 깜박임이 전혀 없는 화면을 만들수 있다.
  //}-----------------------------------------------------------------------------

  if(Message.Msg == WM_ERASEBKGND)
  {
    _Draw();

    //바로 죵료하지 않으면 WM_ERASEBKGND 메세지가 다음 TForm::WndProc(Message); 에서
    //다시 처리 되어 TForm->Color 로 칠해지게 되어 _Draw() 로 그린 것이 다 지워지므로
    //바로 종료한다.
    return;

  }
  else if(Message.Msg == CM_MOUSEENTER)
  {
    //[2008.02.03.일][추가!!!]
    //[풍선도움말] 을 설정해 준다.
    if(_balloonHelpUse == true)
    {
      ide_BalloonBox_Form->_BalloonBox(Mouse->CursorPos.x,
                                       Mouse->CursorPos.y,
                                       true,
                                       _balloonHelpStr);

    }

  }
  else if(Message.Msg == CM_MOUSELEAVE)
  {
    //[2008.02.03.일][추가!!!]
    //[풍선도움말] 을 감춘다.
    if(_balloonHelpUse == true)
    {
      ide_BalloonBox_Form->_Hide();

    }

  }

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

  return;

}

//------------------------------------------------------------------------------
void __fastcall Tide_dialogbox_Form::FormMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  //[2007.09.26.수][생성!!!]{-------
  //현재 [폼 이동] 처리에 사용한다.
  //}-------------------------------

  //[캡션바] 영역에서만 처리되어야 한다.
  if(((0 <= X) && (X < _caption_width)) &&
     ((0 <= Y) && (Y < _caption_height)))
  {
    if(Button == mbLeft)
    {
      //caption 을 마우스로 집어끌기 위하여 시작 좌표를 기록한다.
      _mouse_down_point.x = X;
      _mouse_down_point.y = Y;

      //caption 이 선택된 것을 알린다.
      _caption_selected = true;

    }

  }   

  return;

}

void __fastcall Tide_dialogbox_Form::FormMouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
  //[2007.09.26.수][생성!!!]{----------------------
  //마우스로 caption 을 집어 끄는 경우를 처리한다.
  //}----------------------------------------------

  //[캡션바 이동]
  //{
      //[캡션바] 영역에서만 처리되어야 한다.
      if(((0 <= X) && (X < _caption_width)) &&
         ((0 <= Y) && (Y < _caption_height)) ||
         //마우스로 집어  끄는 경우 영역을 벗어난 경우도 처리 되어야 한다.
         //이는 집어 끌다가 놓치는 경우를 막기 위한 것이다.
         (Shift.Contains(ssLeft)))
      {
        if((Shift.Contains(ssLeft)) && (_caption_selected == true))
        {
          //caption 을 마우스로 집어끄는 경우 Form 을 이동 시켜야 한다.
          this->Left += (X - _mouse_down_point.x);
          this->Top  += (Y - _mouse_down_point.y);

        }

      }

  //}

  //[2008.02.03.일][추가!!!]{--------------------------------------------------
  //[풍선도움말] 을 설정해 준다.
  ide_BalloonBox_Form->_BalloonBoxPos(Mouse->CursorPos.x, Mouse->CursorPos.y);
  //}--------------------------------------------------------------------------

  return;

}

void __fastcall Tide_dialogbox_Form::FormMouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  //[2007.09.26.수][생성!!!]

  if(((0 <= X) && (X < _caption_width)) &&
     ((0 <= Y) && (Y < _caption_height)))
  {
    if(Button == mbRight)
    {

    }

  }

  //[해제]
  //{
      //caption 선택을 해제한다.
      _caption_selected = false;
      
  //}

  return;

}

void __fastcall Tide_dialogbox_Form::FormShow(TObject *Sender)
{
  //[2007.10.02.화][생성!!!]{-----------------
  //현재 환경변수대로 다시 설정해서 보여준다.
  //[2008.02.05.화][추가!!!]------------------
  //[픙선 도움말] 관련 기능이 추가 되었다.
  //}-----------------------------------------

  //[VAR]
  //{
      int  i;

  //}

  //현재 색을 보여준다.
  _COLOR_SelectColor(_ide_option->color_0);

  //[통신 포트 설정]
  //{
      //일단 전부 선택되지 않은 것으로 만든다.
      for(i = 0; i < 8; i++) { _comport_RadioBtn[i]->_Checked(false); }

      //현재 것을 선택한다.
      //단, 통신 포트는 1 부터 시작하므로 1 을 빼주어야 한다.
      _comport_RadioBtn[_ide_option->portnumber - 1]->_Checked(true);

  //}

  //[현재 편집기 밝기 설정]
  //{
      _brightnessScrollH->_Position(_ide_option->edit_back_brightness);

  //}

  //[2007.11.22.목][추가!!!]
  _COLOR_BreakPoint_SelectColor(_ide_option->color_breakpoint);
  _COLOR_RunArrow_SelectColor(_ide_option->color_run_arrow);
  _COLOR_LineBox_SelectColor(_ide_option->color_linebox);

  //[색동문자 다시 출력]
  //{
      //[2007.12.02.일][추가!!!]
      _COLOR_Keyword_SelectColor(_ide_option->color_Keyword);
      _COLOR_Comment_SelectColor(_ide_option->color_Comment);
      _COLOR_HexWord_SelectColor(_ide_option->color_HexWord);
      _COLOR_BinWord_SelectColor(_ide_option->color_BinWord);

  //}

  //[알파블렌드 설정]
  //{
      //[2007.12.18.화][추가!!!]

      _alphaBlend_CheckBtn->_Checked(_ide_option->alphaBlendUse);

      _alphaBlend_ScrollH->Enabled = _alphaBlend_CheckBtn->_checked;

      _alphaBlend_ScrollH->_Position(_ide_option->alphaBlendValue);

  //}

  //[풍선 도웅말 설정]
  //{
      _balloonHelpUse_CheckBtn->_Checked(_ide_option->balloonHelpUse);
      _balloonHelpAlphaBlend_CheckBtn->_Checked(_ide_option->balloonHelpAlphaBlend);

  //}

  return;

}

//[FUNCTION]--------------------------------------------------------------------

void __fastcall Tide_dialogbox_Form::_COLOR_SelectColor(int   pColor)
{
  //[VAR]
  //{
      TRect   colorBoxTRect;

  //}

  //[색표시상자]
  //{
      colorBoxTRect = _bmp_->Canvas->ClipRect;

      colorBoxTRect.Left   = 8;
      colorBoxTRect.Top    = d_colorColorBoxTop;
      colorBoxTRect.Right  = colorBoxTRect.Left + 60;
      colorBoxTRect.Bottom = colorBoxTRect.Top + 20;

      //색 칠하기.
      _bmp_->Canvas->Brush->Color = pColor;
      _bmp_->Canvas->FillRect(colorBoxTRect);

      //테두리.
      _bmp_->Canvas->Pen->Color = clBlack;
      _bmp_->Canvas->Pen->Width = 1;
      _bmp_->Canvas->Rectangle(colorBoxTRect);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}   

  return;

}       

void __fastcall Tide_dialogbox_Form::_COLOR_BreakPoint_SelectColor(int   pColor)
{
  //[2007.11.22.목][생성!!!]

  //[VAR]
  //{
      AnsiString  bmp_path;

  //}

  //[색 적용 표시]
  //{
      //그림 다시 읽기.
      bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\8_8\\breakpoint.bmp";
      _bmp_breakpoint_->LoadFromFile(bmp_path);
      _bmp_breakpoint_->PixelFormat = pf24bit;

      //그림색을 지정색으로 바꾼다.
      BMP_Self_ChangeColor2(_bmp_breakpoint_, clBlack, pColor, clWhite, clWhite);//

      //다시 표시 한다.
      BMP_Copy_Transparent(//출발지 정보.
                           _bmp_breakpoint_, 0, 0, _bmp_breakpoint_->Width, _bmp_breakpoint_->Height,
                           //도착지 정보.
                           _bmp_, 10, d_controlColorBreakPointTop,
                           //폭과 높이는 행의 높이와 같은 것으로 한다.
                           _bmp_breakpoint_->Width, _bmp_breakpoint_->Height,
                           //투명 지정 색.
                           clWhite);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_COLOR_RunArrow_SelectColor(int   pColor)
{
  //[2007.11.22.목][생성!!!]

  //[VAR]
  //{
      AnsiString  bmp_path;

  //}

  //[색 적용 표시]
  //{
      //그림 다시 읽기.
      bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\12_12\\run_arrow.bmp";
      _bmp_run_arrow_->LoadFromFile(bmp_path);
      _bmp_run_arrow_->PixelFormat = pf24bit;

      //그림색을 지정색으로 바꾼다.
      BMP_Self_ChangeColor2(_bmp_run_arrow_, clBlack, pColor, clWhite, clWhite);//

      //다시 표시 한다.
      BMP_Copy_Transparent(//출발지 정보.
                           _bmp_run_arrow_, 0, 0, _bmp_run_arrow_->Width, _bmp_run_arrow_->Height,
                           //도착지 정보.
                           _bmp_, 10, d_controlColorRunArrowTop,
                           //폭과 높이는 행의 높이와 같은 것으로 한다.
                           _bmp_run_arrow_->Width, _bmp_run_arrow_->Height,
                           //투명 지정 색.
                           clWhite);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_COLOR_LineBox_SelectColor(int   pColor)
{
  //[2007.11.22.목][생성!!!]

  //[VAR]
  //{
      AnsiString  bmp_path;

  //}

  //[색 적용 표시]
  //{
      //그림 다시 읽기.
      bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\27_12\\linebox.bmp";
      _bmp_linebox_->LoadFromFile(bmp_path);
      _bmp_linebox_->PixelFormat = pf24bit;

      //그림색을 지정색으로 바꾼다.
      BMP_Self_ChangeColor2(_bmp_linebox_, clBlack, pColor, clWhite, clWhite);//

      //다시 표시 한다.
      BMP_Copy_Transparent(//출발지 정보.
                           _bmp_linebox_, 0, 0, _bmp_linebox_->Width, _bmp_linebox_->Height,
                           //도착지 정보.
                           _bmp_, 10, d_controlColorLineBoxTop,
                           //폭과 높이는 행의 높이와 같은 것으로 한다.
                           _bmp_linebox_->Width, _bmp_linebox_->Height,
                           //투명 지정 색.
                           clWhite);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_COLOR_Keyword_SelectColor(int   pColor)
{
  //[2007.12.02.일][생성!!!]

  //[VAR]
  //{
      int  w, h;
      
  //}

  //[해당 문자열 표시]
  //{
      FONT_Out_StyleString2(_bmp_, &_font, 10, d_syntaxColorKeywordText, pColor, IDE_COLOR_2, true, d_FONTSTYLE_bold,
                            "명령어",
                            d_FONT_underline_no, true, 0, IDE_COLOR_1,
                            &w, &h);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_COLOR_Comment_SelectColor(int   pColor)
{
  //[2007.12.02.일][생성!!!]

  //[VAR]
  //{
      int  w, h;
      
  //}

  //[해당 문자열 표시]
  //{
      FONT_Out_StyleString2(_bmp_, &_font, 10, d_syntaxColorCommentText, pColor, IDE_COLOR_2, true, d_FONTSTYLE_default,
                            "주석문",
                            d_FONT_underline_no, true, 0, IDE_COLOR_1,
                            &w, &h);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_COLOR_HexWord_SelectColor(int   pColor)
{
  //[2007.12.02.일][생성!!!]

  //[VAR]
  //{
      int  w, h;

  //}

  //[해당 문자열 표시]
  //{
      FONT_Out_StyleString2(_bmp_, &_font, 10, d_syntaxColorHexWordText, pColor, IDE_COLOR_2, true, d_FONTSTYLE_default,
                            "16진수",
                            d_FONT_underline_no, true, 0, IDE_COLOR_1,
                            &w, &h);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_COLOR_BinWord_SelectColor(int   pColor)
{
  //[2007.12.02.일][생성!!!]

  //[VAR]
  //{
      int  w, h;

  //}

  //[해당 문자열 표시]
  //{
      FONT_Out_StyleString2(_bmp_, &_font, 10, d_syntaxColorBinWordText, pColor, IDE_COLOR_2, true, d_FONTSTYLE_default,
                            "2진수",
                            d_FONT_underline_no, true, 0, IDE_COLOR_1,
                            &w, &h);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}

  return;

}

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

void __fastcall Tide_dialogbox_Form::_EVENT_CloseButton_Click(void)
{
  //[2007.09.26.수][생성!!!]

  //이 폼을 닫는다.
  this->Close();

  return;

}

//[색 설정]---------------------------------------------------------------------

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_ColorSelect(void)
{
  //[2007.10.02.화][생성!!!]{---
  //색 대화상자를 열어준다.
  //}---------------------------

  if(main_Form->ide_ColorDialog->Execute())
  {
    _COLOR_SelectColor(main_Form->ide_ColorDialog->Color);

  }

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_ColorSet(void)
{
  //[2007.10.02.화][생성!!!]

  //환경변수에 지금 선택된 색을 지정한다.
  _ide_option->color_0_save = main_Form->ide_ColorDialog->Color;

  //도움말을 표시한다.
  ide_msgbox_Form->_MsgBox(d_MSGBOX_default,
                           "지정색은 통합개발환경을 다시 시작하는 경우 반영됩니다.");

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_BreakPoint_ColorSelectSet(void)
{
  //[2007.11.22.목][생성!!!]
  //[2007.12.03.월][수정!!!]
  //색을 선택하고 즉시 반영되게 수정한다.

  if(main_Form->ide_ColorDialog->Execute())
  {
    //대화상자안의 해당 개체에 반영한다.
    _COLOR_BreakPoint_SelectColor(main_Form->ide_ColorDialog->Color);

    //환경변수에 지금 선택된 색을 저장한다.
    _ide_option->color_breakpoint = main_Form->ide_ColorDialog->Color;

    //다시 그려준다.
    editor_edit_Form->_Debug_BreakPoint_RePaint();  

  }

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_RunArrow_ColorSelectSet(void)
{
  //[2007.11.22.목][생성!!!]
  //[2007.12.03.월][수정!!!]
  //색을 선택하고 즉시 반영되게 수정한다.

  if(main_Form->ide_ColorDialog->Execute())
  {
    //대화상자안의 해당 개체에 반영한다.
    _COLOR_RunArrow_SelectColor(main_Form->ide_ColorDialog->Color);

    //환경변수에 지금 선택된 색을 저장한다.
    _ide_option->color_run_arrow = main_Form->ide_ColorDialog->Color;

    //다시 그려준다.
    editor_edit_Form->_Debug_Arrow_RePaint();

  }

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_LineBox_ColorSelectSet(void)
{
  //[2007.11.22.목][생성!!!]
  //[2007.12.03.월][수정!!!]
  //색을 선택하고 즉시 반영되게 수정한다.

  if(main_Form->ide_ColorDialog->Execute())
  {
    //대화상자안의 해당 개체에 반영한다.
    _COLOR_LineBox_SelectColor(main_Form->ide_ColorDialog->Color);

    //환경변수에 지금 선택된 색을 저장한다.
    _ide_option->color_linebox = main_Form->ide_ColorDialog->Color;

    //다시 그려준다.
    editor_linebox_Form->_RePaint(string_editor_Form ->_run_linenumber);

  }

  return;

}

//[통신 설정]-------------------------------------------------------------------

void __fastcall Tide_dialogbox_Form::_EVENT_Click_ComportSelect0(void)
{
  //[VAR]
  //{
      int  i;

  //}

  //일단 전부 선택되지 않은 것으로 만든다.
  for(i = 0; i < 8; i++) { _comport_RadioBtn[i]->_Checked(false); }

  //현재 것을 선택한다.
  _comport_RadioBtn[0]->_Checked(true);

  //환경변수에 저장.
  _ide_option->portnumber = 1;

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Click_ComportSelect1(void)
{
  //[VAR]
  //{
      int  i;

  //}

  //일단 전부 선택되지 않은 것으로 만든다.
  for(i = 0; i < 8; i++) { _comport_RadioBtn[i]->_Checked(false); }

  //현재 것을 선택한다.
  _comport_RadioBtn[1]->_Checked(true);

  //환경변수에 저장.
  _ide_option->portnumber = 2;

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Click_ComportSelect2(void)
{
  //[VAR]
  //{
      int  i;

  //}

  //일단 전부 선택되지 않은 것으로 만든다.
  for(i = 0; i < 8; i++) { _comport_RadioBtn[i]->_Checked(false); }

  //현재 것을 선택한다.
  _comport_RadioBtn[2]->_Checked(true);

  //환경변수에 저장.
  _ide_option->portnumber = 3;

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Click_ComportSelect3(void)
{
  //[VAR]
  //{
      int  i;

  //}

  //일단 전부 선택되지 않은 것으로 만든다.
  for(i = 0; i < 8; i++) { _comport_RadioBtn[i]->_Checked(false); }

  //현재 것을 선택한다.
  _comport_RadioBtn[3]->_Checked(true);

  //환경변수에 저장.
  _ide_option->portnumber = 4;

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Click_ComportSelect4(void)
{
  //[VAR]
  //{
      int  i;

  //}

  //일단 전부 선택되지 않은 것으로 만든다.
  for(i = 0; i < 8; i++) { _comport_RadioBtn[i]->_Checked(false); }

  //현재 것을 선택한다.
  _comport_RadioBtn[4]->_Checked(true);

  //환경변수에 저장.
  _ide_option->portnumber = 5;

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Click_ComportSelect5(void)
{
  //[VAR]
  //{
      int  i;

  //}

  //일단 전부 선택되지 않은 것으로 만든다.
  for(i = 0; i < 8; i++) { _comport_RadioBtn[i]->_Checked(false); }

  //현재 것을 선택한다.
  _comport_RadioBtn[5]->_Checked(true);

  //환경변수에 저장.
  _ide_option->portnumber = 6;

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Click_ComportSelect6(void)
{
  //[VAR]
  //{
      int  i;

  //}

  //일단 전부 선택되지 않은 것으로 만든다.
  for(i = 0; i < 8; i++) { _comport_RadioBtn[i]->_Checked(false); }

  //현재 것을 선택한다.
  _comport_RadioBtn[6]->_Checked(true);

  //환경변수에 저장.
  _ide_option->portnumber = 7;

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Click_ComportSelect7(void)
{
  //[VAR]
  //{
      int  i;

  //}

  //일단 전부 선택되지 않은 것으로 만든다.
  for(i = 0; i < 8; i++) { _comport_RadioBtn[i]->_Checked(false); }

  //현재 것을 선택한다.
  _comport_RadioBtn[7]->_Checked(true);

  //환경변수에 저장.
  _ide_option->portnumber = 8;

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_ComportOpenClose(void)
{

  if(STR_Match(_comport_OpenCloseBtn->_caption, "통신 포트 열기") == true)
  {
    if(main_Form->COMPORT_Open(_ide_option->portnumber))
    {
      //버튼의 제목을 바꾸어 준다.
      _comport_OpenCloseBtn->_Caption("통신 포트 닫기");

    }
    else
    {
      _comport_OpenCloseBtn->_Caption("통신 포트 열기");

    }

  }
  else
  {
    if(main_Form->COMPORT_Close())
    {
      //버튼의 제목을 바꾸어 준다.
      _comport_OpenCloseBtn->_Caption("통신 포트 열기");

    }
    else
    {
      _comport_OpenCloseBtn->_Caption("통신 포트 닫기");

    }

  }

  return;

}

//[편집기 밝기 조정]------------------------------------------------------------

void __fastcall Tide_dialogbox_Form::_EVENT_Scroll_EditorBrightness(void)
{
  //[2007.10.05.금][생성!!!]{-------------------------------
  //사용자 설정에 따라 [편집기] 바탕그림의 밝기를 조정한다.
  //[줄이동 막대] 를 움직이는 즉시 해당 값이 적용된다.
  //}-------------------------------------------------------

  //[VAR]
  //{
      int   w, h;

  //}

  //[현재 밝기값 표시]
  //{
      _brightnessGuiEdit->_EDIT_TextOut(IntToStr(_brightnessScrollH->_position).c_str());

  //}

  //[편집기 밝기 반영]
  //{
      //[편집기] 바탕그림의 밝기르 즉시 조정한다.
      editor_edit_Form->_BACKBMP_Brightness(_brightnessScrollH->_position);

  //}

  //[환경 변수에 저장]
  //{
      _ide_option->edit_back_brightness = _brightnessScrollH->_position;

  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Scroll_DebugDelay(void)
{
  //[2007.12.01.토][생성!!!]{-------------------
  //[검증 시간간격] 을 조정한다.
  //즉시 해당 값을 계한하여 표시해 주어야 한다.
  //}-------------------------------------------

  //[VAR]
  //{
      int          w, h;
      double       debugDelay;
      AnsiString   str;

  //}

  //[시간값 계산]
  //{
      //검증 관련 변수에 저장.
      program_captionpanel_Form->_autoStep_Delay = _debugDelayScrollH->_position;

      //기본 단위는 0.1초다.
      debugDelay = _debugDelayScrollH->_position * 0.01;

  //}

  //[시간값 표시]
  //{
      //문자열 만들기.
      str = FloatToStr(debugDelay) + " 초";

      //출력 영역을 지운다.(일단 공백을 사용하여 지운다.)
      FONT_Out_StyleString2(_bmp_, &_font,
                            _debugDelayScrollH->Left + _debugDelayScrollH->Width + 10, d_debugDelayScrollTop,
                            _ide_option->color_0, IDE_COLOR_2, false, d_FONTSTYLE_default,
                            "       ",
                            d_FONT_underline_no, true, 0, IDE_COLOR_1,
                            &w, &h);

      FONT_Out_StyleString2(_bmp_, &_font,
                            _debugDelayScrollH->Left + _debugDelayScrollH->Width + 10, d_debugDelayScrollTop,
                            _ide_option->color_0, IDE_COLOR_2, false, d_FONTSTYLE_default,
                            str.c_str(),
                            d_FONT_underline_no, true, 0, IDE_COLOR_1,
                            &w, &h);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}

  return;

}    

void __fastcall Tide_dialogbox_Form::_EVENT_Scroll_AlphaBlend(void)
{
  //[2007.12.17.월][생성!!!]{---
  //알파블렌드 값을 설정한다.
  //}---------------------------

  //[VAR]
  //{
      int          w, h;
      int          alphaBlendValue;
      AnsiString   str;

  //}

  //[알파블렌드 값 얻기]
  //{
      alphaBlendValue = _alphaBlend_ScrollH->_position;

      //설정값에 반영.
      _ide_option->alphaBlendValue = _alphaBlend_ScrollH->_position;

  //}

  //[시간값 표시]
  //{
      //문자열 만들기.
      str = IntToStr(alphaBlendValue);

      //출력 영역을 지운다.(일단 공백을 사용하여 지운다.)
      FONT_Out_StyleString2(_bmp_, &_font,
                            _alphaBlend_ScrollH->Left + _alphaBlend_ScrollH->Width + 10, d_alphaBlendScrollTop,
                            _ide_option->color_0, IDE_COLOR_2, false, d_FONTSTYLE_default,
                            "       ",
                            d_FONT_underline_no, true, 0, IDE_COLOR_1,
                            &w, &h);

      FONT_Out_StyleString2(_bmp_, &_font,
                            _alphaBlend_ScrollH->Left + _alphaBlend_ScrollH->Width + 10, d_alphaBlendScrollTop,
                            _ide_option->color_0, IDE_COLOR_2, false, d_FONTSTYLE_default,
                            str.c_str(),
                            d_FONT_underline_no, true, 0, IDE_COLOR_1,
                            &w, &h);

  //}

  //[다시 그리기]
  //{
      _Draw();

  //}

  //[알파블렌드 반영]
  //{
      //[알파블렌드] 를 직접 반영한다.
      //단, [알파블렌드] 를 사용하도록 설정한 경우만 처리한다.
      if((_alphaBlend_CheckBtn->_checked == true) && (main_Form->AlphaBlend == true))
      {
        main_Form->AlphaBlendValue = alphaBlendValue;

      }

  //}

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Up_AlphaBlend(void)
{
  //[2007.12.18.화][생성!!!]{-----------------
  //[알파블렌드] 를 사용할지 말지를 결정한다.
  //}-----------------------------------------

  //[알파블렌드] 를 설정/해제 한다.

  //그냥 설정 값을 그대로 반영한다.
  main_Form->AlphaBlend = _alphaBlend_CheckBtn->_checked;

  //설정값에 반영.
  _ide_option->alphaBlendUse = _alphaBlend_CheckBtn->_checked;

  //[관련 콘트롤 제어]
  //[알파블렌드] 기능을 사용할 때만 유효화 한다.
  _alphaBlend_ScrollH->Enabled = _alphaBlend_CheckBtn->_checked;

  return;

}

//[풍선도움말]------------------------------------------------------------------

void __fastcall Tide_dialogbox_Form::_EVENT_Up_BalloonHelpUse(void)
{
  //[2008.02.05.화][생성!!!]{------------------
  //[풍선 도움말] 을 사용할지 말지를 결정한다.
  //}------------------------------------------

  //설정값에 반영.
  _ide_option->balloonHelpUse = _balloonHelpUse_CheckBtn->_checked;

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_Up_BalloonHelpAlphaBlend(void)
{
  //[2008.02.05.화][생성!!!]{-----------------------------
  //[풍선 도움말] 의 투명기능을 사용할지 말지를 결정한다.
  //}-----------------------------------------------------

  //그냥 설정 값을 그대로
  ide_BalloonBox_Form->AlphaBlend      = _balloonHelpAlphaBlend_CheckBtn->_checked;
  ide_BalloonBox_Form->AlphaBlendValue = 225;

  //설정값에 반영.
  _ide_option->balloonHelpAlphaBlend   = _balloonHelpAlphaBlend_CheckBtn->_checked;

  return;

}

//[색동문자]--------------------------------------------------------------------

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_Keyword_ColorSelectSet(void)
{
  //[2007.12.02.일][생성!!!]

  if(main_Form->ide_ColorDialog->Execute())
  {
    //대화상자의 개체에는 바로 반영한다.
    _COLOR_Keyword_SelectColor(main_Form->ide_ColorDialog->Color);

    //환경 변수에 저장.
    _ide_option->color_Keyword = main_Form->ide_ColorDialog->Color;

    //편집기에 반영.
    editor_edit_Form->_EditBuf_Text();

  }

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_Comment_ColorSelectSet(void)
{
  //[2007.12.02.일][생성!!!]

  if(main_Form->ide_ColorDialog->Execute())
  {
    //대화상자의 개체에는 바로 반영한다.
    _COLOR_Comment_SelectColor(main_Form->ide_ColorDialog->Color);

    //환경 변수에 저장.
    _ide_option->color_Comment = main_Form->ide_ColorDialog->Color;

    //편집기에 반영.
    editor_edit_Form->_EditBuf_Text();

  }

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_HexWord_ColorSelectSet(void)
{
  //[2007.12.02.일][생성!!!]

  if(main_Form->ide_ColorDialog->Execute())
  {
    //대화상자의 개체에는 바로 반영한다.
    _COLOR_HexWord_SelectColor(main_Form->ide_ColorDialog->Color);

    //환경 변수에 저장.
    _ide_option->color_HexWord = main_Form->ide_ColorDialog->Color;

    //편집기에 반영.
    editor_edit_Form->_EditBuf_Text();

  }

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_BinWord_ColorSelectSet(void)
{
  //[2007.12.02.일][생성!!!]

  if(main_Form->ide_ColorDialog->Execute())
  {
    //대화상자의 개체에는 바로 반영한다.
    _COLOR_BinWord_SelectColor(main_Form->ide_ColorDialog->Color);

    //환경 변수에 저장.
    _ide_option->color_BinWord = main_Form->ide_ColorDialog->Color;

    //편집기에 반영.
    editor_edit_Form->_EditBuf_Text();

  }

  return;

}

void __fastcall Tide_dialogbox_Form::_EVENT_ButtonClick_EditorBackPicSelectSet(void)
{
  //[2007.12.02.일][생성!!!]{--------------------------------
  //그림 대화상자를 열고 사용자가 선택한 경우 바로 반영한다.
  //}--------------------------------------------------------

  if(main_Form->photo_OpenDialog->Execute() == true)
  {
    //경로를 환경 변수에 저장.
    STR_Assign(_ide_option->editorBackPicPath, main_Form->photo_OpenDialog->FileName.c_str());

    //[편집기] 배경그림 바꾸기.
    editor_edit_Form->_BACKBMP_ChangeJpeg((AnsiString)_ide_option->editorBackPicPath);

  }

  return;

}


