|
음...
아마 불가능 할겁니다.
예전에 그리드를 만들어 봤는데....
그렇게 구현하니 코딩량이 말이 아니더군요...
속도도 문제가 있는것 같고...
어떻게 구현했다하더라도 하위 호환성에 문제가 많더군요...
그래서 그때 내린 결론이 아마 상용 콘트롤도 이런기능은 절대로 구현하지 않을거라는 예측을 했는데...
그때 본 대부분의 콘트롤이 제대로 지원을 안하더군요....
직접 그리드 콤포넌트를 만드는 방법외는 없을겁니다.
아니면 돈 억수로 많이 주고 프로그램을 새로 사시던가...
크...
그럼
빌더링 님이 쓰신 글 :
: 에구 아래 이문제에 대해서 질문올렸다가 스스로 답을 찾아낸줄알고 적용했더니...
: 완전 에러였네요...
:
: 그래서 다시한번 도움을 청해봅니다.. ㅜㅜ 이런 비슷한 부분의 질문이나 예제가 검색이 힘드네요 에구
:
: 제가 폼위에 AdvStringGrid가 두개가 위아래로 있습니다.
: 둘다 똑같은 구조이죠 같은 컬럼 같은 테이블이죠...
:
: 그래서 위는 A 아래는 B라고 잡았습니다.
:
: 여기서 제가 하고싶은것은.... A에서 컨트롤 하는 것이 그대로 B도 적용되는것입니다.
: 그리고 B에서 컨트롤 하는것은 A에서 그대로 움직이구요...말인 즉슨..
:
: A에서 마우스 휠을 죽 돌리면 FIX된 ROW는 그대로 있고 나머지 RowCount만큼 위아래로 움직이는데요.....
: 이 행동이 B도 같이 되는 것입니다. 그래서 A에서 특정 Col의 특정 Row에 셀선택이 되었을때...
: B도 동일한 포커스가 되는것입니다. 물론 이건 제가 해결을 했는데...
:
: 문제점 1 : 마우스휠로 위아래 스크롤할떄는 같이 움직이지 않는다..
: 문제점 2 : 방향키로 그리드에서 움직였을때 선택된 Row는 같이 보여지나 스크롤이 같이 되지 않는다...
:
: 일단 제가 처리한 부분은
:
: __fastcall TForm1::TForm1(TComponent* Owner)
: : TForm(Owner)
: {
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::AdvStringGrid7SelectCell(TObject *Sender, int ACol, int ARow,
: bool &CanSelect)
: {
: for (int i = 0; i<35; i++)
: {
: for (int j = 1; j < 20; j++)
: {
: AdvStringGrid7->Colors[j][i+2] = clGrayText;
: AdvStringGrid8->Colors[j][i+2] = clGrayText;
: }
: }
:
: for (int i = 0; i<35; i++)
: {
: AdvStringGrid7->Colors[ACol][i+2] = clAppWorkSpace;
: AdvStringGrid8->Colors[ACol][i+2] = clAppWorkSpace;
: }
: for (int i = 1; i<20; i++)
: {
: AdvStringGrid7->Colors[i][ARow] = clAppWorkSpace;
: AdvStringGrid8->Colors[i][ARow] = clAppWorkSpace;
: }
: AdvStringGrid7->Colors[ACol][ARow] = clWhite;
: AdvStringGrid8->Colors[ACol][ARow] = clWhite;
:
: for(int i=0; i<32; i++)
: {
: for(int j=0; j<19; j++)
: {
: if (AdvStringGrid7->Cells[19][i+2] == "1")
: for(int j=0; j<19; j++) AdvStringGrid7->Colors[j+1][i+2] = clYellow;
:
: if (AdvStringGrid8->Cells[19][i+2] == "1")
: for(int j=0; j<19; j++) AdvStringGrid8->Colors[j+1][i+2] = clYellow;
: }
: }
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::AdvStringGrid8SelectCell(TObject *Sender, int ACol, int ARow,
: bool &CanSelect)
: {
: for (int i = 0; i<35; i++)
: {
: for (int j = 1; j < 20; j++)
: {
: AdvStringGrid7->Colors[j][i+2] = clGrayText;
: AdvStringGrid8->Colors[j][i+2] = clGrayText;
: }
: }
:
: for (int i = 0; i<35; i++)
: {
: AdvStringGrid7->Colors[ACol][i+2] = clAppWorkSpace;
: AdvStringGrid8->Colors[ACol][i+2] = clAppWorkSpace;
: }
: for (int i = 1; i<20; i++)
: {
: AdvStringGrid7->Colors[i][ARow] = clAppWorkSpace;
: AdvStringGrid8->Colors[i][ARow] = clAppWorkSpace;
: }
: AdvStringGrid7->Colors[ACol][ARow] = clWhite;
: AdvStringGrid8->Colors[ACol][ARow] = clWhite;
:
: for(int i=0; i<32; i++)
: {
: for(int j=0; j<19; j++)
: {
: if (AdvStringGrid7->Cells[19][i+2] == "1")
: for(int j=0; j<19; j++) AdvStringGrid7->Colors[j+1][i+2] = clYellow;
:
: if (AdvStringGrid8->Cells[19][i+2] == "1")
: for(int j=0; j<19; j++) AdvStringGrid8->Colors[j+1][i+2] = clYellow;
: }
: }
: }
:
: 이렇게 하여 서로 같은 라인과 선택된 셀은 처리를 햇는데 같이 스크롤 하는게 진짜 난감하네요 ㅜㅜ
: 마우스휠로 하였을때나...키로 움직였을때....스크롤을 어떻게 동기화 해야할까요 ㅜㅜ
: 한폼에 두 그리드에 동시에 SetFocus()는 안되더군요...
: (SetFocus때문에 그리드에서 자동 스크롤이 되는거 같거든요...)
: 고수님의 조언 기다려봅니다
|