Remobject와 TMS (AdvGrid)의 충돌문제 해결

from Delphi 2007/11/21 10:38 / hits (396)

Remobject 컴퍼넌트와 TMS 컴퍼넌트를 함께 사용할때
아래와 같이 advgrid에서의 충돌현상이 일어난다.

사용자 삽입 이미지

OleInitialize를 중복해서 호출하기 때문에 발생하는 문제가 아닌가 추측되며, 정확한 문제점이 무엇인지는 잘 모르겠다. -_-; 다만 advgrid.pas 파일에서 Initialization 구문을 주석처리하여 문제를 해결할 수 있었다.

advgrid.pas 파일을 수정하여 해결한다.
initialization
{$IFNDEF TMSDOTNET}
{$IFNDEF TMSDISABLEOLE}
//  Initialize;   <- 주석처리
  Initialize;   <- 주석처리 해제
{$ENDIF}
{$ENDIF}

[AdvGrid.pas의 Initialize 함수 내용]
procedure Initialize;
var
  Result : HResult;
begin
  Result := OleInitialize(Nil);
  Assert(Result in [S_OK, S_False], Format ('OleInitialize failed ($%x)', [Result]));
  // Assert(Result in [S_OK, S_False], Format ('OleInitialize failed ($%x)', [Result])); <- 주석처리
end;


[2007년 12월 10일 추가 내용]
TMS Grid에서 굳이 Remobject등을 사용하지 않더라도, OleInitialize로 인해 에러가 발생한다는 등의 내용이 Google 검색 결과 나왔고, 해당 부분을 주석처리 하게 될 경우, TMS 단독으로 사용될 때에는 역시 문제가 발생할 소지가 있기 때문에, Initialize 부분을 주석처리 하던것을 주석처리 해제하고, Initialize 함수에서 Oleinitialize가 실패했을때 발생하는 Assert 구문을 주석처리한다.

2007/11/21 10:38 2007/11/21 10:38
포스팅이 유익 하셨다면 RSS 구독을 신청하세요

Trackback Address >> http://dolba.net/tt/k2club/trackback/1629