|
초기에 똑같이 A~Z까지 넣어놓고
cbBStart1 콤보박스가 변경될때
cbBEnd1 콤보박스를 클리어하고
cbBStart1 선택된것부터 26개를 넣네요 C를 선택하면 C~Z,?,?<-이런식으로 두개가 추가될듯
cbBEnd1->ItemIndex 는 해당 콤보박스의 인덱스를 보여주기때문에 C로선택된후
ADD버튼을 눌렀을때
cbBStart1->ItemIndex = 0; A로 감
cbBEnd1->ItenIndex = 0; C부터 있기때문에 C로 감
이런현상이 생기는거네요
void __fastcall TMainForm::cbBStart1Change(TObject *Sender)
: {
: int iStartIdx = cbBStart1->ItemIndex;
: cbBEnd1->ItemIndex = iStartIdx ;
: }
이렇게 바꾸시던지
Add버튼을 누를때
cbBEnd1->Clear();
for(int i = 0 ; i < cbBStart1->Count ; i++)
{
cbBEnd1->Items->Add(cbBStart1->Items->Strings[i]);
}
cbBStart1->ItemIndex = 0;
cbBEnd1->ItenIndex = 0;
이렇게 하시면 원래대로 돌아가겠네요
김동석 님이 쓰신 글 :
: void __fastcall TMainForm::InitBlockPanel(void)
: {
: int i;
: char cValue;
: AnsiString strTmp;
: AnsiString strPrefix,strBuffer;
:
: cbBStart1->Items->BeginUpdate();
: cbBEnd1->Items->BeginUpdate();
:
: cbBStart1->Items->Clear();
: cbBEnd1->Items->Clear();
: for(i = 0; i < 26; i++)
: {
: cValue = 'A'+i;
: strTmp.sprintf("%c",cValue);
:
: cbBStart1->Items->Add(strTmp);
: cbBEnd1->Items->Add(strTmp);
: }
:
: cbBStart1->Items->EndUpdate();
: cbBEnd1->Items->EndUpdate();
:
: cbBStart1->ItemIndex = 0;
: cbBEnd1->ItemIndex = 0;
:
: strPrefix="";
: ------------------------------------------------------------------
: void __fastcall TMainForm::cbBStart1Change(TObject *Sender)
: {
: int iStartIdx = cbBStart1->ItemIndex;
: int i;
: char cValue;
:
: AnsiString strTmp;
:
: cbBEnd1->Items->BeginUpdate();
:
: cbBEnd1->Items->Clear();
:
: for(i = iStartIdx; i < 26; i++)
: {
: cValue = 'A'+i;
: strTmp.sprintf("%c",cValue);
: cbBEnd1->Items->Add(strTmp);
: }
:
: cbBEnd1->Items->EndUpdate();
: cbBEnd1->ItemIndex = 0;
: }
: ---------------------------------------------------------------------
: ComboBox에 A~Z까지 목록에 뜨게 설정해두었습니다.
:
: cbBStart1 값을 c로 하면 cbBEnd1 값이 c부터 시작하게끔 하였습니다.
:
: 그래서 마지막에 Add할 시에 두 값이 초기값으로 가기위해
:
: cbBStart1->ItemIndex=0;
: cbBEnd1->ItemIndex=0;
:
: 을 명령해주었습니다.
:
: 그 결과 cbBStart1은 초기값인 A로 정확히 값이 변경되었으나
:
: cbBEnd1은 C 로 이동이 되었습니다.
:
: cbBEnd1 초기값이 cbBStart1 설정값으로 설정되어있는거같습니다.;;;;
:
: 이 때 cbBEnd1 값을 A로 이동하게 하는 법을 알고싶습니다. ㅠㅠ
:
:
: 이게 안된다면
:
: cbBStart1 값이 C로 지정되었을 때, cbBEnd1 값은 C부터 시작하게 되는데
:
: 이때 목록을 눌렀을때 A부터 뜨게 가능한지 알고싶네요...이게 더 힘들꺼같지만;;
:
:
: 사진파일 첨부하였습니다.
:
:
:
: 문경재 님이 쓰신 글 :
: : 콤보박스 클리어를 말씀하시는건가요??
: : cbBStart1->Clear();
: :
: : 답변달고 다시 읽어보니 클리어가 아니네요
: : cbBEnd1->ItemIndex=0;
: : 를쓰시면 cbBEnd1 콤보박스도 초기값으로 돌아가실건데
: :
: : 그후에
: : cbBStart 를 따라가는 함수에 들어가는것 같네요
: :
: : 전체적인 소스를 봐야 알것 같은데요;
: :
: : 김동석 님이 쓰신 글 :
: : : 김동석 님이 쓰신 글 :
: : : : 안녕하세요
: : : :
: : : : c++ builder2007 Rad Studio 를 사용중입니다
: : : :
: : : : 리스트 목록에서 리스트를 골라 콤보박스를 이용해 add 버튼으로 항목을 추가해서 리스트목록을 추가하는 형식인데
: : : :
: : : : add 버튼이 눌렸을때 콤보박스를 초기값으로 바꿀수있는 방법을 알고싶습니다....
: : :
: : :
: : : cbBStart1->ItemIndex=0;
: : :
: : : 이걸 쓰니 초기화가 되더군요
: : :
: : : 콤보박스 명칭을 cbBStart1 cbBEnd1 cbBStart2 cbBEnd2 이런식으로 했습니다
: : :
: : : 문제는 cbBEnd 값이 cbBStart 값을 따라가게 설정되어
: : :
: : : cbBEnd1->ItemIndex=0;
: : :
: : : 를 써도 초기값으로 돌아가지않고 cbBStart1 값이 설정됐던 값으로 돌아가더군요
: : :
: : : 이걸 어찌 해야 될까요
: : :
: : : 전체 소스가 필요할까요?
|