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
[64244] Re:Re:정말 다행입니다 ㅜㅜ ㅎ
빌더링 [] 1226 읽음    2011-04-26 13:49
아 저도 진짜 포기하고있었어요 ...아무리 별짓을 다해봐도 안될것같았는데...
정성훈님이 알려주셔서 해결했내요 진짜 묵은 체증이 다 가시는;; ㅎ
조언해주신 김상면님 감사해요 ㅜㅜ

김상면 님이 쓰신 글 :
: 음...
: 아마 불가능 할겁니다.
: 예전에 그리드를 만들어 봤는데....
: 그렇게 구현하니 코딩량이 말이 아니더군요...
: 속도도 문제가 있는것 같고...
: 어떻게 구현했다하더라도 하위 호환성에 문제가 많더군요...
: 그래서 그때 내린 결론이 아마 상용 콘트롤도 이런기능은 절대로 구현하지 않을거라는 예측을 했는데...
: 그때 본 대부분의 콘트롤이 제대로 지원을 안하더군요....
:
: 직접 그리드 콤포넌트를 만드는 방법외는 없을겁니다.
: 아니면 돈 억수로 많이 주고 프로그램을 새로 사시던가...
: 크...
: 그럼
: 빌더링 님이 쓰신 글 :
: : 에구 아래 이문제에 대해서 질문올렸다가 스스로 답을 찾아낸줄알고 적용했더니...
: : 완전 에러였네요...
: :
: : 그래서 다시한번 도움을 청해봅니다.. ㅜㅜ 이런 비슷한 부분의 질문이나 예제가 검색이 힘드네요 에구
: :
: : 제가 폼위에 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때문에 그리드에서 자동 스크롤이 되는거 같거든요...)
: : 고수님의 조언 기다려봅니다

+ -

관련 글 리스트
64238 두개의 그리드 컨트롤 재질문 ㅜㅜ 빌더링 1714 2011/04/25
64242     [답변] 그리드의 Col과 Row 정성훈.해미 2034 2011/04/26
64245         Re:[답변] 질문 하나만 더 드려도 될까요? 빌더링 1118 2011/04/26
64254             Re:Re:[답변] 질문 하나만 더 드려도 될까요? 정성훈.해미 1073 2011/04/26
64256                 Re:Re:Re: 감사함을 표현할 길이 없네요 ㅜㅜ 빌더링 1307 2011/04/26
64243         Re:허걱 진짜진짜 감사합니다 ㅜㅜ 우헐~ 빌더링 1189 2011/04/26
64241     Re:두개의 그리드 컨트롤 재질문 ㅜㅜ 김상면 1221 2011/04/26
64244         Re:Re:정말 다행입니다 ㅜㅜ ㅎ 빌더링 1226 2011/04/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.