[Delphi] DBGridの自動レコード追加機能を抑止する

この機能を実現するには2つの方法があります。
1つはTable側で新規レコードを追加させないようにする方法 と DBGrid側でチェックする方法があります。
本当はDBGrid本体で新規レコード行を表示しないようできると便利だと思うのですが、 コンポーネントを修正しないとだめなので簡単にできる方法を紹介します。

テーブル側で処理する方法

procedure TForm1.Tbable1BeforeInsert(DataSet: TDataset);
begin
  Abort;
end;

DBGrid で処理する方法

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  with DBGrid1.DataSource.DataSet do
  begin
    if (Key = VK_DOWN) then
    begin
      DisableControls;
      Next;
      if (EOF) then Key := 0
      else Prior;
      EnableControls;
    end;
  end;
end;

コメント (0件)


くろねこ研究所
https://www.blackcat.xyz/article.php/ProgramingFAQ_del0009