안녕하세요
표의 셀에 특정 field를 삽입하여 그 위치로 캐럿을 옮기듯이
특정 텍스트 뒤에 캐럿을 옮기고 싶은데 어떻게 해야하나요?
아니면 특정 좌표를 설정하는 방법이 있나요?
감사합니다!
이 범주에서는 한글 오토메이션에 대한 다른 사용자의 기술 지원을 제공받을 수 있습니다.
안녕하세요
표의 셀에 특정 field를 삽입하여 그 위치로 캐럿을 옮기듯이
특정 텍스트 뒤에 캐럿을 옮기고 싶은데 어떻게 해야하나요?
아니면 특정 좌표를 설정하는 방법이 있나요?
감사합니다!
이 범주에서는 한글 오토메이션에 대한 다른 사용자의 기술 지원을 제공받을 수 있습니다.
문서 최상단에서부터 특정 텍스트까지의 내용이 고정되어 있는 경우라면 SetPos 메서드를 사용하시면 됩니다. 특정 위치에서 GetPos()를 실행했을 때 리턴되는 List, Para, Pos 값을 그대로 SetPos의 인수로 넣으면 해당 위치로 캐럿이 이동합니다.
내용이 고정되지 않더라도, 찾아가고자 하는 위치와 인접한 문자열이 문서 안에서 유일하거나, 임의의 패턴으로 규정할 수 있는 경우에는 "찾기"기능을 사용하시는 것도 무난한 방법입니다.
해당 위치에, 내용이 없는 "누름틀"을 삽입해 두고, MoveToField 메서드를 사용하시는 방법도 있습니다.
개인적으로는 3번을 가장 추천합니다.
ilco님 의견에서 3번의 사용 방법을 보충 설명 드리면,
위의 그림처럼 표의 셀이나 누름틀에 필드명일 입력해 놓으면
MoveToField API를 통해 문서의 특정 위치를 찾아갈 수 있습니다.
MoveToField(Method)
Description
지정한 필드로 캐럿을 이동한다.
Declaration
BOOL MoveToField(BSTR field, VARIANT text, VARIANT start, VARIANT select)
Parameters
field : 필드 이름. GetFieldText/PutFieldText과 같은 형식으로 이름 뒤에 ‘{{#}}’로 번호를 지정할 수 있다.
text : 필드가 누름틀일 경우 누름틀 내부의 텍스트로 이동할지(True) 누름틀 코드로 이동할지(False)를 지정한다. 누름틀이 아닌 필드일 경 우 무시된다. 생략하면 True가 지정된다.
start : 필드의 처음(True)으로 이동할지 끝(False)으로 이동할지 지정 한다. select를 True로 지정하면 무시된다. 생략하면 True가 지정된다.
select : 필드 내용을 블록으로 선택할지(True), 캐럿만 이동할지 (False) 지정한다. 생략하면 False가 지정된다.
Remark
누름틀은 한글97 메뉴 중 입력 메뉴에 문서마당 정보를 선택하면 누름 틀을 만드실 수 있습니다.
ex) MoveToField(“TEST_01”, 0, 0, 0);