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
[72183] Re:TStringGrid 에서의 Properties->Options
StarWagon [starwagon] 4497 읽음    2014-12-25 00:44
StringGrid1->FixedCols 은 int 형 프로퍼티며, Fixed Column 개수 를 의미하고,
[] 연산자로 접근도 불가능하고요. StringGrid1->Options 는 TGridOptions 형 프로퍼티네요.
따라서 예를 든것과 같이 쓸수가 없습니다.

의도 하신 바가 뭔지 좀 헷갈리는데,
"첫번째 고정열의 세로줄은 안보이고, 두번째 고정열의 세로줄은 보이게 하고싶다"
라는 것으로 추측이 되는데 맞나요?

아니면 거기에다가 추가로
"고정열의 개수만큼 TGridOptions형 FixedColOptions 라는 프로퍼티를 가지며, [] 연산자로 접근해서 관리 하고 싶다"
라는 건가요?

후자를 포함해야 한다면 TStringGrid 를 재정의 해야 될것 같습니다.

아니면 Grid 별로 변수를 하나 따로 관리하는 방법도 있습니다.
아래는 변수를  배열로 선언했지만, Grid 의 Column 크기가 가변 적이라면,
vector 로 선언해서 ColCount를 변경시 같이 길이를 변경 해줘야 합니다.

bool FixedColVertLine[5]={0,1,0,1,0};
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect,
		  TGridDrawState State)
{
	if (State.Contains(gdFixed) && FixedColVertLine[ACol]==false) {
		//1번 방법
		TColor tmp = ((TStringGrid*)Sender)->Canvas->Pen->Color;
		((TStringGrid*)Sender)->Canvas->Pen->Color=((TStringGrid*)Sender)->Color;
		((TStringGrid*)Sender)->Canvas->MoveTo(Rect.right,Rect.top);
		((TStringGrid*)Sender)->Canvas->LineTo(Rect.right,Rect.bottom);
		((TStringGrid*)Sender)->Canvas->Pen->Color=tmp;

		//2번 방법
		TRect r1=Rect, r2=Rect;
		r2.Left=r2.right-1;
		r1.Left=r1.right;
		r1.Right++;
		((TStringGrid*)Sender)->Canvas->CopyRect(r1,((TStringGrid*)Sender)->Canvas,r2);
	}
}


1번은 그냥 선 하나를 그리는 것이라 Gradient 가 있는 Fixed 셀에 적용시 이쁘지 않다는 단점이 있고요.
2번은 선 위치의 바로 왼쪽 1픽셀을 복사해서 붙이는 것이라 말끔하게 보이는데, 복사하는 1픽셀에 글씨가 써져 있다면 글씨 까지 복사되는 단점이 있습니다.

사실 AdvStringGrid 의 MergeCell 기능도 이런것과 다를바 없다고 생각 되네요. 그냥 합쳐진것 처럼 보일뿐,
실제로 Cells에 접근해보면 합쳐진 셀은 모두 동일한 값을 가지고 있습니다.
Merge에 대한 정보는 Cellproperties 라는 프로퍼티로 따로 관리 하고요.

어쨋든... 도움이 되었으면 하네요.




물음 님이 쓰신 글 :
: TStringGrid 에서의 Properties->Options값을
:
: 프로그램 상에서 FixedCols 2줄을
:
: 따로 옵션 관리하고싶습니다.

: StringGrid1->FixedCols[0] = StringGrid1->Options >> goFixedVertLine;
: StringGrid1->FixedCols[1] = StringGrid1->Options << goFixedVertLine;
:
: 이런식으로 관리하고싶은데 잘 안되네요..
:
: 꼭 좀 필요한 기능이라 혹시 아시는분 공유해주세요. 감사합니다!

+ -

관련 글 리스트
72182 TStringGrid 에서의 Properties->Options 물음 3537 2014/12/24
72183     Re:TStringGrid 에서의 Properties->Options StarWagon 4497 2014/12/25
72184         산타할아버지의 크리스마스 선물이네요 ^^ 물음 3853 2014/12/25
72189             Re:산타할아버지의 크리스마스 선물이네요 ^^ StarWagon 3723 2014/12/26
72191                 Re:Re:산타할아버지의 크리스마스 선물이네요 ^^ 물음 3674 2014/12/26
72196                     Re:Re:Re:산타할아버지의 크리스마스 선물이네요 ^^ StarWagon 3697 2014/12/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.