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
[2836] Re:[질문] Child 간의 컨트롤에대해...
박지훈.임프 [cbuilder] 3750 읽음    2000-01-24 00:00
서영재 님이 쓰신 글 :
: 안녕하세요  ^.^
:
: Child 폼을 생성할때마다 ImageList를 만듦니다.
: ImageList에는 Gif 프레임을 저장을 해놓았습니다.
:
: 근데 Child 폼이 2개 이상이 되어버렸을때 ActiveMDIChild 의 ImageList를 제가 원하는 Child폼의
: ImageList와 합치고 싶습니다.
: 제가 짠 코드는

:  ((TImageList *)(MainForm->ImList->Items[MainForm->PopupMenu1->Items->IndexOf(NewItem)]))->AddImages(ImageL);
:
: 이렇습니다.
:
: 위의 코드를 설명하자면,TImageList 를 만들면서 MainForm의 ImList(TList)에 저장을 해두었습니다.
: 그리고, 팝업메뉴에 선택한 TImageList에 지금 활성화 되어있는 Child의 ImageList(ImageL)를
: 저장하는 겁니다.
:
: 그런데 실행결과,  ImageList에 같은ImageList만 추가 되는 겁니다.
: 즉, 이미지는 똑같은것만 추가가 되어버리는 거에요...  활성화된 Child창음 무시되어버리고...
: 위의 코드도 Child 폼에서 코딩한거라...
:
: 잘못된게 있으면 지적해주십시요
:
: 그럼 좋은 하루 되세요~~



임펠리테리입니다.

이런 꼬인 코드를 좋아하시나보죠?
두줄의 코드를 한줄로 줄였으니 조금 더 빨라질거라고 생각하시겠습니다만... 별로 그렇지도 않습니다. 새로운 정수 변수를 만들어서 거기에 인덱스를 저장하고 다시 배열인덱스로 넘겨주어도
CPU에 주어지는 부담은 기껏해야 대여섯 클럭밖에 안됩니다. 시간으로 따지면 십만분의 1초쯤?

저도 C언어에 광적으로 미쳐있던 90년대 초반엔 이런 코드를 즐겨 작성했었죠. 주특기가 포인터
비꼬기였으니, 한줄로 작성한 소스라도 다른 어떤 사람도 그 의미를 쉽게 알아보지 못하게 할 수
있었습니다.

코딩의 첫번째 원칙은 가독성, readability입니다. 다른 사람들이나 자신이 다시 봐도 금방 의미를
알아볼 수 있는 코드가 가장 좋은 코드입니다. 한눈에 봐도 금방 의미를 알아챌 수 있게, 만약
그래도 알아보기가 쉽지 않다면 주석을 더해서라도 더 알아보기 쉽게 해야 좋은 코드입니다.

((TImageList *)(MainForm->ImList->Items[MainForm->PopupMenu1->Items->IndexOf(NewItem)]))->AddImages(ImageL);
이 상태로는 이 코드가 무슨 뜻인지도 알아보기가 힘듭니다. 이걸 풀어봅시다.

int Index = MainForm->PopupMenu1->Items->IndexOf(NewItem);
((TImageList *)(MainForm->ImList->Items[Index]))->AddImages(ImageL);

잘 보세요. ImList는 아마도 이미지리스트일테니, 이미지리스트의 Items라는 멤버를 억세스하려고
하고 있는 셈이죠. 그런데, TImageList에는 Items라는 멤버가 없을 뿐 아니라, 이 Items라는 멤버
를 다시 TImageList * 형으로 강제로 캐스팅을 하려고 했네요. 코드가 앞뒤가 전혀 맞지 않습니다.

매번... 답변을 하기 위해 추리를 해야 하는군요. --;;
한번쯤은 답변할 사람이 어떻게 답변을 준비할까를 생각해보시고 질문을 해주시길 부탁드립니다.

그럼 이만...

+ -

관련 글 리스트
2830 [질문] Child 간의 컨트롤에대해... 서영재 3862 2000/01/24
2836     Re:[질문] Child 간의 컨트롤에대해... 박지훈.임프 3750 2000/01/24
2865         Re:Re:[질문] Child 간의 컨트롤에대해... 서영재 3615 2000/01/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.