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

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

2개의 좋아요

안녕하세요.

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

// 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);
	}
}

감사합니다.

3개의 좋아요

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

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

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

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

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

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

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

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

2개의 좋아요