|
디비그리드에서 키 이벤트 제어하는 방법을 알고 싶습니다.
아래 소스를 보시면 아시겠지만 키 다운 이벤트의 INSERT키 이벤트 때문에 제가 원하지 않는곳에 레코드가
추가 되는것을 화면에 않나타나게 막았습니다.
그런데 문제가 생겼습니다.
INSERT키를 3-4초가량 누르고 있다가 작업을 진행하면 그이후로 그리드가 제대로 작동하지 않습니다.
새로운 레코드가 추가 되어도 바로 나타나지 않고 다음 레코드가 추가 되어야 비로소 화면에 뿌려집니다.
도대체 정확한 원인을 모르겠습니다.
여러 고수님들의 많은 조언 부탁드리겠습니다.
void __fastcall TWrkForm2::DBCtrlGrid1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
switch(Key)
{
case VK_RETURN:
break;
case VK_DELETE:
break;
case VK_ESCAPE:
break;
case VK_INSERT:
Table1->DisableControls();
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TWrkForm2::DBCtrlGrid1KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
switch(Key)
{
case VK_RETURN:
break;
case VK_DELETE:
if(Application->MessageBox("레코드를 삭제하시겠습니까?","메세지",
MB_OKCANCEL|MB_ICONQUESTION)==IDOK)
{
Table1->Delete();
}
break;
case VK_ESCAPE:
break;
case VK_INSERT:
if(check==1 || check==2)
{
if(Table1->RecordCount < 1) count=0;
else
{
Table1->Last();
count=Table1->FieldByName("numbers")->AsInteger;
}
count++;
if(count < 99)
{
InsCheck=true;
DataSource1->Enabled=false;
Table1->Last();
Table1->Append();
DataSource1->Enabled=true;
Numbers->Caption=FormatFloat("00",count);
Account->SetFocus();
}
else
{
ShowMessage("순번은 99까지 작성가능합니다");
}
}
break;
}
Table1->EnableControls();
}
//---------------------------------------------------------------------------
|