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
[19308] Re:Re:Re:Re:Re:Re:DBGrid에 대한 질문입니다.---90% 정도 해결^*^...
시후 [] 1493 읽음    2002-06-12 14:45
key = 0을 빼면 입력은 되는데 소리가 나거든요..소리를 제거하는 방법이 있나요.?
그리고 DB는 이제 정상적으로 불러 옵니다.하지만 폼을 로드시켜서 DB를 열면 계속해서
Del1.MB, Del2.MB...등등 파일들이 생기거든요 근데 이런 파일이 계속생기면 Key Violation Error가 생기거든요. 실제 코딩되어 있는 샘플을 올릴게요..테이블의 Active 속성은 true로 되어 있습니다.

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "AdminUnit.h"
//#include "DataModuleUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
int CheckBoxSelect;     // 체크박스 선택 구분
//---------------------------------------------------------------------------
__fastcall TAdminForm::TAdminForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::FormClose(TObject *Sender,
      TCloseAction &Action)
{
        Action = caFree;       
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::FormCreate(TObject *Sender)
{
        Panel1->Color  = (TColor)RGB(168, 182, 219);
        Panel2->Color  = (TColor)RGB(168, 182, 219);
        Panel3->Color  = (TColor)RGB(168, 182, 219);
        Panel4->Color  = (TColor)RGB(168, 182, 219);
        Panel5->Color  = (TColor)RGB(168, 182, 219);
        Panel6->Color  = (TColor)RGB(168, 182, 219);
        Panel7->Color  = (TColor)RGB(168, 182, 219);
        Panel8->Color  = (TColor)RGB(168, 182, 219);
        Panel9->Color  = (TColor)RGB(168, 182, 219);
        Panel10->Color = (TColor)RGB(168, 182, 219);
        Panel11->Color = (TColor)RGB(168, 182, 219);
        Panel12->Color = (TColor)RGB(168, 182, 219);
        Panel13->Color = (TColor)RGB(168, 182, 219);
        Panel14->Color = (TColor)RGB(168, 182, 219);

        Edit1->Text = "";
        Edit2->Text = "";
        Edit3->Text = "";
        Edit4->Text = "";
        Edit5->Text = "";
        Edit6->Text = "";
        Edit7->Text = "";
        Edit8->Text = "";
        ComboBox1->Text = "";

        GroupBox1->Enabled = false;
        GroupBox2->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        if(Key == VK_RETURN)
        {
                if(GetKeyState(VK_SHIFT) < 0)
                {
                        SelectNext(ActiveControl, false, true);
                }
                else
                {
                        SelectNext(ActiveControl, true, true);
                }
        }
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::FormKeyPress(TObject *Sender, char &Key)
{
        //Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::FormActivate(TObject *Sender)
{
        CheckBox1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::SpeedButton1Click(TObject *Sender)
{
int cCnt;

        if(CheckBox1->Checked == true || CheckBox2->Checked == true)
        {
                if(CheckBox1->Checked == true && CheckBox2->Checked == true)
                {
                        Application->MessageBox("검색 조건이 하나 이상 선택되었습니다.", "타비소프트", MB_OK|MB_ICONSTOP);
                }
                else
                {
                        if(CheckBox1->Checked == true)
                        {
                                //---------- 데이타 모듈 동적 생성
                                //DM = new TDM(Application);
                                DBGrid1->DataSource = CMgtDS;

                                //---------- DBGrid 필드 사이틀 정렬 및 칼라 지정
                                for(cCnt = 0 ; cCnt < DBGrid1->FieldCount ; cCnt++)
                                {
                                        DBGrid1->Columns->Items[cCnt]->Title->Alignment = taCenter;
                                        DBGrid1->Columns->Items[cCnt]->Title->Color = (TColor)RGB(245, 243, 178);
                                }

                                //---------- 필드 네임 동적 변경
                                DBGrid1->Columns->Items[0]->Title->Caption = "사업자번호";
                                DBGrid1->Columns->Items[1]->Title->Caption = "업 체 명";
                                DBGrid1->Columns->Items[2]->Title->Caption = "대 표 자";
                                DBGrid1->Columns->Items[3]->Title->Caption = "주    소";
                                DBGrid1->Columns->Items[4]->Title->Caption = "업    종";
                                DBGrid1->Columns->Items[5]->Title->Caption = "전화번호";
                                DBGrid1->Columns->Items[6]->Title->Caption = "팩스번호";
                        }
                        else if(CheckBox2->Checked == true)
                        {
                                //---------- 데이타 모듈 동적 생성
                                //DM = new TDM(Application);
                                DBGrid1->DataSource = MMgtDS;

                                //---------- DBGrid 필드 사이틀 정렬 및 칼라 지정
                                for(cCnt = 0 ; cCnt < DBGrid1->FieldCount ; cCnt++)
                                {
                                        DBGrid1->Columns->Items[cCnt]->Title->Alignment = taCenter;
                                        DBGrid1->Columns->Items[cCnt]->Title->Color = (TColor)RGB(245, 243, 178);
                                }

                                //---------- 필드 네임 동적 변경
                                DBGrid1->Columns->Items[0]->Title->Caption = "아 이 디";
                                DBGrid1->Columns->Items[1]->Title->Caption = "패스워드";
                                DBGrid1->Columns->Items[2]->Title->Caption = "이    름";
                                DBGrid1->Columns->Items[3]->Title->Caption = "주    소";
                                DBGrid1->Columns->Items[4]->Title->Caption = "자택전화";
                                DBGrid1->Columns->Items[5]->Title->Caption = "이동전화";
                                DBGrid1->Columns->Items[6]->Title->Caption = "관리구분";
                        }
                }
        }
        else
        {
                Application->MessageBox("검색 조건을 선택하세요!", "타비소프트", MB_OK|MB_ICONQUESTION);
        }
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::CheckBox1Click(TObject *Sender)
{
        if(CheckBox1->Checked == true)
        {
                GroupBox1->Enabled = true;
                MaskEdit1->SetFocus();
        }
        else GroupBox1->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::CheckBox2Click(TObject *Sender)
{
        if(CheckBox2->Checked == true)
        {
                GroupBox2->Enabled = true;
                Edit5->SetFocus();
        }
        else GroupBox2->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::DBGrid1CellClick(TColumn *Column)
{
/*
        if(CheckBox1->Checked == true)
        {
                MaskEdit1->Text = CMgTable->FieldByName("MCpNumber"   )->AsString;   // 사업자번호
                Edit1->Text     = CMgTable->FieldByName("MCpName"     )->AsString;   // 업 체 명
                Edit2->Text     = CMgTable->FieldByName("MCpChife"    )->AsString;   // 대 표 자
                Edit3->Text     = CMgTable->FieldByName("MCpAddress"  )->AsString;   // 주    소
                Edit4->Text     = CMgTable->FieldByName("MCpInduType" )->AsString;   // 업    종
                MaskEdit2->Text = CMgTable->FieldByName("MCpTelNumber")->AsString;   // 전화번호
                MaskEdit3->Text = CMgTable->FieldByName("MCpFaxNumber")->AsString;   // 팩스번호
        }
        else if(CheckBox2->Checked == true)
        {
                Edit5->Text     = MMgTable->FieldByName("MCpID"      )->AsString;    // ID
                Edit6->Text     = MMgTable->FieldByName("MCpPASS"    )->AsString;    // PASS
                Edit7->Text     = MMgTable->FieldByName("MCpName"    )->AsString;    // 이    름
                Edit8->Text     = MMgTable->FieldByName("MCpAddress" )->AsString;    // 주    소
                MaskEdit4->Text = MMgTable->FieldByName("MCpHouseTel")->AsString;    // 자택전화
                MaskEdit5->Text = MMgTable->FieldByName("MCpHandyTel")->AsString;    // 이동전화

                if((MMgTable->FieldByName("MCpAdmin")->AsBoolean) == true)           // 유저구분
                {
                        ComboBox1->ItemIndex = 0;
                }
                else
                {
                        ComboBox1->ItemIndex = 1;
                }
        }
*/
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::SpeedButton6Click(TObject *Sender)
{
        Close();
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::MMgTableAfterScroll(TDataSet *DataSet)
{
        if(CheckBox2->Checked == true)
        {
                Edit5->Text     = MMgTable->FieldByName("MCpID"      )->AsString;    // ID
                Edit6->Text     = MMgTable->FieldByName("MCpPASS"    )->AsString;    // PASS
                Edit7->Text     = MMgTable->FieldByName("MCpName"    )->AsString;    // 이    름
                Edit8->Text     = MMgTable->FieldByName("MCpAddress" )->AsString;    // 주    소
                MaskEdit4->Text = MMgTable->FieldByName("MCpHouseTel")->AsString;    // 자택전화
                MaskEdit5->Text = MMgTable->FieldByName("MCpHandyTel")->AsString;    // 이동전화

                if((MMgTable->FieldByName("MCpAdmin")->AsBoolean) == true)           // 유저구분
                {
                        ComboBox1->ItemIndex = 0;
                }
                else
                {
                        ComboBox1->ItemIndex = 1;
                }
        }
}
//---------------------------------------------------------------------------
void __fastcall TAdminForm::CMgTableAfterScroll(TDataSet *DataSet)
{
        if(CheckBox1->Checked == true)
        {
                MaskEdit1->Text = CMgTable->FieldByName("MCpNumber"   )->AsString;   // 사업자번호
                Edit1->Text     = CMgTable->FieldByName("MCpName"     )->AsString;   // 업 체 명
                Edit2->Text     = CMgTable->FieldByName("MCpChife"    )->AsString;   // 대 표 자
                Edit3->Text     = CMgTable->FieldByName("MCpAddress"  )->AsString;   // 주    소
                Edit4->Text     = CMgTable->FieldByName("MCpInduType" )->AsString;   // 업    종
                MaskEdit2->Text = CMgTable->FieldByName("MCpTelNumber")->AsString;   // 전화번호
                MaskEdit3->Text = CMgTable->FieldByName("MCpFaxNumber")->AsString;   // 팩스번호
        }
}
//---------------------------------------------------------------------------

조준회 님이 쓰신 글 :
: 두번째 것은 제가 쓰는 방법과 약간 다르지만..
: 문제는 없을것으로 보입니다.
:
: key = 0만 빼고요..
:
: key =0 을 삭제하세요. 그럼 아마 입력은 될겁니다.
:
: 시후 님이 쓰신 글 :
: : 첫번째는요 DataModule을 써서 한곳에서 제어를 했는데 Dataset의 AfterScroll에서 여러 데이블을 제어하니 에로가 나더라구여 그래서 일단 DataModule을 프로젝트에서 제외시키고 폼위에 Dataset 과 Table을 올려놓구 각 폼의 Dataset의 AfterScroll마다 제각각 코딩을 했습니다.(가장 무식한 방법) 그랬더니 잘 돌아가네여.근데 프로젝트 폴더에 Del1.MB와 같은 파일들이 생성되네여..
: :
: : 두번째 에디터는 imDontCare모드로 되어 있는데도 안되네염..음..다른 어디서 문제가 있는 걸까요.
: : MID 어플리케이션이거든요..그리도 에디트를 할려는 곳은 Child 폼이구여 폼위에 판넬있구 판넬위에 각종 에디터들이 올려져 있거든요..혹시나 프로젝트를 닫구 임의로 테스트 폼을 만들어 에디터를 올려놓구 해보았거든요. 잘되더라구여 그래서 프로퍼티를 하나씩 적어서 프로젝트의 에디트 프로퍼티와 비교를 해봤는데 틀린게 없더라구여..제가 한거라군 Enter키를 Tab키 처럼 쓸려구 코드를 추가한것 밖에는 없는 것 같은데..
: :
: : void __fastcall TSwListForm::FormKeyDown(TObject *Sender, WORD &Key,
: :       TShiftState Shift)
: : {
: :         if(Key == VK_RETURN)
: :         {
: :                 if(GetKeyState(VK_SHIFT) < 0)
: :                 {
: :                         SelectNext(ActiveControl, false, true);
: :                 }
: :                 else
: :                 {
: :                         SelectNext(ActiveControl, true, true);
: :                 }
: :         }
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TSwListForm::FormKeyPress(TObject *Sender, char &Key)
: : {
: :         Key = 0;
: : }
: :
: : 위의 코드에 문제가 있나요..책에서 제어하는 부분을 카피해서 썻거든요..아님 다른 제어 컨트롤이 있는지 ...
: :
: : 조준회 님이 쓰신 글 :
: : : 첫번째 문제에 대해서 어떻게 해결을 하신거죠..
: : : 제가 제시한건 2가지 방법인데.. 어떤 방법으로 하신건지..
: : : 설명이 없네요..
: : :
: : : 두번째는 imdontcare가 맞을겁니다.
: : :
: : :
: : : 시후 님이 쓰신 글 :
: : : : 감사합니다.제대로 움직이네여..그런데 죄송하지만 한가지더 마우스 중간 휠을 움직이면 포커스는 이동하는데 레코드는 이동하지 않네요.. 이건 어디서 제어를 해야 하나여..
: : : :
: : : : 에디트 모드는여 imDontCare모드거든요..이게 맞는거 아닌가여..
: : : :
: : : : 
: : : : 조준회 님이 쓰신 글 :
: : : : : 첫번째 문제
: : : : :  이건 DBEdit를 쓰면 안되는건가요?. DBEdit를 DBGrid와 같은 Dataset에 연결 시키면 그런
: : : : :  고민을 할 필요가 없습니다.(자동으로 되니까요..)
: : : : :  꼭 EditBox를 써야 한다면..Dataset의 AfterScroll에 넣으면 될것 같습니다.
: : : : :
: : : : : 두번째 문제
: : : : :  아마도 IMEMODE를 변경시키신것 같군요..
: : : : :  이걸 변경해 보세요..
: : : : :
: : : : : 시후 님이 쓰신 글 :
: : : : : : 스트링그리드에 보면 A Col, A Row 가 있어서 스트링그리드에 있는 값을 임의의 에디트같은 곳에 값을 정확히 뿌려 주잖아여.
: : : : : : 근데 DBGrid에서 마우스로 셀을 선택하면 에디트에 값은 뿌려주는데, 키보드의 화살표키를 움직이면 DBGrid의 레코드의 셀 값이 에디트에 뿌려지는게 아니라, 다음 레코드나 이전 레코드의 셀 값이 뿌려 지거든요. 어디서 이걸 제어해야 하나요..고수님들 부탁드립니다.
: : : : : :
: : : : : : 그리고 아주 초보 질문 하나만 할게요..(이건 질문하기 무지 쪽팔리지만)
: : : : : : 에디트에서요 값을 입력을 받아야 하는데 처음에는 에디드에서 값을 입력을 잘 받더니 뭘 잘못 코딩했는지 에디트에서 값을 입력 받지도 않고 한/영 전환키를 누르면 자음이든 모음이든 한자만 들어가고 다른 글자는 입력이 안되네요..부탁드립니다..
: : : : : : 오늘도 즐프하세요..감사합니다...꾸벅

+ -

관련 글 리스트
19293 DBGrid에 대한 질문입니다.고수님들 부탁해요..대~~한민국 짝짝짝~짝짝, 오~~필승 코리아^*^ 시후 887 2002/06/12
19295     Re:DBGrid에 대한 질문입니다.고수님들 부탁해요..대~~한민국 짝짝짝~짝짝, 오~~필승 코리아^*^ 조준회 899 2002/06/12
19298         Re:Re:DBGrid에 대한 질문입니다.---반만 해결^*^...다시 한번 봐주세염 시후 983 2002/06/12
19302             Re:Re:Re:DBGrid에 대한 질문입니다.---반만 해결^*^...다시 한번 봐주세염 조준회 963 2002/06/12
19303                 Re:Re:Re:Re:DBGrid에 대한 질문입니다.---아직도 반만 해결^*^... 시후 917 2002/06/12
19305                     Re:Re:Re:Re:Re:DBGrid에 대한 질문입니다.---아직도 반만 해결^*^... 조준회 942 2002/06/12
19308                         Re:Re:Re:Re:Re:Re:DBGrid에 대한 질문입니다.---90% 정도 해결^*^... 시후 1493 2002/06/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.