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들의 병합도 같이 알아보고자 기능에 대해 여쭤봤습니다.
쥐어주신 소스들을 그대로 적용했더니 검은 세로줄이 흰줄로만 바뀌고 줄자체가 없어지지는 않네요 ㅠ_ㅠ
프로그래밍에 대한 이해도가 낮아 답변해주신것들이 바로 이해가 안되지만
감사히 공부하겠습니다. 이해 안되는 부분은 또 여쭙겠습니다. 감사합니다.