
#include "그림부품\GList.h"

#include "함수묶음.h"

#include "되돌리기_되살리기.h"


void GList_폼디자인_생성(struct ts_생성자  *p생성항목,
                      t_생성자          *p모체생성자,
                      int               pX,
                      int               pY)
{
  //[2023.02.09.목][생성]

  //[VAR]
  //{
      char  문자열[1024];

  //}

  //[그림부품:생성]
  //{
      _GList_생성_(p생성항목->생성자, p모체생성자, _Gui_ID_생성(), pX, pY, 80, 14*2 + 2, true);

      문자열_값_합성("GList", _Gui_ID_읽기(p생성항목->생성자), 문자열);

      //[이름]{-----------------------
      _Str_할당_(p생성항목->이름, 문자열);
      //}----------------------------

  //}

}

void GList_폼디자인_그림부품_삭제(struct ts_생성자  *p생성항목)
{
  //[2023.02.09.목][생성]
  _GList_삭제_(p생성항목->생성자);

}

void GList_폼디자인_속성탭에_속성_설정(struct ts_생성자  *p생성항목,
                                 char             *p전체항목)
{
  //[2023.02.09.목][생성]

  //[VAR]
  //{
      char  문자열[1024*10];

  //}

  //[전체항목 만들기]
  //{
      _Str_할당_(p전체항목, "");

      속성_수정_문자열("종류", "GList", &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_10진수("ID", _Gui_ID_읽기(p생성항목->생성자), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_문자열("이름", p생성항목->이름, &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_10진수("모체", p생성항목->모체ID, &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_10진수("X", _GList_X_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_10진수("Y", _GList_Y_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_10진수("폭", _GList_폭_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_10진수("높이", _GList_높이_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      //[항목] 은 수정/보완 필요있음(행으로 항목을 구분하는 경우 대상 참조 방식으로 전환).
      속성_수정_문자열("전체항목", "...", &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_10진수("영점X", _GList_영점X_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_10진수("영점Y", _GList_영점Y_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_Bool("자동폭", _GList_자동폭_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("자동높이", _GList_자동높이_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_16진수("문자색", _GList_문자색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_문자형식("문자형식", _GList_문자형식_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_16진수("선택문자색", _GList_선택문자색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_10진수("선택배경밝기", _GList_선택배경밝기_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_16진수("선택배경색", _GList_선택배경색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_16진수("임시선택문자색", _GList_임시선택문자색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_10진수("임시선택배경밝기", _GList_임시선택배경밝기_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_16진수("임시선택배경색", _GList_임시선택배경색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_Bool("테두리", _GList_테두리_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_16진수("테두리색", _GList_테두리색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_16진수("배경색", _GList_배경색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_Bool("줄이동자보이기", _GList_줄이동자보이기_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_10진수("줄이동자위치", _GList_줄이동자위치_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_16진수("줄이동자막대색", _GList_줄이동자막대색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_16진수("줄이동자막대배경색", _GList_줄이동자막대배경색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_16진수("줄이동자배경색", _GList_줄이동자배경색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_16진수("줄이동자위화살표색", _GList_줄이동자위화살표색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_16진수("줄이동자아래화살표색", _GList_줄이동자아래화살표색_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_Bool("풍선도움말", _GList_풍선도움말_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _GList_풍선도움말문자열_(p생성항목->생성자, 문자열, d_읽기);
      속성_수정_문자열("풍선도움말문자열", 문자열, &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_Bool("유효", p생성항목->유효, &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("보이기", p생성항목->보이기, &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      _Str_더하기_(p전체항목, "\r\n");

      속성_수정_Bool("이벤트_Select", _GList_이벤트_Select_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("이벤트_MSelect", _GList_이벤트_MSelect_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("이벤트_MEnter", _GList_이벤트_MEnter_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("이벤트_MLeave", _GList_이벤트_MLeave_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("이벤트_SetFocus", _GList_이벤트_SetFocus_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("이벤트_KillFocus", _GList_이벤트_KillFocus_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("이벤트_KEnter", _GList_이벤트_KEnter_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("이벤트_KEsc", _GList_이벤트_KEsc_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)])); _Str_더하기_(p전체항목, "\r\n");
      속성_수정_Bool("이벤트_Scroll", _GList_이벤트_Scroll_(p생성항목->생성자, NULL, d_읽기), &(p전체항목[_Str_길이얻기_(p전체항목)]));

  //}

}

void GList_폼디자인_속성탭의_속성_수정(int               p항목번호,
                                 bool              pT설정_F준비,
                                 t_생성자           *p_속성_GList,
                                 t_생성자           *p_묶음이동_GCheckButton,
                                 t_생성자           *p_속성수정_GEdit,
                                 t_생성자           *p_속성수정_GList,
                                 struct ts_위치크기  *p_선택그림부품_이동전_위치크기,
                                 struct ts_위치크기  *p_선택그림부품_이동후_위치크기,
                                 int               *p_선택그림부품_변위x,
                                 int               *p_선택그림부품_변위y)
{
  //[2023.02.12.일][생성]

  //[VAR]
  //{
      struct ts_생성자     *생성항목;

      char                 항목문자열[1024];
      char                 항목이름[64];

      struct ts_항목수정정보  항목수정정보;

      char                 문자열1[1024*10];
      char                 문자열2[1024*10];

      t_u2                 부품_ID;

      int                  변위_x, 변위_y;

      struct ts_위치크기     이전위치크기, 이후위치크기;

  //}

  //[선택 그림부품 찾기]
  //{
      //[!]{---------------------------------------------------
      //[속성:탭] 에는 [그림부품] 이 [선택] 된 경우만 [속성] 이 나열되므로
      //[선택] 된 [그림부품] 의 [생성정보] 를 얻어 놓는다.
      //}------------------------------------------------------

      if(생성관리_ID로_생성자_찾기(_GCover_대상얻기_(), &생성항목) != true) return;

      //[부품:ID 얻기]
      //{
          //[2019.01.08.화][추가]{--------------------------------
          //<_Gui_ID_읽기(생성항목->생성자)> 형식으로 반복적으로 사용되므로
          //여기서 한번 구하고 <부품_ID> 를 대신 사용.
          //}----------------------------------------------------

          부품_ID = _Gui_ID_읽기(생성항목->생성자);

      //}

  //}

  //[항목 문자열 전체 얻기]
  //{
      _GList_항목얻기_(p_속성_GList, p항목번호, 항목문자열);

  //}

  //[항목이름 추출]
  //{
      //항목의 [첫단어] 가 [항목이름] 이 된다.

      _Str_단어추출_(항목문자열, ' ', 0, 항목이름);

  //}

  //[항목수정정보 정리]
  //{
      //[2018.07.05.목][추가!!!]
      항목수정정보.생성항목 = 생성항목;

      항목수정정보.항목번호 = p항목번호;

      항목수정정보.항목문자열 = 항목문자열;

      항목수정정보.항목이름 = 항목이름;

      //[2018.07.11.수][추가!!!]
      항목수정정보.문자열1 = 문자열1;

      항목수정정보.문자열2 = 문자열2;

  //}

  //[속성 수정]
  //{
      if     (_Str_일치확인_(항목이름, "종류", true) == true)
      {
        //읽기전용.

      }
      else if(_Str_일치확인_(항목이름, "ID", true) == true)
      {
        //읽기전용.

      }
      else if(_Str_일치확인_(항목이름, "이름", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          if(속성항목수정_이름(&항목수정정보) != true) return;

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "모체", true) == true)
      {
        //읽기전용.

        //[중요][2019.02.09.토][수정]{-----------------------
        //[폼디자이너] 상에서 [모체] 도 사용자가 변경할수 있도록 수정.
        //}------------------------------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_10진수(&항목수정정보) != true) return;

          //[양수:확인]{-------------------------------------------------
          if(속성_수정_값이_양수인지_확인(항목수정정보.처리된값) != true) return;
          //}----------------------------------------------------------

          //[반영]
          //{
              //[!]{----------------------------------------------------------
              //실제 [생성관리정보:모체ID] 수정과 <_GX_모체지정_()> 으로 실제 반영을 처리.
              //<폼디자인_모체_수정()> 함수 내부 참고.
              //}-------------------------------------------------------------

              if(폼디자인_모체_수정(부품_ID, 항목수정정보.처리된값, &변위_x, &변위_y) != true) return;

          //}

          //[항목 수정]
          //{
              속성_수정_기록_문자열(부품_ID, "모체", 문자열2);

              //[X/Y 처리]
              //{
                  //[2019.02.10.일][추가]{--------------------------------
                  //[모체:변경] 시 [마우스로 찍은 위치] 에 [그림부품] 을 배치하므로
                  //[위치] 수정 정보도 같이 기록.
                  //[위치] 는 이미 위의 <폼디자인_모체_수정()> 내부에서 변경된 상태.
                  //}----------------------------------------------------

                  //"모체" 수정과 [묶음수정] 으로 기록한다.
                  폼디자이너_수정기록_속성_X_Y_추가(수정기록_ID_얻기(), 부품_ID, 변위_x, 변위_y);

              //}

          //}

        }
        else
        {
          속성항목준비_모체(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "X", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[10진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_10진수(&항목수정정보) != true) return;

          _GX_위치크기_얻기_(생성항목->생성자, &(p_선택그림부품_이동전_위치크기->x), &(p_선택그림부품_이동전_위치크기->y), NULL, NULL);

          //[반영]
          _GList_X_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          _GX_위치크기_얻기_(생성항목->생성자, &(p_선택그림부품_이동후_위치크기->x), &(p_선택그림부품_이동후_위치크기->y), NULL, NULL);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "X", 문자열2);

          //}

          //[묶음이동인 경우 처리]
          //{
              //[2018.08.20.월][추가!!!]

              //[변위 계산]{--------------------------------------------------------------------
              (*p_선택그림부품_변위x) = p_선택그림부품_이동후_위치크기->x - p_선택그림부품_이동전_위치크기->x;
              (*p_선택그림부품_변위y) = p_선택그림부품_이동후_위치크기->y - p_선택그림부품_이동전_위치크기->y;
              //}-----------------------------------------------------------------------------

              if(_GCheckButton_확인_(p_묶음이동_GCheckButton, NULL, d_읽기) == true)
              {
                선택된_그림부품_묶음이동(부품_ID, 생성항목->모체ID);

              }

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "Y", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[10진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_10진수(&항목수정정보) != true) return;

          _GX_위치크기_얻기_(생성항목->생성자, &(p_선택그림부품_이동전_위치크기->x), &(p_선택그림부품_이동전_위치크기->y), NULL, NULL);

          //[반영]
          _GList_Y_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          _GX_위치크기_얻기_(생성항목->생성자, &(p_선택그림부품_이동후_위치크기->x), &(p_선택그림부품_이동후_위치크기->y), NULL, NULL);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "Y", 문자열2);

          //}

          //[묶음이동인 경우 처리]
          //{
              //[2018.08.20.월][추가!!!]

              //[변위 계산]{--------------------------------------------------------------------
              (*p_선택그림부품_변위x) = p_선택그림부품_이동후_위치크기->x - p_선택그림부품_이동전_위치크기->x;
              (*p_선택그림부품_변위y) = p_선택그림부품_이동후_위치크기->y - p_선택그림부품_이동전_위치크기->y;
              //}-----------------------------------------------------------------------------

              if(_GCheckButton_확인_(p_묶음이동_GCheckButton, NULL, d_읽기) == true)
              {
                선택된_그림부품_묶음이동(부품_ID, 생성항목->모체ID);

              }

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "폭", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[10진수]
        //}--------------------------

        //[수정 유효 확인]
        //{
            //[2019.01.31.목][추가][{-----------------------
            //<자동폭:true> 인 경우는 [폭] 을 수정할수 없도록 처리.
            //[마우스:크기조정] 의 경우는 자동으로 [변경불가] 된다.
            //}--------------------------------------------

            if(_GList_자동폭_(생성항목->생성자, NULL, d_읽기) == true) return;

        //}

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_10진수(&항목수정정보) != true) return;

          //[양수:확인]{-------------------------------------------------
          if(속성_수정_값이_양수인지_확인(항목수정정보.처리된값) != true) return;
          //}----------------------------------------------------------

          //[반영]
          _GList_폭_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "폭", 문자열2);

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "높이", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[10진수]
        //}--------------------------

        //[수정 유효 확인]
        //{
            //[2019.01.31.목][추가][{--------------------------
            //<자동높이:true> 인 경우는 [높이] 를 수정할수 없도록 처리.
            //[마우스:크기조정] 의 경우는 자동으로 [변경불가] 된다.
            //}-----------------------------------------------

            if(_GList_자동높이_(생성항목->생성자, NULL, d_읽기) == true) return;

        //}

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_10진수(&항목수정정보) != true) return;

          //[양수:확인]{-------------------------------------------------
          if(속성_수정_값이_양수인지_확인(항목수정정보.처리된값) != true) return;
          //}----------------------------------------------------------

          //[반영]
          _GList_높이_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "높이", 문자열2);

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "전체항목", true) == true)
      {
        if(pT설정_F준비 == true)
        {
          //[!]{-----
          //속성 수정.
          //}--------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]

              //[참고]{---------------------------------------------------------------------
              //<이벤트_편집기()> 에서 [버튼:취소] 가 눌린 경우는 <폼디자인_속성탭의_속성_수정()> 자체가
              //호출되지 않아 이곳으로 올수 없으므로 [이름] 과 달리 직접 여기서 처리.
              //[확인] 으로 <속성_수정_기록_편집기_설정()> 에서 설정이 [반영] 된 경우만 이곳으로 올수 있다.
              //}--------------------------------------------------------------------------

              속성_수정_기록_편집기_설정(&항목수정정보);

          //}

        }
        else
        {
          //[!]{-----------------
          //속성을 수정할 준비만 수행.
          //}--------------------

          //[항목] 은 행단위로 각 항목을 구분하므로 [속성] 수정용으로 편집기를 열어 준다.
          //처리가 복잡하므로 별도 함수로 처리.
          속성_수정_편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "영점X", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[10진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_10진수(&항목수정정보) != true) return;

          //[반영]
          _GList_영점X_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "영점X", 문자열2);

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "영점Y", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[10진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_10진수(&항목수정정보) != true) return;

          //[반영]
          _GList_영점Y_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "영점Y", 문자열2);

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "자동폭", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[중요][2019.01.31.목][추가]{---------------------------------------
                  //[자동폭/높이] 의 경우 <true> 시 [폭/높이] 를 변경시키므로, 먼저 [폭/높이] 의
                  //수정도 [수정기록] 에 추가해야 한다.
                  //1) 반드시 [자동폭/높이] 기록보다 먼저 기록할것.
                  //2) 실제 크기가 변경되는 <true> 에서만 반영.
                  //}----------------------------------------------------------------

                  //[자동크기변경:이전크기 얻기]
                  //{
                      //[2019.01.31.목][추가]
                      _GX_위치크기_얻기_(생성항목->생성자, NULL, NULL, (t_u4 *)(&(이전위치크기.폭)), (t_u4 *)(&(이전위치크기.높이)));

                  //}

                  //[반영]
                  _GList_자동폭_(생성항목->생성자, true, d_쓰기);

                  //[자동크기변경:이후크기 얻기]
                  //{
                      //[2019.01.31.목][추가]
                      _GX_위치크기_얻기_(생성항목->생성자, NULL, NULL, (t_u4 *)(&(이후위치크기.폭)), (t_u4 *)(&(이후위치크기.높이)));

                  //}

                  //[자동크기변경:수정기록]
                  //{
                      //[2019.01.31.목][추가]
                      //[묶음수정] 을 위하여 아래 <속성_수정_기록_Bool()> 에서 생성되는 [수정기록:ID] 를 미리 얻어서 사용.
                      //--------------------------------------v
                      폼디자이너_수정기록_속성_폭_높이_추가(수정기록_ID_미리얻기(), 부품_ID,
                                                    //[폭:변위].
                                                    이후위치크기.폭 - 이전위치크기.폭,
                                                    //[높이:변위].
                                                    이후위치크기.높이 - 이전위치크기.높이);

                  //}

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "자동폭", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_자동폭_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "자동폭", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "자동높이", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[중요][2019.01.31.목][추가]{---------------------------------------
                  //[자동폭/높이] 의 경우 <true> 시 [폭/높이] 를 변경시키므로, 먼저 [폭/높이] 의
                  //수정도 [수정기록] 에 추가해야 한다.
                  //1) 반드시 [자동폭/높이] 기록보다 먼저 기록할것.
                  //2) 실제 크기가 변경되는 <true> 에서만 반영.
                  //}----------------------------------------------------------------

                  //[자동크기변경:이전크기 얻기]
                  //{
                      //[2019.01.31.목][추가]
                      _GX_위치크기_얻기_(생성항목->생성자, NULL, NULL, (t_u4 *)(&(이전위치크기.폭)), (t_u4 *)(&(이전위치크기.높이)));

                  //}

                  //[반영]
                  _GList_자동높이_(생성항목->생성자, true, d_쓰기);

                  //[자동크기변경:이후크기 얻기]
                  //{
                      //[2019.01.31.목][추가]
                      _GX_위치크기_얻기_(생성항목->생성자, NULL, NULL, (t_u4 *)(&(이후위치크기.폭)), (t_u4 *)(&(이후위치크기.높이)));

                  //}

                  //[자동크기변경:수정기록]
                  //{
                      //[2019.01.31.목][추가]
                      //[묶음수정] 을 위하여 아래 <속성_수정_기록_Bool()> 에서 생성되는 [수정기록:ID] 를 미리 얻어서 사용.
                      //--------------------------------------v
                      폼디자이너_수정기록_속성_폭_높이_추가(수정기록_ID_미리얻기(), 부품_ID,
                                                    //[폭:변위].
                                                    이후위치크기.폭 - 이전위치크기.폭,
                                                    //[높이:변위].
                                                    이후위치크기.높이 - 이전위치크기.높이);

                  //}

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "자동높이", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_자동높이_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "자동높이", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "문자색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_문자색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "문자색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "문자형식", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{------------------------------------------------------------
          //<일반문자(0)/굵은문자(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}---------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_문자형식_(생성항목->생성자, d_일반문자, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_문자형식(부품_ID, "문자형식", d_일반문자);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_문자형식_(생성항목->생성자, d_굵은문자, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_문자형식(부품_ID, "문자형식", d_굵은문자);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_문자형식_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "선택문자색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_선택문자색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "선택문자색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "선택배경밝기", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[10진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_10진수(&항목수정정보) != true) return;

          //[양수:확인]{-------------------------------------------------
          if(속성_수정_값이_양수인지_확인(항목수정정보.처리된값) != true) return;
          //}----------------------------------------------------------

          //[범위확인][2018.07.29.일][추가!!!]{------------------------------
          //[밝기] 는 전부 <0 - 255> 사이의 값이어야 한다.
          if(속성_수정_값이_밝기범위인지_확인(항목수정정보.처리된값) != true) return;
          //}-------------------------------------------------------------

          //[반영]
          _GList_선택배경밝기_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "선택배경밝기", 문자열2);

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "선택배경색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_선택배경색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "선택배경색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "임시선택문자색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_임시선택문자색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "임시선택문자색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "임시선택배경밝기", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[10진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_10진수(&항목수정정보) != true) return;

          //[양수:확인]{-------------------------------------------------
          if(속성_수정_값이_양수인지_확인(항목수정정보.처리된값) != true) return;
          //}----------------------------------------------------------

          //[범위확인][2018.07.29.일][추가!!!]{------------------------------
          //[밝기] 는 전부 <0 - 255> 사이의 값이어야 한다.
          if(속성_수정_값이_밝기범위인지_확인(항목수정정보.처리된값) != true) return;
          //}-------------------------------------------------------------

          //[반영]
          _GList_임시선택배경밝기_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "임시선택배경밝기", 문자열2);

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "임시선택배경색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_임시선택배경색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "임시선택배경색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "테두리", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_테두리_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "테두리", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_테두리_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "테두리", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "테두리색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_테두리색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "테두리색", 문자열2);

          //}

          //[관련처리]
          //{
              //[2019.01.31.목][주석처리]{이 함수 끝 부분 같은 날짜 설명 참고}
              /*
              //[2018.07.29.일][추가!!!]{---------------------------------------------
              //[테두리색] 은 일종의 [테마색] 으로 지정시 [수직:줄이동자] 의 모든 색을 [테두리색] 의
              //[테마색] 으로 수정하게 된다(기존 [수직:줄이동자] 색설정은 무시).
              //따라서 [수직:줄이동자] 의 색상을 다시 읽어 변환값을 반영.
              //}--------------------------------------------------------------------

              속성_수정_16진수("줄이동자막대색", _GList_줄이동자막대색_(생성항목->생성자, NULL, d_읽기), NULL);
              속성_수정_16진수("줄이동자막대배경색", _GList_줄이동자막대배경색_(생성항목->생성자, NULL, d_읽기), NULL);
              속성_수정_16진수("줄이동자배경색", _GList_줄이동자배경색_(생성항목->생성자, NULL, d_읽기), NULL);
              속성_수정_16진수("줄이동자위화살표색", _GList_줄이동자위화살표색_(생성항목->생성자, NULL, d_읽기), NULL);
              속성_수정_16진수("줄이동자아래화살표색", _GList_줄이동자아래화살표색_(생성항목->생성자, NULL, d_읽기), NULL);
              */
          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "배경색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_배경색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "배경색", 문자열2);

          //}

          //[관련처리]
          //{
              //[2019.01.31.목][주석처리]{이 함수 끝 부분 같은 날짜 설명 참고}
              /*
              //[2018.07.29.일][추가!!!]{---------------------------------------------------
              //[배경색] 지정시 [줄이동자배경색] 의 색도 같은 색으로 설정되므로 [줄이동자배경색] 을 다시 읽어
              //수정된 값을 다시 보여준다.
              //}--------------------------------------------------------------------------

              속성_수정_16진수("줄이동자배경색", _GList_줄이동자배경색_(생성항목->생성자, NULL, d_읽기), NULL);
              */
          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "줄이동자보이기", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_줄이동자보이기_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "줄이동자보이기", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_줄이동자보이기_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "줄이동자보이기", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "줄이동자위치", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[10진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          lb_GList_줄이동자위치:

          if(속성항목수정_10진수(&항목수정정보) != true) return;

          //[양수:확인]{-------------------------------------------------
          if(속성_수정_값이_양수인지_확인(항목수정정보.처리된값) != true) return;
          //}----------------------------------------------------------

          //[반영]
          _GList_줄이동자위치_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[자동보정]
          //{
              //[2019.01.27.일][추가]{-------------------------------------------------------
              //설정시 { 최소 <= 위치 <= 최대 } 절대 조건을 만족 시키기 위하여 [자동보정] 이 될수 있다.
              //이 경우 입력한 값과 실제 적용된 값이 다를수 있으므로, [반영] 후 다시 한번 확인하여 [반영] 된
              //결과가 [적용] 값과 다른 경우는 [자동보정] 된 값으로 다시 [속성항목] 을 수정하도록 과정 반복.
              //}---------------------------------------------------------------------------

              if(_GList_줄이동자위치_(생성항목->생성자, NULL, d_읽기) != 항목수정정보.처리된값)
              {
                //현재 [자동보정] 된 값을 다시 문자열로 변환(문자열2 는 큰 의미 없이 저장공간으로 사용된 것).
                _Conv_Long값_문자열_(_GList_줄이동자위치_(생성항목->생성자, NULL, d_읽기), 0,  true, false, 문자열2);

                //다시 반복 처리하게 되는 <속성항목수정_10진수()> 에서 <p_속성수정_GEdit> 의 [문자열] 을
                //대상으로 처리하므로 <p_속성수정_GEdit> 에 다시 [자동보정] 된 값의 [문자열] 을 넣어 준다.
                _GEdit_문자열_(p_속성수정_GEdit, 문자열2, d_쓰기);

                //다시 처리 반복.
                goto lb_GList_줄이동자위치;

              }

          //}

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "줄이동자위치", 문자열2);

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "줄이동자막대색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_줄이동자막대색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "줄이동자막대색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "줄이동자막대배경색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_줄이동자막대배경색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "줄이동자막대배경색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "줄이동자배경색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_줄이동자배경색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "줄이동자배경색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "줄이동자위화살표색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_줄이동자위화살표색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "줄이동자위화살표색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "줄이동자아래화살표색", true) == true)
      {
        //[2018.07.13.금][추가!!!]{---
        //[16진수]
        //}--------------------------

        if(pT설정_F준비 == true)
        {
          if(속성항목수정_16진수(&항목수정정보) != true) return;

          //[반영]
          _GList_줄이동자아래화살표색_(생성항목->생성자, 항목수정정보.처리된값, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "줄이동자아래화살표색", 문자열2);

          //}

        }
        else
        {
          속성항목준비_색상(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "풍선도움말", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_풍선도움말_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "풍선도움말", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_풍선도움말_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "풍선도움말", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "풍선도움말문자열", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //수정할 문자열 읽기.
          _GEdit_문자열_(p_속성수정_GEdit, 문자열1, d_읽기);

          //[반영]
          _GList_풍선도움말문자열_(생성항목->생성자, 문자열1, d_쓰기);

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              속성_수정_기록_문자열(부품_ID, "풍선도움말문자열", 문자열1);

          //}

        }
        else
        {
          속성_수정_한줄편집기_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "유효", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //[그림부품] 에 직접 설정하지 않고 [생성관리자] 에 설정한다.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  생성항목->유효 = true;

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "유효", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  생성항목->유효 = false;

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "유효", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "보이기", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //[그림부품] 에 직접 설정하지 않고 [생성관리자] 에 설정한다.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  생성항목->보이기 = true;

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "보이기", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  생성항목->보이기 = false;

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "보이기", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "이벤트_Select", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_이벤트_Select_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_Select", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_이벤트_Select_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_Select", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "이벤트_MSelect", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_이벤트_MSelect_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_MSelect", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_이벤트_MSelect_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_MSelect", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "이벤트_MEnter", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_이벤트_MEnter_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_MEnter", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_이벤트_MEnter_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_MEnter", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "이벤트_MLeave", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_이벤트_MLeave_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_MLeave", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_이벤트_MLeave_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_MLeave", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "이벤트_SetFocus", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_이벤트_SetFocus_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_SetFocus", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_이벤트_SetFocus_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_SetFocus", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "이벤트_KillFocus", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_이벤트_KillFocus_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_KillFocus", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_이벤트_KillFocus_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_KillFocus", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "이벤트_KEnter", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_이벤트_KEnter_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_KEnter", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_이벤트_KEnter_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_KEnter", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "이벤트_KEsc", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_이벤트_KEsc_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_KEsc", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_이벤트_KEsc_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_KEsc", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }
      else if(_Str_일치확인_(항목이름, "이벤트_Scroll", true) == true)
      {
        //[2018.07.13.금][추가!!!]
        if(pT설정_F준비 == true)
        {
          //[!]{---------------------------------------------------------
          //<true(0)/false(1)> 순으로 돼 있으므로 [번호] 만으로 간단하게 구분 처리.
          //}------------------------------------------------------------

          //[항목 수정]
          //{
              //[2019.01.07.월][수정]
              switch(_GList_항목선택_(p_속성수정_GList, NULL, d_읽기))
              {
                case 0 : //true.
                {
                  //[반영]
                  _GList_이벤트_Scroll_(생성항목->생성자, true, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_Scroll", true);

                } break;

                case 1 : //false.
                {
                  //[반영]
                  _GList_이벤트_Scroll_(생성항목->생성자, false, d_쓰기);

                  //[속성 수정]
                  속성_수정_기록_Bool(부품_ID, "이벤트_Scroll", false);

                } break;

              }

          //}

        }
        else
        {
          속성_수정_bool_보이기(&항목수정정보);

        }

      }

  //}

}

void GList_폼디자인_선택된_그림부품_기본크기위치로_조정(struct ts_생성자  *p생성항목)
{
  //[2023.02.13.월][생성]

  _GX_위치설정_(p생성항목->생성자, 0, 0);
  _GX_크기설정_(p생성항목->생성자, 80, 14*2 + 2);

}

void GList_속성_수정_편집기_설정(struct ts_항목수정정보  *p정보,
                             t_생성자              *p_편집기_GEditor)
{
  //[2023.02.13.월][생성]{--------------------------------------------
  //
  //<GList>, <GTabs> 의 "항목" 전체를 현재 [편집기] 문자열을 사용하여 설정한다.
  //
  //GID 를 사용하여 둘을 구분 처리.
  //
  //1) [편집기] 의 [저장공간:위치] 얻기.
  //
  //2) [편집기] 의 현재 문자열 읽어들이기.
  //
  //3) [전체항목] 으로 설정.
  //
  //4) 편집기 감추기.
  //
  //}----------------------------------------------------------------

  //[VAR]
  //{
      //<GList> 의 경우는 1K 이상의 긴 문자열일수 있으므로 동적생성하여 사용.
      char  *문자열;

      char  *저장소;

  //}

  //[편집기 설정]
  //{
      //[편집기] 의 [저장공간:위치] 얻기.
      ((void *)저장소) = _GEditor_편집기저장소위치얻기_(p_편집기_GEditor);

      //[편집기] 현재 문자열 길이 만큼 동적 생성.
      ((void *)문자열) = _Mem_생성_(_GEditor_문서크기_(p_편집기_GEditor));

      //[편집기] 문자열 읽어 들이기.
      _Str_할당_(문자열, 저장소);

      //전체항목 설정.
      _GList_전체항목_(p정보->생성항목->생성자, 문자열, d_쓰기);

      //동적생성 공간 삭제.
      _Mem_삭제_((void *)문자열);

      //편집기 보이기.
      편집기_감추기();

  //}

}

void GList_속성_수정_기록_편집기_설정(struct ts_항목수정정보  *p정보,
                                 t_생성자              *p_편집기_GEditor)
{
  //[2023.02.13.월][생성]{-------------------------------------------------
  //<속성_수정_편집기_설정()> 과 동일하고 [되돌리기/되살리기] 지원을 위한 수정기록] 추가.
  //
  //<GList>, <GTabs> 의 "항목" 전체를 현재 [편집기] 문자열을 사용하여 설정한다.
  //
  //GID 를 사용하여 둘을 구분 처리.
  //
  //1) [편집기] 의 [저장공간:위치] 얻기.
  //
  //2) [편집기] 의 현재 문자열 읽어들이기.
  //
  //3) [전체항목] 으로 설정.
  //
  //4) 편집기 감추기.
  //
  //[중요]----------------------------------------------------------------
  //이 함수는 [실제:수정] 이 된 경우만 [수정기록] 에 등록하는데 주 목적이 있다.
  //}--------------------------------------------------------------------

  //[VAR]
  //{
      char  *저장소;

      char   새항목[1024*100];

      char   원본항목[1024*100];

  //}

  //[편집기 설정]
  //{
      //[편집기 문자열 얻기]
      //{
          //[편집기] 의 [저장공간:위치] 얻기.
          ((void *)저장소) = _GEditor_편집기저장소위치얻기_(p_편집기_GEditor);

          //[편집기] 문자열 읽어 들이기.
          _Str_할당_(새항목, 저장소);

          편집기_감추기();

      //}

      //[현재 항목 문자열 얻기]
      //{
          _GList_전체항목_(p정보->생성항목->생성자, 원본항목, d_읽기);

      //}

      //[수정확인]
      //{
          //[!]{-----------------------------------------------------------------
          //수정할 문자열과 원본 문자열이 동일하면 같은 값이므로 수정할 필요가 없으므로
          //더이상 처리하지 않고 종료.
          //
          //[중요]****************************************************************
          //이 부분은 [수정기록] 에 [수정 전/후] 같은 값이 기록돼는 것을 막기 위하여 반드시 필요.
          //이 함수를 따로 만드는 이유가 여기에 존재.
          //}--------------------------------------------------------------------

          if(_Str_일치확인_(새항목, 원본항목, true) == true) return;

      //}

      //[항목 교체]
      //{
          //[중요]{------------------------------------------
          //새로운 내용으로 수정하는 것이므로 여기서 [수정기록] 에 등록.
          //}-----------------------------------------------

          폼디자이너_수정기록_속성_추가(수정기록_ID_생성(), _Gui_ID_읽기(p정보->생성항목->생성자), '-', "전체항목");
          //{
              //전체항목 설정.
              _GList_전체항목_(p정보->생성항목->생성자, 새항목, d_쓰기);

          //}
          폼디자이너_수정기록_속성_추가(수정기록_ID_얻기(), _Gui_ID_읽기(p정보->생성항목->생성자), '+', "전체항목");

      //}

  //}

}

void GList_폼디자인_문서_만들기(char                 *r문서,
                            char                *p항목_이름,
                            struct ts_생성자      *p_생성자_,
                            struct  ts_생성자정리  *p_생성자정리_,
                            int                  p_i)
{
  //[2023.02.14.화][생성]{--------------------------------
  //[2018.07.23.월][생성!!!]------------------------------
  //현재 [폼디자인] 을 그대로 <*.fmdsm> 문서 형식으로 만든다.
  //
  //[주의!!!]*********************************************
  //<r문서> 는 전체 문서를 담을수 있을 만큼 충분히 큰 크기여야 한다.
  //
  //[2019.01.11.금][중요수정]------------------------------
  //<*.fmdsn> 문서에 [ID] 추가([수정이력] 지원을 위한것).
  //}----------------------------------------------------

  //[VAR]
  //{
      char  문자열[1024*100];

  //}

  if(_Str_일치확인_(p항목_이름, "전체항목", true) == true)
  {
    //[설명!!!]{----
    //
    //전체항목 = ...
    //{
    //항목0
    //항목1
    //...
    //}
    //
    //}------------

    //이미 일반항목 추가 부분에서 "항목 = ..." 까지는 추가됐으므로 [항목나열] 부분만 처리.
    _Str_더하기_(r문서, "{\r\n");
    //{
        //행단위로 구분돼 있는 항목 전체 얻기.
        _GList_전체항목_(p_생성자_[p_생성자정리_[p_i].번호].생성자, 문자열, d_읽기);

        _Str_더하기_(r문서, 문자열);

        //[주의!!]{---------------------------------------------------
        //<GList> 는 항목의 마지막에 "\r\n" 이 있는 경우 NULL 항목이 추가 되어
        //[전체항목:문자열] 끝에 "\r\n" 이 없으므로 추가한다.
        _Str_더하기_(r문서, "\r\n");
        //}----------------------------------------------------------

    //}
    _Str_더하기_(r문서, "}\r\n");

  }

}

void GList_폼디자인_문서_최적화(char  *pr기본문서_경로이름확장자)
{
  //[2023.02.14.화][생성]

  _Str_더하기_(pr기본문서_경로이름확장자, "기본값\\GList.fmdv");

}

void GList_폼디자인_문서_복원_보이기(struct ts_생성자  *p생성항목,
                                t_u1             p동작구분)
{
  //[2023.02.14.화][생성]

  if((p동작구분 & d_폼디자인) && (p동작구분 != d_속성)) { _GList_보이기_(p생성항목->생성자, true, d_쓰기); }

}

bool GList_폼디자인_문서_복원(struct ts_생성자  **p생성항목,
                          struct ts_생성자  **p모체항목,
                          t_생성자          **p모체생성자,
                          t_u1               p동작구분,
                          t_u2               pID,
                          bool               pID포함복원,
                          char              *p항목,
                          char              *p내용,
                          t_생성자           *p_디자인판_GLabel,
                          int                p_미리보기보정값x,
                          int                p_미리보기보정값y,
                          char              *p문서, t_u4  p문서크기,
                          int               *pr행시작위치,
                          int               *pr행끝위치)
{
  //[2023.02.17.금][생성]

  //[VAR]
  //{
      int   X, Y, 폭, 높이;

      t_u2  복원_ID;

      char  항목수집[1024*100];

  //}

  //[생성항목 얻기]
  //{
      //[중요]{-------------------------------------------------------------------
      //[그림부품] 생성전에 [생성자] 를 얻어 놓는다.
      //이는 실제 [그림부품] 생성 전에 [이름] 등 [생성항목] 에 추가해야 하는 정보가 있기 때문이다.
      //
      //[참고][2018.11.26.월]******************************************************
      //<p동작구분:d_속성> 의 경우는 이 함수 시작부분에서 <pID> 로 [생성항목] 을 구했으므로
      //NULL 이 아니게 되어 자연스럽게 [생성] 하지 않게 된다.
      //}-------------------------------------------------------------------------

      //한번만 생성되도록 처리.
      if((*p생성항목) == NULL)
      {
        if(생성관리_생성자_얻기(&(*p생성항목)) != true) return(false);

      }

  //}

  if     (_Str_일치확인_(p항목, "이름", true) == true)
  {
    _Str_할당_((*p생성항목)->이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "ID", true) == true)
  {
    //[2019.01.11.금][추가]{----------------------------
    //<pID포함복원:true> 인 경우만 의미가 있으나 <*.fmdsn> 에
    //포함된 정보이므로 일단 읽어 놓는다.
    //}------------------------------------------------

    복원_ID = 변환_10진수표기_Long값(p내용);

  }
  else if(_Str_일치확인_(p항목, "모체", true) == true)
  {
    //[되돌리기/되살리기]
    //{
        //[2018.11.26.월][추가]{--------------
        //[모체] 는 [속성] 처리 대상이 아니다.
        //
        //[중요][2019.02.10.일][주석처리]-------
        //[모체] 도 [속성] 대상이 됐으므로 주석처리.
        //}----------------------------------

        //if(p동작구분 == d_속성) continue;

    //}

    if(_Str_일치확인_(p내용, "", true) == true)
    {
      if(p동작구분 == d_미리보기) { (*p모체생성자) = NULL;            }
      else                    { (*p모체생성자) = p_디자인판_GLabel; }

      //[모체] 가 없는 것.
      (*p생성항목)->모체ID = NULL;

      //[되돌리기/되살리기]
      //{
          //[2019.02.10.일][추가]{----------------
          //[속성] 인 경우는 직접 [모체] 를 변경해 준다.
          //
          //[모체:0] 인 경우를 처리.
          //}------------------------------------

          if(p동작구분 == d_속성)
          {
            _GX_모체지정_((*p생성항목)->생성자, p_디자인판_GLabel);

          }

      //}

    }
    else
    {
      if(생성관리_이름으로_생성자_찾기(p내용, &(*p모체항목)) != true) return(false);

      (*p모체생성자) = (*p모체항목)->생성자;

      //[주의!!!]{---------------------------------------------------------------------
      //다른 곳에서 자동으로  채워지지 않으므로 여기서 반드시 설정필요.
      //[속성] 에서 바로 반영되므로 여기서 설정하지 않으면 0 으로 되어 저장시 [모체:NULL] 로 저장된다.
      (*p생성항목)->모체ID = _Gui_ID_읽기((*p모체항목)->생성자);
      //}-----------------------------------------------------------------------------

      //[되돌리기/되살리기]
      //{
          //[2019.02.10.일][추가]{----------------
          //[속성] 인 경우는 직접 [모체] 를 변경해 준다.
          //
          //[모체:존재] 인 경우를 처리.
          //}------------------------------------

          if(p동작구분 == d_속성)
          {
            _GX_모체지정_((*p생성항목)->생성자, (*p모체항목)->생성자);

          }

      //}

    }

  }
  else if(_Str_일치확인_(p항목, "X", true) == true)
  {
    X = 변환_10진수표기_Long값(p내용);

    //[되돌리기/되살리기]
    //{
        //[2018.11.26.월][추가]{---------------------------------------
        //[속성] 인 경우는 지정 [ID] 에 해당하는 [그림부품] 을 대상으로 직접 처리.
        //}-----------------------------------------------------------

        if(p동작구분 == d_속성){ _GList_X_((*p생성항목)->생성자, X, d_쓰기); }

    //}

  }
  else if(_Str_일치확인_(p항목, "Y", true) == true)
  {
    Y = 변환_10진수표기_Long값(p내용);

    //[되돌리기/되살리기]
    //{
        //[2018.11.26.월][추가]{---------------------------------------
        //[속성] 인 경우는 지정 [ID] 에 해당하는 [그림부품] 을 대상으로 직접 처리.
        //}-----------------------------------------------------------

        if(p동작구분 == d_속성){ _GList_Y_((*p생성항목)->생성자, Y, d_쓰기); }

    //}

  }
  else if(_Str_일치확인_(p항목, "폭", true) == true)
  {
    폭 = 변환_10진수표기_Long값(p내용);

    //[되돌리기/되살리기]
    //{
        //[2018.11.26.월][추가]{---------------------------------------
        //[속성] 인 경우는 지정 [ID] 에 해당하는 [그림부품] 을 대상으로 직접 처리.
        //}-----------------------------------------------------------

        if(p동작구분 == d_속성){ _GList_폭_((*p생성항목)->생성자, 폭, d_쓰기); }

    //}

  }
  else if(_Str_일치확인_(p항목, "높이", true) == true)
  {
    높이 = 변환_10진수표기_Long값(p내용);

    //[되돌리기/되살리기]
    //{
        //[2018.11.26.월][추가]{---------------------------------------
        //[속성] 인 경우는 지정 [ID] 에 해당하는 [그림부품] 을 대상으로 직접 처리.
        //}-----------------------------------------------------------

        if(p동작구분 == d_속성)
        {
          _GList_높이_((*p생성항목)->생성자, 높이, d_쓰기);

          //아래 [생성] 부분을 처리하지 않도록 건너뛴다.
          return(true);

        }

    //}

    //[그림부품:생성]
    //{
        //[!]{-------------------------------------
        //생성에 필요한 인수를 모든 얻은 여기서 [생성] 한다.
        //여기서는 아직 보이지 않는다.
        //}----------------------------------------

        //[ID:생성]
        //{
            //[2019.01.11.금][추가]{-----------------------------------------
            //<*.fmdsn> 문서의 [ID] 를 그대로 사용하는 경우가 아닐때만 새로운 ID 생성.
            //}-------------------------------------------------------------

            if(pID포함복원 != true) { 복원_ID = _Gui_ID_생성(); }

        //}

        if((p동작구분 == d_미리보기) && ((*p생성항목)->모체ID == NULL))
        {
          //[2018.08.14.화][추가!!!]{---------------------------------------------
          //[미리보기] 시에 [그림부품] 들이 [화면가운데] 를 중심으로 분포 되도록 위치를 조정.
          //[보정값] 은 <폼디자인_문서_미리보기()> 에서 <폼디자인_분포정보_얻기()> 로 구해진다.
          //단, [모체:NULL] 로 화면에 생성되는 그림부품만을 대상으로 한다.
          //}--------------------------------------------------------------------

          _GList_생성_((*p생성항목)->생성자, (*p모체생성자), 복원_ID, X - p_미리보기보정값x, Y - p_미리보기보정값y, 폭, 높이, false);

        }
        else
        {
          _GList_생성_((*p생성항목)->생성자, (*p모체생성자), 복원_ID, X, Y, 폭, 높이, false);

        }

        //[되돌리기/되살리기]
        //{
            //[2018.11.26.월][추가]{----------------------
            //ID 를 원래 [그림부품:ID] 인 <pID> 로 돌려 놓는다.
            //}------------------------------------------

            if(p동작구분 == d_그림부품) { _Gui_ID_수정((*p생성항목)->생성자, pID); }

        //}

    //}

    //[창:제목:설정]
    //{
        //[2018.10.16.화][추가!!!]{----------------------------
        //[독립창] 으로 구동되는 경우 [작업표시줄] 에 보여질 [이름] 설정.
        //[그림부품:이름] 과 일치하도록 설정.
        //}---------------------------------------------------

        _GX_표시되는_이름설정_((*p생성항목)->생성자, (*p생성항목)->이름);

    //}

  }
  else if(_Str_일치확인_(p항목, "전체항목", true) == true)
  {
    //[설명!!!]{----
    //
    //전체항목 = ...
    //{
    //항목0
    //항목1
    //...
    //}
    //
    //}------------

    //현재 "항목 = ..." 행이므로 다음 행부터 [항목:수집] 처리시작.
    _Str_다음행_시작위치얻기_(p문서, (*pr행시작위치), &(*pr행시작위치));

    for( ; (*pr행시작위치) < p문서크기; _Str_다음행_시작위치얻기_(p문서, (*pr행시작위치), &(*pr행시작위치)))
    {
      //[행문자열 추출]
      //{
          //[주의!!!]{------------------------------------------------------
          //[항목] 은 [행단위:구분] 이므로 [항목] 자체에 [공백] 이 있을수 있다.
          //따라서, [공백] 을 기준으로 [단어] 를 추출하지 않고 [행전체] 를 추출하여 처리.
          //}--------------------------------------------------------------

          //단순 문자열이라면 '\0' 위치가 된다(단일행이라면 문자열 길이 <API:_Str_행끝위치얻기_> 설명 참고).
          _Str_행끝위치얻기_(p문서, (*pr행시작위치), &(*pr행끝위치));

          _Str_추출_(p문서, (*pr행시작위치), (*pr행끝위치) - (*pr행시작위치), p내용);

      //}

      if     (p내용[0] == '{')
      {
        //[항목:시작] 으로 다음행부터가 항목이 된다.

        //초기화.
        _Str_할당_(항목수집, "");

      }
      else if(p내용[0] == '}')
      {
        //[마지막 "\r\n" 제거]
        //{
            //[주의!!!]{-----------------------------------------------------------------------
            //<GList> 의 [전체항목문자열] 은 마지막에 "\r\n" 이 붙어 있으면 안된다(이 경우 빈항목으로 추가됨).
            //따라서, 마지막에 추가된 "\r\n" 은 제거.
            //}-------------------------------------------------------------------------------

            //"\r\n" 에서 "\r" 위치에 '\0' 을 넣어 문자열을 마무리 하는 것으로 처리.
            항목수집[_Str_길이얻기_(항목수집) - 2] = '\0';

        //}

        //[항목:끝] 으로 수집한 항목을 <GList> 에 설정.
        _GList_전체항목_((*p생성항목)->생성자, 항목수집, d_쓰기);

        //[항목수집] for(;;) 중지.
        break;

      }
      else
      {
        //1개 행에 1개 [항목] 이 있으므로 이를 한개의 행단위 문자열로 계속 합성한다.
        _Str_더하기_(항목수집, p내용); _Str_더하기_(항목수집, "\r\n");

      }

    }

  }
  else if(_Str_일치확인_(p항목, "영점X", true) == true)
  {
    _GList_영점X_((*p생성항목)->생성자, 변환_10진수표기_Long값(p내용), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "영점Y", true) == true)
  {
    _GList_영점Y_((*p생성항목)->생성자, 변환_10진수표기_Long값(p내용), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "자동폭", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_자동폭_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_자동폭_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "자동높이", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_자동높이_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_자동높이_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "문자색", true) == true)
  {
    //"0x" 다음부터 변환 지정----------------------------------------v
    _GList_문자색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "문자형식", true) == true)
  {
    if     (_Str_일치확인_(p내용, "일반문자", true) == true)
    {
      _GList_문자형식_((*p생성항목)->생성자, d_일반문자, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "굵은문자", true) == true)
    {
      _GList_문자형식_((*p생성항목)->생성자, d_굵은문자, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "선택문자색", true) == true)
  {
    //"0x" 다음부터 변환 지정-------------------------------------------v
    _GList_선택문자색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "선택배경밝기", true) == true)
  {
    _GList_선택배경밝기_((*p생성항목)->생성자, 변환_10진수표기_Long값(p내용), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "선택배경색", true) == true)
  {
    //"0x" 다음부터 변환 지정-------------------------------------------v
    _GList_선택배경색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "임시선택문자색", true) == true)
  {
    //"0x" 다음부터 변환 지정----------------------------------------------v
    _GList_임시선택문자색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "임시선택배경밝기", true) == true)
  {
    _GList_임시선택배경밝기_((*p생성항목)->생성자, 변환_10진수표기_Long값(p내용), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "임시선택배경색", true) == true)
  {
    //"0x" 다음부터 변환 지정----------------------------------------------v
    _GList_임시선택배경색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "테두리", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_테두리_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_테두리_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "테두리색", true) == true)
  {
    //"0x" 다음부터 변환 지정------------------------------------------v
    _GList_테두리색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "배경색", true) == true)
  {
    //"0x" 다음부터 변환 지정----------------------------------------v
    _GList_배경색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "줄이동자보이기", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_줄이동자보이기_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_줄이동자보이기_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "줄이동자위치", true) == true)
  {
    _GList_줄이동자위치_((*p생성항목)->생성자, 변환_10진수표기_Long값(p내용), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "줄이동자막대색", true) == true)
  {
    //"0x" 다음부터 변환 지정----------------------------------------------v
    _GList_줄이동자막대색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "줄이동자막대배경색", true) == true)
  {
    //"0x" 다음부터 변환 지정-------------------------------------------------v
    _GList_줄이동자막대배경색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "줄이동자배경색", true) == true)
  {
    //"0x" 다음부터 변환 지정----------------------------------------------v
    _GList_줄이동자배경색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "줄이동자위화살표색", true) == true)
  {
    //"0x" 다음부터 변환 지정-------------------------------------------------v
    _GList_줄이동자위화살표색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "줄이동자아래화살표색", true) == true)
  {
    //"0x" 다음부터 변환 지정---------------------------------------------------v
    _GList_줄이동자아래화살표색_((*p생성항목)->생성자, _Conv_16진수표기_Long값_(&(p내용[2])), d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "풍선도움말", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_풍선도움말_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_풍선도움말_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "풍선도움말문자열", true) == true)
  {
    _GList_풍선도움말문자열_((*p생성항목)->생성자, p내용, d_쓰기);

  }
  else if(_Str_일치확인_(p항목, "유효", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      (*p생성항목)->유효 = true;

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      (*p생성항목)->유효 = false;

    }

    if(p동작구분 == d_미리보기) { _GList_유효_((*p생성항목)->생성자, (*p생성항목)->유효, d_쓰기); }

  }
  else if(_Str_일치확인_(p항목, "보이기", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      (*p생성항목)->보이기 = true;

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      (*p생성항목)->보이기 = false;

    }

    if(p동작구분 == d_미리보기) { _GList_보이기_((*p생성항목)->생성자, (*p생성항목)->보이기, d_쓰기); }

  }
  else if(_Str_일치확인_(p항목, "이벤트_Select", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_이벤트_Select_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_이벤트_Select_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "이벤트_MSelect", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_이벤트_MSelect_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_이벤트_MSelect_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "이벤트_MEnter", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_이벤트_MEnter_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_이벤트_MEnter_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "이벤트_MLeave", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_이벤트_MLeave_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_이벤트_MLeave_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "이벤트_SetFocus", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_이벤트_SetFocus_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_이벤트_SetFocus_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "이벤트_KillFocus", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_이벤트_KillFocus_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_이벤트_KillFocus_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "이벤트_KEnter", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_이벤트_KEnter_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_이벤트_KEnter_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "이벤트_KEsc", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_이벤트_KEsc_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_이벤트_KEsc_((*p생성항목)->생성자, false, d_쓰기);

    }

  }
  else if(_Str_일치확인_(p항목, "이벤트_Scroll", true) == true)
  {
    if     (_Str_일치확인_(p내용, "true", true) == true)
    {
      _GList_이벤트_Scroll_((*p생성항목)->생성자, true, d_쓰기);

    }
    else if(_Str_일치확인_(p내용, "false", true) == true)
    {
      _GList_이벤트_Scroll_((*p생성항목)->생성자, false, d_쓰기);

    }

  }

  return(true);

}

void GList_폼디자인_문서_맷돌C_번역(char  *p문서_c,
                               char  *p문서_h,
                               char  *p문서_l,
                               char  *p문서_d,
                               char  *p문서_nm,
                               char  *p문서_e,
                               char  *p폼문서,
                               t_u4   p폼문서_크기,
                               char  *p항목,
                               char  *p이름,
                               char  *p내용,
                               int   *pr행시작위치,
                               int   *pr행끝위치)
{
  //[2023.02.17.금][생성]

  //[VAR]
  //{
      bool  모체유무;

      char  항목수집[1024*100];

  //}

  if     (_Str_일치확인_(p항목, "이름", true) == true)
  {
    맷돌C_번역_이름(p문서_c, p문서_h, p문서_l, "_GList_생성_", p이름, p내용);

    //[2018.10.05.금][추가!!!]
    맷돌C_번역_소멸자_수집(p문서_d, p문서_l, "_GList_삭제_", p이름);

  }
  else if(_Str_일치확인_(p항목, "모체", true) == true)
  {
    모체유무 = 맷돌C_번역_모체(p문서_c, p내용);

    //[모체없는 그림부품 수집]
    //{
        //[2018.10.22.월][추가!!!]
        맷돌C_번역_모체없는_그림부품_수집(p문서_nm, p이름, "_GList_유효_", p내용);

    //}

  }
  else if(_Str_일치확인_(p항목, "X", true) == true)
  {
    맷돌C_번역_X(p문서_c, p내용, 모체유무);

  }
  else if(_Str_일치확인_(p항목, "Y", true) == true)
  {
    맷돌C_번역_Y(p문서_c, p내용, 모체유무);

  }
  else if(_Str_일치확인_(p항목, "폭", true) == true)
  {
    맷돌C_번역_폭(p문서_c, p내용);

  }
  else if(_Str_일치확인_(p항목, "높이", true) == true)
  {
    맷돌C_번역_높이(p문서_c, p내용);

  }
  else if(_Str_일치확인_(p항목, "전체항목", true) == true)
  {
    //[설명!!!]{----
    //
    //전체항목 = ...
    //{
    //항목0
    //항목1
    //...
    //}
    //
    //}------------

    //현재 "항목 = ..." 행이므로 다음 행부터 [항목:수집] 처리시작.
    _Str_다음행_시작위치얻기_(p폼문서, (*pr행시작위치), &(*pr행시작위치));

    for( ; (*pr행시작위치) < p폼문서_크기; _Str_다음행_시작위치얻기_(p폼문서, (*pr행시작위치), &(*pr행시작위치)))
    {
      //[행문자열 추출]
      //{
          //[주의!!!]{------------------------------------------------------
          //[항목] 은 [행단위:구분] 이므로 [항목] 자체에 [공백] 이 있을수 있다.
          //따라서, [공백] 을 기준으로 [단어] 를 추출하지 않고 [행전체] 를 추출하여 처리.
          //}--------------------------------------------------------------

          //단순 문자열이라면 '\0' 위치가 된다(단일행이라면 문자열 길이 <API:_Str_행끝위치얻기_> 설명 참고).
          _Str_행끝위치얻기_(p폼문서, (*pr행시작위치), &(*pr행끝위치));

          _Str_추출_(p폼문서, (*pr행시작위치), (*pr행끝위치) - (*pr행시작위치), p내용);

      //}

      if     (p내용[0] == '{')
      {
        //[항목:시작] 으로 다음행부터가 항목이 된다.

        //초기화.
        _Str_할당_(항목수집, "");

      }
      else if(p내용[0] == '}')
      {
        //[마지막 "\r\n" 제거]
        //{
            //[주의!!!]{-----------------------------------------------------------------------
            //<GList> 의 [전체항목문자열] 은 마지막에 "\r\n" 이 붙어 있으면 안된다(이 경우 빈항목으로 추가됨).
            //따라서, 마지막에 추가된 "\r\n" 은 제거.
            //
            //[주의!!!]************************************************************************
            //[번역] 시에는 "\\r\\n" 로 기술했으므로 (-4) 로 처리.
            //}-------------------------------------------------------------------------------

            //"\r\n" 에서 "\r" 위치에 '\0' 을 넣어 문자열을 마무리 하는 것으로 처리.
            항목수집[_Str_길이얻기_(항목수집) - 4] = '\0';

        //}

        //[항목:끝] 으로 수집한 항목을 <GList> 에 설정.
        맷돌C_번역_문자열(p문서_c, p문서_l, "_GList_전체항목_", p이름, 항목수집, true);

        //[함수묶음목록.gtxt]
        //{
            //[2018.10.05.금][추가!!!]
            맷돌C_번역_함수묶음_수집(p문서_l, "_GList_전체항목_");

        //}

        //[항목수집] for(;;) 중지.
        break;

      }
      else
      {
        //[!]{----------------------------------------------------------------
        //1개 행에 1개 [항목] 이 있으므로 이를 한개의 행단위 문자열로 계속 합성한다.
        //
        //[중요!!!]************************************************************
        //[번역] 시에는 [문자열] 그대로 "\r\n" 이 유지되도록 해야 하므로 "\\r\\n" 로 기술.
        //}-------------------------------------------------------------------

        _Str_더하기_(항목수집, p내용); _Str_더하기_(항목수집, "\\r\\n");

      }

    }

  }
  else if(_Str_일치확인_(p항목, "영점X", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_영점X_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "영점Y", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_영점Y_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "자동폭", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_자동폭_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "자동높이", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_자동높이_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "문자색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_문자색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "문자형식", true) == true)
  {
    맷돌C_번역_문자형식(p문서_c, p문서_l, "_GList_문자형식_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "선택문자색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_선택문자색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "선택배경밝기", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_선택배경밝기_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "선택배경색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_선택배경색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "임시선택문자색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_임시선택문자색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "임시선택배경밝기", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_임시선택배경밝기_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "임시선택배경색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_임시선택배경색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "테두리", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_테두리_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "테두리색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_테두리색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "배경색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_배경색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "줄이동자보이기", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_줄이동자보이기_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "줄이동자위치", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_줄이동자위치_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "줄이동자막대색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_줄이동자막대색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "줄이동자막대배경색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_줄이동자막대배경색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "줄이동자배경색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_줄이동자배경색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "줄이동자위화살표색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_줄이동자위화살표색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "줄이동자아래화살표색", true) == true)
  {
    맷돌C_번역_값(p문서_c, p문서_l, "_GList_줄이동자아래화살표색_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "풍선도움말", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_풍선도움말_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "풍선도움말문자열", true) == true)
  {
    맷돌C_번역_문자열(p문서_c, p문서_l, "_GList_풍선도움말문자열_", p이름, p내용, false);

  }
  else if(_Str_일치확인_(p항목, "유효", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_유효_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "보이기", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_보이기_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "이벤트_Select", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_이벤트_Select_", p이름, p내용);

    //[2018.10.17.수][추가!!!]
    맷돌C_번역_이벤트_수집(p문서_e, "_GList_이벤트_Select_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "이벤트_MSelect", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_이벤트_MSelect_", p이름, p내용);

    //[2018.10.17.수][추가!!!]
    맷돌C_번역_이벤트_수집(p문서_e, "_GList_이벤트_MSelect_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "이벤트_MEnter", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_이벤트_MEnter_", p이름, p내용);

    //[2018.10.17.수][추가!!!]
    맷돌C_번역_이벤트_수집(p문서_e, "_GList_이벤트_MEnter_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "이벤트_MLeave", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_이벤트_MLeave_", p이름, p내용);

    //[2018.10.17.수][추가!!!]
    맷돌C_번역_이벤트_수집(p문서_e, "_GList_이벤트_MLeave_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "이벤트_SetFocus", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_이벤트_SetFocus_", p이름, p내용);

    //[2018.10.17.수][추가!!!]
    맷돌C_번역_이벤트_수집(p문서_e, "_GList_이벤트_SetFocus_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "이벤트_KillFocus", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_이벤트_KillFocus_", p이름, p내용);

    //[2018.10.17.수][추가!!!]
    맷돌C_번역_이벤트_수집(p문서_e, "_GList_이벤트_KillFocus_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "이벤트_KEnter", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_이벤트_KEnter_", p이름, p내용);

    //[2018.10.17.수][추가!!!]
    맷돌C_번역_이벤트_수집(p문서_e, "_GList_이벤트_KEnter_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "이벤트_KEsc", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_이벤트_KEsc_", p이름, p내용);

    //[2018.10.17.수][추가!!!]
    맷돌C_번역_이벤트_수집(p문서_e, "_GList_이벤트_KEsc_", p이름, p내용);

  }
  else if(_Str_일치확인_(p항목, "이벤트_Scroll", true) == true)
  {
    맷돌C_번역_bool(p문서_c, p문서_l, "_GList_이벤트_Scroll_", p이름, p내용);

    //[2018.10.17.수][추가!!!]
    맷돌C_번역_이벤트_수집(p문서_e, "_GList_이벤트_Scroll_", p이름, p내용);

  }

}

