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
[74982] Re:Re:Re:Re:component 배열 형식으로 구현 질문입니다.
바루 [] 352 읽음    2018-06-27 18:03
답변 정말 감사합니다 ㅠㅠ

혹시 하나만 더 질문해도 될까요?

TImage를 Form상에서 Left와 Top 값을 설정해주어 위치를 잡지 않습니까. 
지금 1000개 정도의 같은 크기의 TImage 프레임을 모눈종이처럼 배열해야하는데
혹시 자동으로 배열하는 방법이 있을까요?

한줄에 10개를 고정해두고 100줄을 자동 정렬하거나 혹은
Form의 크기에 맞춰서 한 줄의 이미지 개수가 늘어나고 줄어들어들게 되면 될거 같습니다..

다시 한번 답변 정말 감사드립니다.

김시환 님이 쓰신 글 :
: 1.  TRzGroupBox *GroupList[10];             
: :    TImage *GImage[10][1000];
:      를 private 속성으로 선언을 해 보세요..
:
: 2. TImage *image1; 의 경우는 따로 선언하는것이 아니고 디자인 타임에서 폼화면에 TImage 컴포넌트를 올리면 자동으로 헤더에
: 정의 되는 것을 말씀 드리는 겁니다.
:
: 아래 원래 코드에서  TImage *G1Image1; 의 경우도 폼화면에 등록된 이미지 컴포넌트가 있어서 헤더파일에 정의된 것일 겁니다.
:
:
:
: 바루 님이 쓰신 글 :
: : 답변 정말 감사드립니다. 두 가지 더 궁금한게 있어서 질문드립니다.
: : 1.
: : 헤더파일에서 아래와 같이 정의를 했을 때
: :
: :   : 

: : "Error in module Layer_F: Incorrect field declaration in class TLayerForm"   //Layer_F 는 cpp, h파일 이름
: : 이런 메시지가 뜨는데 어떻게 해야되나요?
: :
: : 2.
: : 또, FormCreate에서 image1, image2 ... 는 어떻게 정의되는 건가요?
: :
: : TImage *image1;
: : TImage *image2;
: : 

: : 이런 형식인가요?
: : 현재 코드에선  TImage *G1Image1;를 따로 초기화 없이 써서요.
: :
: : 앞에 선임자가 썼던 코드 그대로 받아서 C빌더에 대한 지식 없이 맨땅에 헤딩하려니 힘드네요 ㅠㅠ
: :
: :
: : 김시환 님이 쓰신 글 :
: : : TImage 컴포넌트를 정적으로 하느냐 동적으로 하느냐에 따라 조금 코드가 변할수는 있을텐데 제가 늘 사용하던 컴포넌트 배열을 참고 삼아 알려 드리겠습니다.
: : :
: : : 일단 아래 코드 중심으로 설명을 드리면
: : :
: : : class TLayerForm : public TForm
: : : : {
: : : : __published:    // IDE-managed Component
: : : :
: : : :   TRzGroupBox *GroupList[10];             
: : : :   TImage *GImage[10][1000];
: : : }
: : :
: : : void __fastcall TLayerForm ::FormCreate(TObject *Sender)   
: : : {
: : :     GImage[0][0] = image1 ;     // 이미지가 정적으로 고정되어 있을 경우 모든 이미지를 다 배열에 할당합니다.
: : :     GImage[0][1] = image2 ;     // 숫자적으로 보면 꽤 노가다가 되겠네요..
: : :             :
: : :             :
: : :     GImage[9][999] = imageN ;
: : : }
: : :
: : : GImage[group][item]->Picture->LoadFromFile("image.bmp") ;     // 이런식으로 사용하시면 됩니다.
: : :
: : : 이미지가 동적으로 생성될 경우는 위의 폼생성 이벤트에서 처럼 미리 컴포넌트를 등록하지 않고
: : : 생성할때 마다 등록을 해 주셔야 하겠지요.. 워낙 수가 많으니 동적생성할 경우는 관리를 잘하셔야 하겠지요..
: : :
: : : 바루 님이 쓰신 글 :
: : : : 현재 코드
: : : :
: : : :
: : : : class TLayerForm : public TForm
: : : : {
: : : : __published:	// IDE-managed Component
: : : : 
: : : :   TRzGroupBox *Group1; 
: : : :   TImage *G1Image1;
: : : :   TImage *G1Image2;
: : : :   TImage *G1Image3;
: : : :   TImage *G1Image4;
: : : : //....(이하생략)
: : : : 

: : : :
: : : : 바꾼 코드
: : : :
: : : :
: : : : class TLayerForm : public TForm
: : : : {
: : : : __published:	// IDE-managed Component
: : : : 
: : : :   TRzGroupBox *GroupList[10];              
: : : :   TImage ***GImage; //([각 그룹 번호][그룹 내의 아이템 번호] -> 그룹 1의 5번째 아이템 [0][4])
: : : : 

: : : :
: : : :
: : : : 카테고리를 만들고 각 카테고리(TRzGroupBox) 안에 이미지(TImage) 아이템들을 넣는 것을 구현했습니다.
: : : : 현재는 카테고리 개수를 10개, 각 카테고리당 아이템 최대 개수를 10개로 지정하여 component들을 하드코딩 되어 있는 상태입니다.
: : : : 여기서 아이템을 1000개 이상 넣어야하는 상황이 발생해서 현재 하드코딩 되어 있는 부분을
: : : : 다중 포인터나 vector를 이용하여 대체하는 방법을 찾았으나 component를 다중 포인터로 사용할 수가 없더라구요.
: : : :
: : : : 그래서 어떤 방법으로 다른 방법으로 구현 할 수 있는지 조언 부탁들립니다.
: : : :
: : : : 현재 사용하고 있는 컴파일러는 c++builder6입니다.
: : : :

+ -

관련 글 리스트
74974 component 배열 형식으로 구현 질문입니다. 바루 407 2018/06/20
74977     Re:component 배열 형식으로 구현 질문입니다. 김시환 404 2018/06/22
74979         Re:Re:component 배열 형식으로 구현 질문입니다. 바루 418 2018/06/22
74981             Re:Re:Re:component 배열 형식으로 구현 질문입니다. 김시환 390 2018/06/25
74980             Re:Re:Re:component 배열 형식으로 구현 질문입니다. 김시환 339 2018/06/25
74982                 Re:Re:Re:Re:component 배열 형식으로 구현 질문입니다. 바루 352 2018/06/27
75053                     Re:Re:Re:Re:Re:component 배열 형식으로 구현 질문입니다. 김시환 303 2018/08/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.