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
[9289] Re:[급질문]또 StringGrid 입니다.
kark .김성진 [] 1125 읽음    2001-07-24 16:19
셀 단위로 Edit를 금지하는 건 기본적으로 할 수 없는 걸로 알고 있습니다.
(틀렸다면 지적해주세요)
그래서 그 부분은 3번째나 4번째 셀에 들어왔을때, 2번째 셀을 검사해서
0값이라면 경고용으로 메세지 박스를 하나 띄우고 포커스를 2번째 셀로 보내버리는 편법
을 사용하면 될것 같구요.
색상 구별은 이렇게 해보시는건 어떨런지요.
우선 헤더 파일에

unsigned char sgflag[5][5];

이렇게 선언해 두구요. OnSetEditText 이벤트 함수에서요

void __fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol,
      int ARow, const AnsiString Value)
{
   if((ACol==1)&&(Trim(Value) == "0"))
   {
     sgflag[2][ARow] = 1;
     sgflag[3][ARow] = 1;
   }
   else
   {
     sgflag[2][ARow] = 0;
     sgflag[3][ARow] = 0;
   }
   StringGrid1->Repaint();
}

이렇게 하시고나서, OnDrawCell 이벤트 함수에서

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
                             int ARow, TRect &Rect, TGridDrawState State)
{
   if(sgflag[ACol][ARow] == 1)
   {
      StringGrid1->Canvas->Brush->Color = clRed;
      StringGrid1->Canvas->FillRect(Rect);
      StringGrid1->Canvas->TextRect(Rect, Rect.Left+3,
                         Rect.Top+2, StringGrid1->Cells[ACol][ARow]);
   }
   else if((ACol!=0)&&(ARow!=0))
   {
      StringGrid1->Canvas->Brush->Color = clWhite; //기본 색상으로...
      StringGrid1->Canvas->FillRect(Rect);
      StringGrid1->Canvas->TextRect(Rect, Rect.Left+3,
                      Rect.Top+3, StringGrid1->Cells[ACol][ARow]);
   }
}

이렇게 작성하면요, 어느정도 이선영님께서 원하시는 형태를 얻을 수 있을겁니다.
하지만 위와 같은 방식은 StringGrid가 커질수록 메모리 낭비가 심해진다는 단점이 있네요.
2개의 셀만 할거라면 그냥 sgflag[2] 로 선언해서 사용하는 게 나을 겁니다.
좋은 방법은 아니지만 한번 해보시면 다른 좋은 방법이 떠오르시겠죠..^^

카크였습니다.

김선영 님이 쓰신 글 :
: 저번 질문으로 많은 도움을 받았었습니다
: 다시 한번 감사드리구요
: 또 사용을 하다보니.
: 이것이 궁금하더라구요.
: 만약 6개의 셀이 있다면.
: 그중 2번째의 셀에다가 0의 값을 입력 했을경우.
: 3번째와 4번째 셀만 값을 입력할수 없게 하고 싶거든요.
: 또한 색상의 구별로 표시도 함께 하면서요
: 이런것은 어찌 구현을 해야하는지요

+ -

관련 글 리스트
9286 [급질문]또 StringGrid 입니다. 김선영 835 2001/07/24
9289     Re:[급질문]또 StringGrid 입니다. kark .김성진 1125 2001/07/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.