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
[40988] Re:Edit에서도 ListView처럼 subitem과 같은 메소드를 할 수 있나요?
evergreen [heredity] 1053 읽음    2005-07-11 18:42
안녕하세요. heredity입니다.

질문을 정리해 보면 ...
  1. Edit1, Edit2에 자료를 입력 받는다.
  2. Add Button을 누르면 입력된 내용인 Edit1과 Edit2의 내용을 ComboBox1에 넣는다.
     단, ComboBox1엔 Edit1의 내용만 표시하고 Edit2의 내용은 보이지 않게 한다.
  3. ComboBox Click시 Click된 항목을 Memo1에 나타낸다. 이때 보이지 않게 했던 Edit2의
     내용도 함께 표시한다.
라고 가정(?)하고 글을 씁니다.

원하시는 기능은 여러가지 방법으로 구현 될 수 있으나
TStrings의 Property중 Objects란 넘이 적당해 보이므로 이것을 이용했습니다.
자세한 내용은 TStrings의 Objects에 대한 도움말 및 소스 중간의 주석문을 참조하십시오.
참고로 ComboBox에 문자열 및 Object를 추가하는 Method는 AddObject()가 있습니다.

행복하세요.

주의) ComboBox대신 ListBox를 사용함.
*/

  //---------------------------------------------------------------------------

  #include <vcl.h>
  #pragma hdrstop

  #include "Unit1.h"
  //---------------------------------------------------------------------------
  #pragma package(smart_init)
  #pragma resource "*.dfm"
  TForm1 *Form1;

  //---------------------------------------------------------------------------
  __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
  {
  }

  //---------------------------------------------------------------------------
  __fastcall TForm1::~TForm1(void)
  {
    PCHAR pchStr;

    // EditBox1의 Objects에 할당된 메모리(Edit2의 내용들)을 해제하는 처리부가 필요합니다.
    // ...
  }

  //---------------------------------------------------------------------------
  void __fastcall TForm1::Button1Click(TObject *Sender)
  {
    if( !Edit1->Text.Trim().IsEmpty() ) {
      // Edit2의 내용을 보관하기 위해 메모리를 할당 & 복사후 AddObject로 ListBox1에 추가합니다.
      int   nLen   = Edit2->Text.Length() + 1;
      PCHAR pchStr = new char[nLen];

      memcpy( pchStr, Edit2->Text.c_str(), nLen );
      ListBox1->Items->AddObject( Edit1->Text, (TObject *) pchStr );
    }
  }

  //---------------------------------------------------------------------------
  void __fastcall TForm1::ListBox1Click(TObject *Sender)
  {
    // 클릭된 위치의 문자열과 Objects에 보관된 Edit2 값 Memo1에 출력합니다.
    int        nIdx   = ListBox1->ItemIndex;
    PCHAR      pchStr = (PCHAR) ListBox1->Items->Objects[nIdx];
    AnsiString asStr;

    asStr.sprintf( "%3d : %s (%s)", nIdx + 1, ListBox1->Items->Strings[nIdx].c_str(), pchStr );
    Memo1->Lines->Add( asStr );
  }

  //---------------------------------------------------------------------------


mitchu 님이 쓰신 글 :
: 다름이 아니라 다음과 같은 폼을 만들려고 하는데 Edit2에서 입력된 값은 edit1의 child와 같은 개념으로 숨겨서 콤보박스에 넣고 싶습니다...물론 콤보박스에서는 Edit1만이 열거 되다가 나중에 리스트 박스에 보낼때는 Edit2에 입력되었던 숨겨둔 값까지 보고 싶은데요...
: 이건 제가 만든 거지만 넘 주먹구구식이라 답답해서 그렇습니다. 고수님들 도와주세요..^^*
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include "hw.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner)
:         : TForm(Owner)
: {
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:   int i;
:  while (ComboBox1->Items->Add(Edit1->Text)){
:  ComboBox1->Items->Add(Edit2->Text);
:  }
:  Edit1->Clear();
:  Edit2->Clear();
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:
:    ComboBox1->Showing;
:    ListBox1->Items->Add(ComboBox1->Items->Strings[ComboBox1->ItemIndex]);
:
:
:
:
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button3Click(TObject *Sender)
: {
: ListBox1->Clear();
: }
: //---------------------------------------------------------------------------

+ -

관련 글 리스트
40978 Edit에서도 ListView처럼 subitem과 같은 메소드를 할 수 있나요? mitchu 714 2005/07/11
40988     Re:Edit에서도 ListView처럼 subitem과 같은 메소드를 할 수 있나요? evergreen 1053 2005/07/11
40993         Re:Re:감사합니다. mitcu 693 2005/07/11
40994             Re:Re:Re:감사합니다. evergreen 687 2005/07/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.