TXFAEventBinding
유닛: HPDFXFAEventScript
선언
TXFAEventBinding= record
Name, ClassName: AnsiString;
ParentIndex: Integer;
Value, Presence, Access: AnsiString;
InstanceCount, InstanceGroup: Integer;
MinInstances, MaxInstances: Integer;
DefaultValue, DefaultPresence, DefaultAccess: AnsiString;
Repeated: Boolean;
Identity, ScriptSource, Locale, EventActivity: AnsiString;
Domain: TXFAEventBindingDomain;
DataIdentity: AnsiString;
DataBindingEnabled: Boolean;
Attributes, DefaultAttributes: TXFAEventAttributes;
PropertyPath: AnsiString;
PropertyOwnerIndex: Integer;
XML, DefaultXML: AnsiString;
DataBindingRef, DataContextIdentity: AnsiString;
DataBindingExplicit: Boolean;
end;
동작
가상 이벤트 호스트 노드 하나를 기술합니다. 실제 반복 subform occurrence마다 별도의 바인딩과 자식을 받습니다
ParentIndex는 부모 바인딩을 고르며 루트는 -1입니다. Value, Presence, Access는 현재 occurrence 상태를 기술합니다
InstanceGroup은 같은 인스턴스 매니저가 관리하는 바인딩을 식별하고, InstanceCount와 occurrence 한도는 매니저 경계를 기술합니다
템플릿 기본값이 새 인스턴스를 초기화합니다. Repeated는 occur 선언이 있는 노드를 표시합니다
TXFAWidgetRuntime은 엔진 실행 전에 템플릿과 현재 datasets 컨텍스트로 이 레코드를 만듭니다
Identity는 이 occurrence의 안정적인 호스트 식별자입니다. ScriptSource는 variables 안에 선언된 스크립트 객체의 JavaScript를 담습니다
Identity가 비어 있으면 고유한 바인딩 인덱스 식별자를 씁니다. 바인딩 순서가 바뀔 수 있다면 안정적인 명시 식별자를 넘기세요. 그래야 유지된 참조가 계속 같은 occurrence를 가리킵니다
Locale은 노드의 선택적 locale 속성을 UTF-8 텍스트로 담습니다. 실행 노드는 가장 가까운 비어 있지 않은 조상 값을 상속하고, 체인 전체가 비면 사용자 로캘을 고릅니다
EventActivity는 실행 중인 바인딩에 xfa.event.name을 공급합니다. TXFAWidgetRuntime은 이벤트 활동과 calculate·validate 컨텍스트 이름을 설정하고, 비어 있는 하위 수준 바인딩은 event를 씁니다
Domain은 폼 노드와 네이티브 datasets, dataGroup, dataValue 노드를 구분합니다. 기본값 xebdForm은 기존 호출자를 그대로 유지합니다
DataIdentity는 다른 바인딩의 안정적인 식별자를 참조해 폼 field나 subform을 데이터 노드에 연결합니다. 그러면 field 읽기와 데이터 값 읽기가 하나의 라이브 값을 공유합니다
DataBindingEnabled는 반복 폼 프로토타입에 기존 데이터 바인딩이 없을 때 암시적 데이터 노드 생성을 허용합니다. bind match=none인 런타임 field는 False로 두고 합성 데이터 노드를 노출하지 않습니다
데이터 도메인의 InstanceGroup은 네이티브 가상 대상 발행을 위해 같은 이름의 형제 occurrence를 기록합니다. 데이터 바인딩은 폼 인스턴스 매니저를 노출하지 않습니다
Attributes는 현재 유효한 프로퍼티 속성을 담고, DefaultAttributes는 새로 클론된 프로퍼티 노드에 쓰이는 템플릿 속성을 담습니다
프로퍼티 도메인의 Name은 실제 name 속성을 유지하며 보통 비어 있습니다. ClassName은 SOM 컴포넌트를 공급하고, 부모 인덱스는 프로퍼티 계층과 로컬 형제 occurrence를 보존합니다
PropertyPath와 PropertyOwnerIndex는 템플릿에 없는 폼 전용 프로퍼티를 식별합니다. 경로는 클래스 occurrence 구성 요소를 쓰고, 오너 인덱스는 같은 바인딩 배열에서 네이티브 폼 occurrence를 고릅니다
런타임 폼 전용 바인딩은 현재 네이티브 속성을 노출하고 DefaultAttributes는 스키마 기본값을 씁니다. 그래서 반복 프로토타입을 클론하면 다른 인스턴스의 재정의를 상속하는 대신 기본 프로퍼티 값이 만들어집니다
기존 선언 프로퍼티 바인딩에서는 PropertyPath를 비워 두세요. 이때 대응하는 오너 인덱스는 쓰이지 않습니다
exData에서 XML은 현재 직렬화된 UTF-8 요소이고, DefaultXML은 새 반복 인스턴스에 쓸 템플릿 콘텐츠를 공급합니다
XML이 빈 exData 바인딩은 빈 네이티브 exData 요소에서 시작합니다. 폼 전용 DefaultXML은 비어 있는 채로 유지되어, 새 occurrence가 다른 인스턴스가 임포트한 외부 콘텐츠를 상속하지 않습니다
XML 입력 문자열은 이벤트 컨텍스트 바이트 예산에 포함됩니다. saveXML과 loadXML은 검증된 네이티브 응답 리플레이를 쓰고 xeakLoadXML로 발행합니다
데이터 도메인 XML은 런타임의 유한한 얕은 네이티브 XML 메타데이터, 즉 요소 이름, 네임스페이스, 값, 속성, 네임스페이스 선언, 순서 있는 비텍스트 콘텐츠, 자식 위치를 담습니다. 데이터 노드에는 DefaultXML이 쓰이지 않습니다
메타데이터는 노드 하나와 그 직접 텍스트, 주석, 처리 명령 자식만 담아 데이터 바인딩마다 자손 서브트리가 복제되는 일을 피합니다
DataBindingRef는 공백을 잘라낸 dataRef 셀렉터입니다. DataBindingExplicit는 명시적인 빈 dataRef와 암시적 field 이름 바인딩을 구분합니다
DataContextIdentity는 field의 실제 네이티브 데이터 scope를 식별하고, DataIdentity가 선택된 리프를 식별하는 것과는 별개입니다
이 필드들 덕분에 XML 임포트는 갱신된 Data DOM 기준으로 바인딩을 즉시 재평가합니다. 새로 생긴 대상과 자손, 와일드카드, 클래스, 인덱스 선택도 포함입니다
일반 애플리케이션은 TXFAWidgetRuntime으로 네이티브 바인딩을 만듭니다. 하위 수준 호출자는 스칼라 전용 데이터 노드의 XML 메타데이터를 생략하고 새 바인딩 필드를 기본값으로 둘 수 있습니다