감사합니다. ^^
빌더(TWx) 님이 쓰신 글 :
: 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로 선언해서 사용하는 트릭을 이용하면 됩니다.
: ...