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
[1306] [답변] JSK365/ 임펠리테리님 보세요./프포
박지훈.임프 [cbuilder] 3541 읽음    1999-05-06 20:24
안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당 임펠리테리입니다.

음.. 제가 끝에 말을 흐린 것이 무슨 뜻인지를 이해하지 못하셨나보네요. ^^;;;;

제가 보여드린 것은 단순한 예제로서, 그런 식으로 현재 리치에디트의 커서가 있는

부분의 색깔을 알아낼 수 있다는 것만을 보여드린겁니다.

그것을 저번에 알려드린 컬러가 나오는 콤보박스에 적용하려면, 당연히, 알아낸

컬러 값을 콤보박스의 해당 아이템 번호로 바꾸어 내어야만 하는데, 사실 TColor로

나온 컬러값과 콤보박스의 인덱스 값은 아무런 관련이 없으므로 전에 만들었던

IntColor 테이블에서 해당 컬러값을 찾아내야 되겠지요? ^^ 물론 아까 말씀드린대로

해당 값이 없는 경우, 그러니까 표준 16색 이외의 컬러인 경우는 골치아픕니다만.

어쨌든, 해당 컬러를 찾아내야 하므로... 대충 생각해보면,

TColor FoundColor = RichEdit1->SelAttributes->Color;
int FoundIndex = 0;
for(int i=0; i<16; i++)
    if(FoundColor == IntColor[i])
        FoundIndex = i;
ComboBox1->ItemIndex = FoundIndex;

대충 이정도면 될거 같네요. 하지만 앞에서도 누차 강조했듯이, 표준 16색 이상의

컬러를 썼다면 엉뚱하게도 무조건 첫번째 아이템이 선택되겠지요? 이런 경우는

인터페이스의 문제로서, 프로그래머가 알아서(!) 해야 한다고 아까도 말씀드렸죠.

글쎄.. 저같으면, 콤보박스에 추가로 비표준 색의 아이템을 만들어서, 16색 리스트

에서 찾아내지 못한 경우에는 비표준 아이템이 선택되도록 하겠습니다.

만약 이렇게 하려면, 바로 앞에서 보여드린 for 루프에서 해당 컬러를 찾아냈을

경우를 구별하기 위해 별도의 bool정도의 변수를 플래그로 세팅해야 되겠지요.

하지만.. 앞에서도 말씀드렸다시피, 이건 프로그래머에게 달린 문제입니다.

그럼 참고하시길...




임펠리테리 박지훈이었습니다.

(cbuilder, cbuilder@thrunet.com)



+ -

관련 글 리스트
1305 [질문] 임펠리테리님 보세요./프포 jsk365 3749 1999/05/06
1306     [답변] JSK365/ 임펠리테리님 보세요./프포 박지훈.임프 3541 1999/05/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.