StringGrid1->OnDrawCell = sgTestResultDrawCell;
__closure 로 선어되어 있고 이 의미는 class 에 속하는 함수 포인터를 받는다는 의미입니다.
그래서 OnDrawCell 은 class의 멤버함수 포인터를 받습니다.
gTestResultDrawCell; 함수를 class 멤버 함수로 사용하면 됩니다.
----------------------------------------------------------------------------------------------------------------
문정 님이 쓰신 글 :
: 안녕하세요?
: Ambiguity 문제입니다.
: Gd32 를 사용하고 있으며, StringGrid->OnDrawCell 이벤트를 사용하려고 하는데 문제가 생겼습니다.
: StringGrid1->OnDrawCell 을 클릭하면, 헤더파일에 다음과 같은 자동으로 함수프로토타입이 생성됩니다.
: void __fastcall StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
: TRect &Rect, TGridDrawState State);
: 이 함수의 TRect 가 Gd32의 TRect와 같아서 ambiguity 문제가 발생한다고 에러가 나옵니다.
: 이 경우,
: void __fastcall StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
: System::Types::TRect &Rect, TGridDrawState State);
: 와 같이 처리하면 에러가 발생하지 않고, 컴파일 되면 잘 동작합니만,
: 다시 Designer에 들어가면 이 함수는 IDE에서 자동으로 만든것이라 저 부분을 고쳤기 때문에 에러가 발생합니다.
: 이를 처리할 수 있는 방법이 있을까요?
: IDE에서 처리하지 않고, 이벤트를 등록하여 사용하는 방법은 따로 있는지요?
: 따로 코드를 작성하여
: StringGrid1->OnDrawCell = sgTestResultDrawCell;
: 와 같이 처리하려고 합니다만 문법에 에러가 있다하고 합니다.
: 어떤 방법이 있는지 도움을 주시면 감사하겠습니다.
|