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
[72189] Re:산타할아버지의 크리스마스 선물이네요 ^^
StarWagon [starwagon] 3723 읽음    2014-12-26 11:17
StringGrid의 DrawingStyle 속성을 gdsGradient 로 바꾸고 해보세요.

기본은 gdsThemed 인데, 이런 저런 테스트 하다가 이걸 바꾼걸 깜박했네요.

제가 이전에 설명 드린 방법은 고정열 구분선 바로 왼쪽 픽셀을 복사하는 방법인데

gdsThemed 는 그 바로 왼쪽 픽셀이 셀의 색이 아닌 흰색으로 되어 있어서 흰줄이 남아 있던 겁니다.




물음 님이 쓰신 글 :
: StarWagon 님이 쓰신 글 :
: : 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;
: : :
: : : 이런식으로 관리하고싶은데 잘 안되네요..
: : :
: : : 꼭 좀 필요한 기능이라 혹시 아시는분 공유해주세요. 감사합니다!
:
: 늦은시간에 시간내주셔서 도움을 주심에 감사합니다^^!!!
:
: 사실 FixedCol줄을 2개로 두고 첫번째 줄은 goFixedVertLine = false와 같이 병합되게 
:
: 두번째줄은 goFixedVertLine = true와 같이 세로줄이있는 형식으로
:
: FixedCell들을 관리함과 동시에
:
: no Fixed Cell들의 병합도 같이 알아보고자 기능에 대해 여쭤봤습니다.
:
: 쥐어주신 소스들을 그대로 적용했더니 검은 세로줄이 흰줄로만 바뀌고 줄자체가 없어지지는 않네요 ㅠ_ㅠ
:
: 프로그래밍에 대한 이해도가 낮아 답변해주신것들이 바로 이해가 안되지만
:
: 감사히 공부하겠습니다. 이해 안되는 부분은 또 여쭙겠습니다. 감사합니다.

+ -

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