1. Insert 를 Append로 바꾸기
TDBNavigator 콤포넌트의 Insert 버튼은 DataSet.Insert 메소드를 실행하여 현재 레코드 사이에 Insert 한다.
그러나 실무에서는 맨 마지막 레코드 다음에 추가(Append) 되는 것이 훨씬 자연스러운 경우가 많다.
이럴 때는 다음 코드처럼 TDBNavigator 의 BeforeAction 이벤트에서 Insert 메소드를 Append 메소드로 바꾸면 된다.
procedure TForm1.DBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
begin
// Insert 버튼 누르면 Append 되게
if Button = nbInsert then
begin
TDBNavigator(Sender).DataSource.DataSet.Append;
Abort;
end;
end;
2. 마지막 레코드에서 방향키 아래로 눌렀을 때 입력 모드되지 않게
다음 코드처럼 TDBGrid의 onKeyUp 이벤트에 작성하면 마지막 레코드에서 방향키 아래로 누른 것이 취소된다.
procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
//마지막 레코드에서 KeyDown 방향키 눌렀을때 Insert가 안되게
if Key = VK_DOWN then
begin
if ADOTable1.Eof then
ADOTable1.Cancel;
end;
end;
(주의 버그발견) 이 코드도 방향키를 아래로 계속누르고 있으면 작동되지 않는다 . ㅠㅠ
3. TTable 저장시 에러 발생할 때 에러 무시하는 방법
다음 처럼 OnPostError 이벤트에서 코드를 작성하면 에러 메시지 안 나오고 입력모드나 수정모드를 취소할 수 있다.
procedure TfrmHw100.tbHw102PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);
begin
Action := daAbort;
Dataset.Cancel;
end;
'델파이' 카테고리의 다른 글
Table 과 직접 연결된 TDBGrid에서 값 수정후 엔터시 깔끔한 처리 (0) | 2016.09.10 |
---|---|
템플릿 Templates 이용 코드 자동화 Ctrl + j (0) | 2016.09.03 |
델파이 VBA 엑셀 이미지 삽입 방법 2가지, Shapes.AddPicture, Pictures.Insert (0) | 2016.08.26 |
와일드카드(*) 사용한 일괄 파일삭제 (0) | 2016.06.08 |
PDF 파일 만들기 (엑셀 OleObject 이용) (0) | 2016.05.20 |