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
[18017] Re:Re:Re:리스트박스에서의 각 아이템의 텍스트 색 설정이 잘 안됨니다. 도와 주이소.....
박세용 [sypark] 1186 읽음    2002-04-29 13:17
전역 변수를 사용하기 보다는 바로 L, M, H, E, F 값으로 처리를 하세요.
특히나 전역변수를 별도의 함수에서 변경하는 것은 처리 방법에 문제가 있어보입니다.
DrawItem내에서 전역변수 값을 리스트 박스의 아이템에 따라 변경해 줄 수 있어야
합니다.
아니면 전역변수를 사용하지 않고, 직접 메시지 레벨에 따른 처리를 해주야야하겠죠.

switch( level ) {
   case 'L':
      ListBox1->Canvas->Font->Color= clWhite;
      break;

}

ListBox1->Canvas->TextRect(Rect, Rect.Left, Rect.Top, ListBox1->Items->Strings[Index]);

이 경우에 STL을 사용할 필요가 없네요.
리스트 박스의 아이템을 구성하는 string값에 메시지 레벨이 들어간다면 그 레벨값에 따라서
처리를 해주시고, 혹시라도 없다면, ListBox1->Items->AddObject와
ListBox1->Items->Objects[i]를 이용해보세요.


김상훈 님이 쓰신 글 :
: 리스트 박스의 아이템에서 메세지 레벨이라는 값도 들어가집니다.이 메세지 레벨값을 보고 그 메세지 레벨에 해당하는 색을 설정하고 싶거든요..메세지 레벨의 값은 각 5개로 "L","M","H","E","F"로 다섯가지 입니다.그래서 전 아이템에서 이다섯개를 순서대로 0~4로 지정하여 그 해당값을 전역변수 tmp_level에 할당하고, 이를 ListBox1DrawItem함수에서 조건문에 사용하였습니다..근데 한 라인의 아이템의 색이 변하는것이아니라..전체가가 다 변해서...이 글을 올리게 되엇습니다..좀더 상세히 답변해 주시면 감사 하겠습니다.
:
: 그리고 아직 초보라서...답변의 내용을 전혀 모르겠씁니다..죄송하지만 STL이 뭔지..좀더 자세히 설명해 주시고, 이왕이면 이와 유사한 예제를 하나 들어 주시면 감사 하겟습니다...한 주의 시작인 월요일 즐거운 하루 되세요..감사
:
: 박세용 님이 쓰신 글 :
: : 아마도 메시지(event)의 처리 순서 때문에 잘못된 것 같네요.
: : ReadMsg에서 tmp_level을 바꾸면
: : ListBox1DrawItem에서 현재의 tmp_level을 보고
: : 전체 메시지를 그 색으로 칠할 것 같네요.
: : ListBox의 각 아이템 값(AnsiString)을 보고 판단해서 색을 지정하게 코딩을 하지 않으면
: : tmp_level의 값과 ListBox에 들어가는 값을 매치시키는 별도의 자료를 사용해야될 것 같네요.
: : 예를 들면, STL(standard template library)의 map과 같은 자료구조를
: : 사용하면 될 것 같네요.
: :
: :
: : 김상훈 님이 쓰신 글 :
: : : 리스트 박스에서 각 아이템의 덱스트 색깔이 각 조건에 의해서 바꾸어지도록 코딩을 햇는데..각 라인이 바뀌는 것이 아니라..전체가 다 바뀌어 집니다..어디가 잘 못 되었는지 선배님들의 많은 가르침을 기다리겠습니다...그럼 즐거운 주말이 돼세요...
: : :
: : : bool __fastcall TMsgForm::ReadMsg( void )
: : : {
: : :    ....
: : :    ....
: : :    ....
: : :    tmp_level=....;
: : :    ...
: : : }
: : :
: : : void __fastcall TMsgForm::ListBox1DrawItem(TWinControl *Control, int Index,
: : :       TRect &Rect, TOwnerDrawState State)
: : : {
: : :      if( tmp_level == MSG_LVL_LOW){
: : :         ListBox1->Canvas->Font->Color= clWhite;}
: : :     else if( tmp_level == MSG_LVL_MED){
: : :         ListBox1->Canvas->Font->Color = clAqua;}
: : :     else if( tmp_level == MSG_LVL_HIGH){
: : :         ListBox1->Canvas->Font->Color = clYellow;}
: : :     else if( tmp_level == MSG_LVL_ERROR){
: : :         ListBox1->Canvas->Font->Color = clFuchsia;}
: : :     else if( tmp_level == MSG_LVL_FATAL){
: : :         ListBox1->Canvas->Font->Color = clRed;}
: : :
: : :     ListBox1->Canvas->TextRect(Rect, Rect.Left, Rect.Top, ListBox1->Items->Strings[Index]);
: : :
: : : }

+ -

관련 글 리스트
17986 리스트박스에서의 각 아이템의 텍스트 색 설정이 잘 안됨니다. 도와 주이소..... 김상훈 968 2002/04/27
17998     Re:리스트박스에서의 각 아이템의 텍스트 색 설정이 잘 안됨니다. 도와 주이소..... 박세용 950 2002/04/28
18006         Re:Re:리스트박스에서의 각 아이템의 텍스트 색 설정이 잘 안됨니다. 도와 주이소..... 김상훈 849 2002/04/29
18017             Re:Re:Re:리스트박스에서의 각 아이템의 텍스트 색 설정이 잘 안됨니다. 도와 주이소..... 박세용 1186 2002/04/29
17993     Re:리스트박스에서의 각 아이템의 텍스트 색 설정이 잘 안됨니다. 도와 주이소..... 유영인 [Chris] 1138 2002/04/27
18005         Re:Re:리스트박스에서의 각 아이템의 텍스트 색 설정이 잘 안됨니다. 도와 주이소..... 김상훈 888 2002/04/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.