Graphisoft®

API Development KitVersion: 18

APIAny_ChangeContentID

텍스트 또는 텍스트 라벨 요소의 내용을 변경합니다.

    GSErrCode ACAPI_Goodies (
        APIAny_ChangeContentID,
        const API_ContentPars*     contentPars
    );

 

파라미터

contentPars
[in/out] 요소와 내용들의 파라미터들입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
입력 파라미터들이 올바르게 주어지지 않았습니다.
APIERR_REFUSEDPAR
전달된 요소가 텍스트 또는 텍스트 라벨이 아닙니다.
APIERR_PAROVERLAP
범위는 2개 이상의 단락들과 겹칩니다.
APIERR_PAROVERFLOW
시작 위치(from)가 내용 길이를 초과합니다.
APIERR_MEMFULL
메모리가 부족합니다.

다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.

 

설명

이 함수는 멀티 스타일 텍스트 또는 텍스트 라벨의 내용을 변경하는 데 사용합니다. run들의 스타일들은 손실되지 않을 것입니다. 새로운 내용 조각은 원래 내용의 from 위치에 있는 문자의 스타일(font, size, faceBits...)을 집어올 것입니다. API_ContentParscontent 멤버는 라인 끝(line end) 문자들을 포함하지 말아야 하며 범위는 단락들과 겹치지 않을 수 있습니다. 내용을 변경하는 다른 방법은 ACAPI_Element_Change 함수를 사용하는 것입니다. 이것을 이용하면 API_ElementMemo structure에 textContentparagraphs 핸들들을 전달하여 텍스트의 스타일도 세트할 수 있습니다. 할당한 메모리 블록들을 해제하는 것을 잊지 마십시오.

 

예제

텍스트 요소의 내용 변경하기:

원래 요소:

 

API_ContentPars contPars;
Int32           numOfChanges = 2;
GSErrCode       err = NoError;

err = ACAPI_OpenUndoableSession ("Change the content of a text element");
if (err != NoError)
    return err;

contPars.head.index  = index;
contPars.head.typeID = API_TextID;
contPars.from        = reinterpret_cast<Int32 *> (BMAllocatePtr (numOfChanges * sizeof (Int32), ALLOCATE_CLEAR, 0));
contPars.range       = reinterpret_cast<Int32 *> (BMAllocatePtr (numOfChanges * sizeof (Int32), ALLOCATE_CLEAR, 0));
contPars.content     = BMAllocatePtr (256 * sizeof (char), ALLOCATE_CLEAR, 0);
contPars.separator   = reinterpret_cast<Int32 *> (BMAllocatePtr (numOfChanges * sizeof (Int32), ALLOCATE_CLEAR, 0));

if (contPars.from == NULL || contPars.range == NULL || contPars.content == NULL || contPars.separator == NULL)
        return APIERR_MEMFULL;

contPars.from[0]  = 5;  // 바이트 위치
contPars.range[0] = 16; // 바이트 번호
contPars.from[1]  = 28;
contPars.range[1] = 13;
CHCopyC ("raw was modified too", contPars.content);
contPars.separator[0] = 16;     // 바이트 오프셋
contPars.separator[1] = 32;

err = ACAPI_Goodies (APIAny_ChangeContentID, &contPars, NULL);

BMKillPtr (reinterpret_cast<GSPtr *> (&contPars.from));
BMKillPtr (reinterpret_cast<GSPtr *> (&contPars.range));
BMKillPtr (reinterpret_cast<GSPtr *> (&contPars.content));
BMKillPtr (reinterpret_cast<GSPtr *> (&contPars.separator));

ACAPI_CloseUndoableSession ();

return err;
결과 요소:

 

 

요구사항

버전: API 6.1 또는 이후
헤더: APIdefs_Goodies.h

 

참고사항

ACAPI_Goodies
API 함수