# 체크박스 스크립트 코드 문의

**URL:** <https://forum.developer.hancom.com/t/topic/1738>\
**Category:** 한글 오토메이션\
**Created:** [8월 14, 2024, 12:18오전 UTC](https://forum.developer.hancom.com/t/topic/1738 "2024-08-14T00:18:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![user298](https://avatars.discourse-cdn.com/v4/letter/u/54ee81/32.png) [@user298](https://forum.developer.hancom.com/u/user298)\
**Post date:** [8월 14, 2024, 12:18오전 UTC](https://forum.developer.hancom.com/t/topic/1738/1 "2024-08-14T00:18:31Z")

</div>

안녕하세요  
제가 한글 양식개체 중 선택상자가 체크되었을 경우에는 해당 선택상자의 글자를 진하게, 선택이 안되었을 경우에는 진하게를 해제하도록 하고 싶어서 스크립트 매크로 코드를 작성하고 있는데 어떻게 해야할지 잘모르겠네요.  
일주일정도 찾아봤는데도 저 혼자 힘으로는 역부족일것같아서 질문드리게 되었습니다.  
혹시 어떻게 스크립트 코드를 작성하면 좋을지 코드도 같이 부탁드리겠습니다.

---

<div class="post-metadata">

**Author:** ![jhbang](https://avatars.discourse-cdn.com/v4/letter/j/ee59a6/32.png) [@jhbang](https://forum.developer.hancom.com/u/jhbang)\
**Post date:** [8월 14, 2024, 8:45오전 UTC](https://forum.developer.hancom.com/t/topic/1738/2 "2024-08-14T08:45:13Z")

</div>

안녕하세요.

체크 박스의 다른 속성 변경은 가능하나 글자 모양 변경은 안될 것 같습니다.  
체크 상태에 따라 컬러값 변경을 하는 예제 코드를 남겨드리니 참고 부탁드립니다.

```auto
// CheckBox1 이름의 양식 개체의 체크 상태가 변경될 때의 동작 제어 
function OnCheckBox1_Change()
{
	if (CheckBox1.Value == true) {
		CheckBox1.ForeColor = RGBColor(255, 0, 0);
		CheckBox1.BackColor = RGBColor(0, 0, 0);
	} else {
		CheckBox1.ForeColor = RGBColor(0, 0, 0);
		CheckBox1.BackColor = RGBColor(255, 255, 255);
	}
}

```

 ![20240814_173952](https://us1.discourse-cdn.com/flex016/uploads/hancom_dev_forum/original/2X/c/cea0633076729b82fc727c317a36f0cfbb1dae00.png)

- 다른 속성값은 HwpAutomation.pdf 파일에서  
IXHwpFormCheckButton 개체가 제공하는 Property를 참고하시면 될 것 같습니다.

- 유사 문의 : [문서매크로 실행시 스크립트 창을 꼭 열어야 하나요?](https://forum.developer.hancom.com/t/topic/1389)

감사합니다.

---

<div class="post-metadata">

**Author:** ![user16](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.developer.hancom.com/user16/32/785_2.png) [@user16](https://forum.developer.hancom.com/u/user16)\
**Post date:** [8월 16, 2024, 7:43오전 UTC](https://forum.developer.hancom.com/t/topic/1738/3 "2024-08-16T07:43:50Z")

</div>

아래와 같은 꼼수로 구현 가능할 듯 합니다^^;

\<1. FollowContext 속성을 활용하는 방법\>  
① 모든 체크박스의 FollowContext 속성을 True로 바꾼다. (삽입위치의 서체를 따라가는 옵션)  
② 체크하는 시점에 해당 체크박스 영역의 CharShape.Bold를 1로 바꾼다.  
③ 체크해제하는 시점에 해당 체크박스 영역의 CharShape.Bold를 0으로 바꾼다.

\<2. 별도의 텍스트를 사용하는 방법\>  
① 체크박스의 캡션을 비운다.  
② 체크박스 우측에 일반텍스트를 삽입한다. (마치 캡션인 것처럼…)  
③ 체크박스가 체크되면 해당 텍스트 CharShape.Bold = 1로,  
체크박스가 해제되면 해당 텍스트 CharShape.Bold = 0으로 바꾼다.

\<3. CharShapeID를 활용하는 방법\>  
① 별도의 과정을 통해 CharShapeID를 알아내는 과정이 필요함.  
(진하지 않은 기본폰트는 CharShapeID가 8, 진한 폰트는 9라고 가정하면)

② 문서매크로에 아래 내용을 추가한다.

```javascript
function OnCheckBox1_Change()
{
if (CheckBox1.CharShapeID == 9) 
CheckBox1.CharShapeID = 8;
else CheckBox1.CharShapeID = 9;
}

function OnCheckBox2_Change()
{
if (CheckBox2.CharShapeID == 9) 
CheckBox2.CharShapeID = 8;
else CheckBox2.CharShapeID = 9;
}

function OnCheckBox3_Change()
{
if (CheckBox3.CharShapeID == 9) 
CheckBox3.CharShapeID = 8;
else CheckBox3.CharShapeID = 9;
}

function OnCheckBox4_Change()
{
if (CheckBox4.CharShapeID == 9) 
CheckBox4.CharShapeID = 8;
else CheckBox4.CharShapeID = 9;
}

```

아래는 3번 방식으로 적용했을 때의 결과  
 ![녹화_2024_08_16_17_28_01_879](https://us1.discourse-cdn.com/flex016/uploads/hancom_dev_forum/original/2X/8/801d83a8569a640781c41d9716449fc54e2ff7ce.gif)

> 주의하실 점은, 한/글 2020 미만의 버전에서는 움짤과 같이  
> 코드창을 한 번 열었다 닫아야만 문서매크로가 작동하는 **치명적인** 버그가 있습니다…  
> (아직 못 고쳐주셨네요ㅜㅜㅜ)

하여튼 이런 방법을 사용하시면 되겠습니다.  
행복한 하루 되세요^^
