괜히 예제를 만들었나요?ㅋ
수정 & 삭제는 ... 너무나 쉽습니다~
직접 해결하실수 있으실듯.
1. 수정 흐름도
1) 수정버튼 누르면
2) 현재의 에디트박스 내용들을 TStringList->Strings[ ComboBox->ItemIndex ] 에 업데이트 시킵니다.
3) 저장한 후 끝!
2. 삭제 흐름도
1) 삭제버튼 누르면
2) 현재 선택한 콤보박스의 Item을 삭제(ComboBox->Items->Delete(?)
3) 각 TStringList에서도 삭제(TStringList->Delete(?))
4) 그리고 다시저장... 끝!
빌더초보자 님이 쓰신 글 :
: 답글 감사합니다....님좀짱이신듯^^ㅋ
: 저장 및 읽어오기를 가르쳐 주셨는데 수정 및 삭제 버튼도 필요해요...ㅡㅡ;
: ㅋㅋㅋ
: 부탁드립니다...^^ 제발~~간절히~~
:
:
:
:
:
:
:
:
:
: 조대현.Clau 님이 쓰신 글 :
: : 1. 콤보박스에 추가와 검색이 필요하신거면 다음 예제가 도움이 되실겁니다.
: :
: : <추가>
: :
ComboBoxName->Add(txtName->Text, NULL);
: :
: : <검색>
: :
int iIndex;
: : iIndex = ComboName->Items->IndexOf(txtName->Text);
: : iIndex에 검색한 이름이 몇번째 위치인지 알 수 있습니다.
: :
: : 또는
: :
int iIndex;
: : iIndex = ComboName->ItemIndex;
: : iIndex에 현재 선택된 아이템의 위치를 알 수 있습니다.
: :
: : 그래서 저장된 주소록중 iIndex에 해당하는 정보를 에디트박스에 뿌려주시면 됩니다.
: :
: : 2. 빌더에는 TStringList라는 아주 편리한 클래스가 있습니다.
: : 문자열을 추가할 수 있으며 파일로 저장/읽기가 가능합니다.
: :
: : <간단한 사용법>
: :
TStringList *ListName;
: :
: : ListName = new TStringList;
: :
: : ListName->LoadFromFile("Name.dat");
: :
: : ListName->Add("홍길동");
: :
: : AnsiString asFind;
: : asFind = ListName->Strings[0];
: : EditFind->Text = asFind;
: :
: : ListName->SaveToFile("Name.data");
: :
: : delete ListName;
: :
: : 3. 만드시려는 주소록의 전체예제 입니다.
: :
: :
TStringList *ListName;
: : TStringList *ListAge;
: : TStringList *ListPhone;
: : TStringList *ListEmail;
: : //---------------------------------------------------------------------------
: : void __fastcall TForm9::btnAddClick(TObject *Sender)
: : {
: : // 입력 항목 검사
: : if(txtName->Text.Trim().IsEmpty()) ShowMessage("이름을입력하세요");
: : else if(txtAge->Text.Trim().IsEmpty()) ShowMessage("나이를입력하세요");
: : else if(txtPhone->Text.Trim().IsEmpty()) ShowMessage("전화번호를입력하세요");
: : else if(txtEmail->Text.Trim().IsEmpty()) ShowMessage("이메일을입력하세요");
: :
: : // 중복된 이름이 있는지 검사
: : if(ComboName->Items->IndexOf(txtName->Text) < 0){
: : // 중복된 이름이 없으면 Combo에 추가한다.
: : // Combo와 Index를 같게하여 TStringList에도 추가하고 저장한다.
: :
: : // 추가
: : ComboName->AddItem(txtName->Text, NULL);
: :
: : ListName->Add(txtName->Text);
: : ListAge->Add(txtAge->Text);
: : ListPhone->Add(txtPhone->Text);
: : ListEmail->Add(txtEmail->Text);
: :
: : // 저장
: : ComboName->Items->SaveToFile("ComboName.dat");
: :
: : ListName->SaveToFile("ListName.dat");
: : ListAge->SaveToFile("ListAge.dat");
: : ListPhone->SaveToFile("ListPhone.dat");
: : ListEmail->SaveToFile("ListEmail.dat");
: : }
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm9::FormCreate(TObject *Sender)
: : {
: : // TStringList 초기화
: : ListName = new TStringList;
: : ListAge = new TStringList;
: : ListPhone = new TStringList;
: : ListEmail = new TStringList;
: :
: : // 저장된 주소록 내용을 읽는다.
: : ComboName->Items->LoadFromFile("ComboName.dat");
: :
: : ListName->LoadFromFile("ListName.dat");
: : ListAge->LoadFromFile("ListAge.dat");
: : ListPhone->LoadFromFile("ListPhone.dat");
: : ListEmail->LoadFromFile("ListEmail.dat");
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm9::ComboNameChange(TObject *Sender)
: : {
: : // Combo가 선택되면 해당되는 Index에 맞는 주소록 내용을 Text에 표시한다.
: : txtName->Text = ListName->Strings[ComboName->ItemIndex];
: : txtAge->Text = ListAge->Strings[ComboName->ItemIndex];
: : txtPhone->Text = ListPhone->Strings[ComboName->ItemIndex];
: : txtEmail->Text = ListEmail->Strings[ComboName->ItemIndex];
: : }
: : //---------------------------------------------------------------------------
: :
: : 빌더초보자 님이 쓰신 글 :
: : : 주소록을 만들고 있는데요...
: : : 이름, 나이, 전화번호, 이메일을 입력하고 추가 버튼을 눌렀을 경우 Tcombobox에 저장하고
: : : Tcomcobox에 저장된 이름을 선택하고 조회를 눌렀을 경우
: : :
: : : txtName->Text
: : : txtAge->Text
: : : txtPhone->Text
: : : txtEmail->Text
: : :
: : : 에 보여주는것을 해야 하는데 Tcombobox에 어떻게 넣어야 하는지 모르겠어요...
: : : 고수님 좀 도와주셔요..^^
: : :
: : : //---------------------------------------------------------------------------
: : : void __fastcall TForm1::btnAddClick(TObject *Sender)
: : : {
: : : Set start;
: : :
: : : if(txtName->Text.Trim().IsEmpty()) ShowMessage("이름을입력하세요");
: : : else if(txtAge->Text.Trim().IsEmpty()) ShowMessage("나이를입력하세요");
: : : else if(txtPhone->Text.Trim().IsEmpty()) ShowMessage("전화번호를입력하세요");
: : : else if(txtEmail->Text.Trim().IsEmpty()) ShowMessage("이메일을입력하세요");
: : : strcpy(start.name, txtName->Text.Trim().c_str());
: : : start.age = txtAge->Text.Trim().ToInt();
: : : strcpy(start.phone, txtPhone->Text.Trim().c_str());
: : : strcpy(start.email, txtEmail->Text.Trim().c_str());
: : :
: : : FILE *fp = fopen("info.dat","wb");
: : : fwrite(&start, sizeof(start), 1, fp);
: : : fclose(fp);
: : : }
: : : //---------------------------------------------------------------------------