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
[51239] Re:컨트롤을 인수로 넘겨받기??
장성호 [nasilso] 1325 읽음    2007-11-13 23:43
1. Call By Reference 는 참조를 넘기는 거니까..
   주소를 나타내는 &를 붙여주면 되겠죠
  void __fastcall TForm1::FindLabel(TLabel*&lbl)
  {
      lbl=Label1;
  }
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     TLabel *lbl=NULL;
     FindLabel(lbl);
     if(lbl)ShowMessage(lbl->Caption);
}


그리고
void __fastcall TForm1::FindCtrl2(TLabel*lbl)

이런식으로 넘기는 것은 객체의 주소를 넘기는것이 아니라 객체 자체를 넘겨주는것이므로
Call By Value가 되는거죠

TLabel* 도 int 형이나 char형 처럼 
단지 (포인터형) 변수라고 생각하시면 됩니다.


2. 여러개를 넘겨 받으려면... TList 같은것을 넘기면 되겠죠..
void __fastcall TForm1::FindCtrl3(TList *lst)
{
    lst->Add(Label1);
    lst->Add(Label2);
    lst->Add(Label3);
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    TList *lst=new TList;
    FindCtrl3(lst);
    for(int i=0;i<lst->Count;i++)
    {
        TLabel *lbl=(TLabel *)lst->Items[i];
        ShowMessage(lbl->Caption);
    }
    delete lst;
}
//---------------------------------------------------------------------------

그럼..


쩡이 님이 쓰신 글 :
: 안녕하세요?
: 일전에 컨트롤 검색하는 방법을 질문올려서 잘 사용하고 있었는데요.
: 또 막히는 부분이 있어서 도움받고자 질문 올립니다..
:
: FindControl() 함수는 폼에 있는 Label을 Tag단위로 검색합니다.
: 여기까지는 잘 되는데요..
:
: FindControl()을 호출하는 부분에서
: Call by Address, Call by Reference 하는 것처럼 여러개의 컨트롤을 넘겨받고 싶은데요..
: 어떻게 하면 좋을까요??
:
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::FindControl(TLabel *pLabel1, TLabel *pLabel2)
: {
:     for(int i=0; i<Form1->ComponentCount; i++) {
:         TLabel *pFind= dynamic_cast<TLabel *>(Form1->Components[i]);
:         if(pFind) {
:             if(pFind->Tag==1) {
:                 pLabel1= pFind;
:                 Memo1->Lines->Add(pLabel1->Name);
:             }
:             if(pFind->Tag==2) {
:                 pLabel2= pFind;
:                 Memo1->Lines->Add(pLabel2->Name);
:             }
:         }
:     }
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     TLabel *pLabel1= NULL, *pLabel2= NULL;
:
:     FindControl(pLabel1, pLabel2);  //<<== 이부분이요~~
:
:     //검색한 컨트롤 사용하기
:     if(pLabel1) {
:         Memo1->Lines->Add(pLabel1->Caption);
:     }
:     if(pLabel2) {
:         Memo1->Lines->Add(pLabel2->Caption);
:     }
: }

+ -

관련 글 리스트
51233 컨트롤을 인수로 넘겨받기?? 쩡이 1147 2007/11/13
51239     Re:컨트롤을 인수로 넘겨받기?? 장성호 1325 2007/11/13
51246         감사합니다~ 쩡이 977 2007/11/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.