C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[66604] Re:Re:스트링 그리드에서 원하는 셀 삭제?
빌더(TWx) [builder] 1426 읽음    2012-03-13 11:58
Neit 님이 쓰신 글 :
: StringGrid 에서 원하는 cell 을 삭제 한다는게..
:
: 원하는 row 나 col 을 삭제 하고 싶으신거 같은데..
:
: 기본인터페이스에 없는거 같은데요?
:
: 그냥 5,6,7 셀 내용을 하나씩 앞으로 당기고, 마지막 셀 제거하시는 식으로 하시면 되지 않을까요?
:
:
: 김태우 님이 쓰신 글 :
: : StringGrid1->Cells[i][0] 이 셀을 ... 삭제하고 싶습니다.
: :
: : 1   2     3     4     5     6      7
: :
: : 이렇게 있다면..
: :
: : 중간에
: :
: : StringGrid1->Cells[3][0] 을 삭제하면..
: :
: : 1    2    3    5    6    7
: :
: : 이렇게 재배열이 되어하는데...
: :
: : 중간의 셀은 삭제하는 방법을 알고 싶습니다..






답변:

DeleteColumn() 이라는 멤버함수가 있지만, 이 함수는 TCustomGrid 클래스에서 protected 멤버함수로
정의되어 있기 때문에 TStringGrid 에선 DeleteColumn() 멤버함수를 사용할 수 없습니다.


TCustomControl->TCustomGrid ->TCustomDrawGrid->TDrawGrid->TStringGrid

Derived 클래스의 인스턴스로는 패런트에서 private 또는 protected로 정의되어 있는 멤범함수 또는 멤버데이타를
액세스 하는게 허용되지 않는데, 이런 경우... 해당 클래스의 코드 수정없이 사용할 수 있는 방법은... RTTI를 이용하는
방법과, 상속관계 트릭을 이용하는 방법... 이렇게 두가지가 가능 합니다.

RTTI를 이용하는 방법은 조금 복잡하니까 상속관계 트릭을 이용하는 방법만 알려 드릴게요.

//---------------------------------------------------------------------------
class THackedGrid : public TCustomGrid
{
public:
     virtual void __fastcall DeleteColumn(int ACol);
};
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     reinterpret_cast< THackedGrid* >(StringGrid1)->DeleteColumn(3);
}
//---------------------------------------------------------------------------


위와 같이 THackedGrid란 클래스를 Dummy로 선언해서 사용하는 트릭을 이용하면 됩니다.
...

+ -

관련 글 리스트
66599 스트링 그리드에서 원하는 셀 삭제? 김태우 876 2012/03/13
66602     Re:스트링 그리드에서 원하는 셀 삭제? Neit 1045 2012/03/13
66604         Re:Re:스트링 그리드에서 원하는 셀 삭제? 빌더(TWx) 1426 2012/03/13
66611             Re:Re:Re:스트링 그리드에서 원하는 셀 삭제? 김태우 1166 2012/03/14
66605             Re:Re:Re: 아 ~~ 이런 방법도 있었군여 ~ 인디 1043 2012/03/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.