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
[1986] Re:여러개의 DBEdit control에서 값이 변경되었는지 체크할때..
박지훈.임프 [cbuilder] 3381 읽음    1999-09-23 00:00
: 안뇽하세엽?
: 너굴휩니다.
:
: DBEdit control or DBComboBox의 경우 값이 변경되면
: 변경이 되었는지 안되었는지 체크를 어떻게 하는건가여?
:
: 한두개는 직접 해도 상관 없지만
: 10개 이상을 일일이 직접하는것은 상당한 노가다일것 같아엽...
:
: 제 프로그램은 지금 DBGrid에서 하나의 레코드를 더블클릭하면
: 그것의 내용을  잘 알아 볼 수 있도록 새 폼을 생성시킵니다.
: 이때 원래의 DataSet과는 다른 TQuery를 사용합니다.
:
: 요럽게..
:
: void __fastcall TfrmMain::DBGrid1DblClick(TObject *Sender)
: {
:     AnsiString tempqry;
:
:     tempqry = "select * from cable.db where CABLEID ='" + DM->Query1->FieldByName("CABLEID")->AsString +"'";
:     DM->Query10->Close();
:     DM->Query10->SQL->Clear();
:     DM->Query10->SQL->Add(tempqry);
:     frmConn->ShowModal();
: }
:
: frmConn이라는 폼은 DBEdit or DBComboBox를 사용해서 디비 내용을 보여 줍니다.
: 이런경우 만약 에디트 박스의 값을 하나라도 수정했을 경우에만
: Update시키려고 합니다.
:
: 어떤 방법이 가장 이상적인 방법일가여?
: 며칠 고민하다가.. (다른것도 하면서 ^^ )
: 제 머리를 탓하면서 요기에 질문 올립니다.
: 그럼 부탁드립니다.



임펠리테리입니다.

DBComboBox나 DBEdit 등은 일반적인 TComboBox나 TEdit와 마찬가지로 OnChange 이벤트를
가지고 있습니다. 이 이벤트가 바로 원하시는 동작을 해줍니다.

새로 만드시는 폼 클래스의 private 섹션에 다음과 같이 추가합니다.
class TSubForm : public TForm
{
...
private:
    bool Modified;
    void __fastcall EditComboBoxChange(TObject *Sender);
...
};
그리고 Modified 변수를 초기화하기 위해 폼을 더블클릭해서 OnCreate 핸들러를 작성합니다.
(자동으로 false값이 주어지기는 합니다만 명시적으로 지정해주는 것이 좋습니다.)
void __fastcall TSubForm::FormCreate(TObject *Sender)
{
    Modified = false;
}

그리고 다음과 같이 코딩합니다.
void __fastcall TSubForm::EditComboBoxChange(TObject *Sender)
{
    Modified = true;
}

그리고 시프트 키를 누른채로 폼 위의 모든 디비에디트, 디비콤보박스를 클릭하여 모두 선택합니다.
그런 후 오브젝트 인스펙터에서 OnChange 이벤트 항목을 선택했을때 나타나는 콤보박스의
아래쪽 화살표 버튼을 눌러 리스트를 나타나게 한 후, EditComboBoxChange를 선택합니다.

이것으로 끝입니다. 이제 서브폼의 어떤 디비에디트/디비콤보박스의 내용을 수정했더라도
무조건 EditComboBoxChange() 함수가 실행되고, 그때마다 Modified는 true로 설정됩니다.
폼을 닫으면서 무언가가 수정되었는가 확인하려면 이 Modified 변수만 확인하면 되겠죠?

간단한 걸 너무 자세히 설명했나... ^^;;;;
그럼 참고하시길...

+ -

관련 글 리스트
1984 여러개의 DBEdit control에서 값이 변경되었는지 체크할때.. 유태희 3232 1999/09/22
1986     Re:여러개의 DBEdit control에서 값이 변경되었는지 체크할때.. 박지훈.임프 3381 1999/09/23
1993         Re:여러개의 DBEdit control에서 값이 변경되었는지.. 유태희 3272 1999/09/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.