|
에버그린님 정말 감사 드립니다.
행복한 하루 되시고 많이 배우겠습니다.^^*
p.s: 그런데 이런 소스 응용은 어떤것을 참고해야 하죠? 항상 하기전에 개발자안내서를 서너번도 찾아보고 공부하는데
마땅히 적용시켜야 할 것을 못찾아서요..
evergreen 님이 쓰신 글 :
: 안녕하세요. 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();
: : }
: : //---------------------------------------------------------------------------
|