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
[18619] Re:Re:parameter list에 관해서..
이용주 [] 789 읽음    2002-05-17 15:00
유영인 [Chris] 님이 쓰신 글 :
: 가장 좋은 방법은, ListBox 같은 것을 동적생성하여 그때마다 보여주는 것입니다. ComboBox가 Edit와 ListBox의 결합된 것으로 목적에 가장 잘 맞게 보이지만, ComboBox가 가지는 특성이나 기타 VCL이 공통적으로 가지는 특성으로 인해서 목적을 달성하시기에 불편한점이 없지 않습니다.
:
: 일단, List를 그때그때마다 갱신을 시켜야 하는데, 리스트를 갱신시킬때마다 ComboBox의 내용은 사라집니다. 그래서 아래의 소스를 사용하시면 일시적으로 커서가 깜빡이는 현상이 발생합니다. 또한, OnClick 이벤트는 리스트에서 아이템이 선택되었을때 발생하는데, 이때 클릭을 하게되면 0번 아이템만 남고 나머지는 전부 소멸됩니다. 그래서 타이밍이 틀리면 원하는 아이템을 뽑아올 수가 없는거죠.
:
: 아래는 ComboBox 만을 사용한 간단한 예제입니다.
:
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include "Unit1.h"
:
: //---------------------------------------------------------------------------
:
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1      *Form1;
: TStringList *ALL_ITEM;
: bool        SELECTED_VALUE = false;
:
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
: {
:
:  int               itCount;
:
:
:  ALL_ITEM = new TStringList;
:
:  // 전체 아이템 가상 생성
:  for(itCount = 0; itCount < 1000; itCount ++)
:    ALL_ITEM->Add(random(10000));
:
:
:  // 생성된 아이템을 리스트에 넣음
:  ComboBox1Change(ComboBox1);
:
: }
:
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::FormDestroy(TObject *Sender)
: {
:
:  delete ALL_ITEM;
:
: }
:
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::ComboBox1Change(TObject *Sender)
: {
:
:  int               itItemIndex = ComboBox1->ItemIndex,
:                    itSelStart = ComboBox1->SelStart,
:                    itIndex;
:
:
:  // 우선 전체 아이템을 넣고...
:  ComboBox1->Items->Assign(ALL_ITEM);
:
:
:  // 비교를 하여 입력된 글자와 맞는 것만 추려냄
:  itIndex = ComboBox1->Items->Count - 1;
:  while(itIndex >= 0) {
:    if(ComboBox1->Items->Strings[itIndex].SubString(1, ComboBox1->Text.Length()) != ComboBox1->Text)
:      ComboBox1->Items->Delete(itIndex);
:
:    itIndex --;
:  }
:
:
:  // OnClick에서 값이 추출되었으면 그 값으로 설정
:  // 이 루틴이 있어야 하는 이유는 Assign에서 모든 선택 정보가 사라지기 때문..
:  if(SELECTED_VALUE) {
:    ComboBox1->ItemIndex = 0;
:    SELECTED_VALUE       = false;
:  }
:
:
:  // 커서의 위치를 원래의 위치로 복구. 이것 역시.. Assign 때문에..
:  ComboBox1->SelStart  = itSelStart;
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::ComboBox1Click(TObject *Sender)
: {
:
:  SELECTED_VALUE = true;
:
: }
: //---------------------------------------------------------------------------
:
:
: 답변감사드립니다.
제가 답장이 늦었군요.^^;;
근데 제가 궁금한것은 ComboBox에 추가를 시켜서 선택하는것이 아니구요. 예를들어 빌더에서 ComboBox1-> 이렇게 치고 가만있으면 뒤에 어떤것이 추가 될수 있는지 항목이 나오잖아요? 그런걸 어떻게하는건지 궁금해서요. 특별하게 다른파일로 아이템을 추가해서 그것을 바로 찾아야 하는건가요?? 어떻든 제가 궁금한것은 이거네요^^ 지금 이것도 열심히 해보는중이에요.. 감사드립니다.

+ -

관련 글 리스트
18602 parameter list에 관해서.. 이용주 802 2002/05/17
18606     Re:parameter list에 관해서.. 유영인 [Chris] 878 2002/05/17
18619         Re:Re:parameter list에 관해서.. 이용주 789 2002/05/17
18620             Re:Re:Re:parameter list에 관해서.. 유영인 [Chris] 876 2002/05/17
18623                 Re:Re:Re:Re:parameter list에 관해서.. 이용주 704 2002/05/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.