2013-02-20 5 views
0

몇 년 전 (사실 거의 5 년 전) 여기에 게시 된 예제가 ActiveX 보고서 뷰어를 사용하여 Delphi 2007에서 Crystal Reports를 표시하는 방법을 보여주었습니다. 나는 Delphi XE3에서도 작동한다는 것을 발견했다. 다음과 같다 대한 코드 조각 나는 질문이있다 :Delphi XE3 및 Crystal Reports

for i := 1 to oRpt.Database.Tables.Count do begin 
oRpt.Database.Tables[i].ConnectionProperties.Item['User ID'] := 'username'; 
oRpt.Database.Tables[i].ConnectionProperties.Item['Password'] := 'password'; 
end; 

내 질문 : oRpt이 변형이며, 입력하지 때문에, 어떻게 보고서 뷰어의 속성을 찾아 표시 또는 PROC 내부에 자신의 값을 설정하는 보고서를 인쇄합니까 ??

답변

3

설명서를 읽으십시오. :-)

ActiveX 서버에 연결할 수있는 방법은 컴파일시 (이른 바인딩) 또는 런타임 (후기 바인딩)입니다. 좀 더 자세히 설명하는 MSDN의 기사가 있습니다.

초기 바인딩은 구성 요소 팔레트의 TWordApplication 또는 TExcelApplication과 같은 형식화 된 변수를 사용할 때 사용되는 것입니다. 형식 라이브러리는 지원되는 형식과 인터페이스를 결정하는 데 사용되며 메서드는 v 테이블의 DispInterface을 사용하여 조회 할 수 있습니다. 컴파일러는 함수가 존재하는지 확인하고 오타 등을 확인하고 코드 완료 및 코드 인사이트에 사용할 수있는 것을 파악할 수 있습니다.

변형을 통해 ActiveX 서버에 액세스하면 (코드 조각이 보여주는 것처럼) late binding입니다. 코드가 실제로 실행될 때까지 컴파일러는 아무 것도 알지 못합니다.이 시점에서 메서드는 IDispatch 인터페이스를 통해 호출하려고 시도되고 그 시점에서 성공하거나 실패합니다. 컴파일러는 변형이 포함 할 수있는 것에 대해 아무것도 모르기 때문에 디자인이나 컴파일 타임에 사용할 수있는 메서드와 유형을 알 수있는 방법이 없습니다.

코드가 런타임에 바인딩을 사용하기 때문에 문서를 읽는 것 외에는 사용할 수있는 속성을 알 수있는 방법이 없습니다. 물론 실제로는 옵션이 아니기 때문에 시행 착오입니다. 다른 대안은 ActiveX 서버에 사용할 수있는 형식 라이브러리가있는 경우 초기 바인딩을 사용하는 것입니다.이 시점에서 변형 사용을 중단하고 컴파일러에서 사용할 수있는 인터페이스를 전환 할 수 있습니다.

+0

고마워, 켄. 내가 그것을 찾을 수 있다면 RTFM 것입니다! – bcorll