Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Избавить TDBGrid от автоматического добавления новой записи

Delphi , Компоненты и Классы , TDBGrid

Избавить TDBGrid от автоматического добавления новой записи

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{How to stop the dbgrid control from auto-appending a new entry when you move 
down after the last record in a table. 
It creates a new blank line / record in the table. Can this be stopped?}

 {A: Add to your TTables's "BeforeInsert"  event the following line:}

 procedure TForm1.Tbable1BeforeInsert(DataSet: TDataSet);
 begin
   Abort;  {<<---this line}
 end;

 {A: It traps the down key and checks for end-of-file.}

 procedure TForm8.DBGrid1KeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
 begin
   if (Key = VK_DOWN) then
   begin
     TTable1.DisableControls;
     TTable1Next;
     if TTable1.EOF then
       Key := 0
     else
       TTable1.Prior;
     TTable1.EnableControls;
   end;
 end;

Задача заключается в предотвращении автоматического добавления новой записи в TDBGrid при перемещении вниз после последней записи в таблице.

Предлагаются два подхода для решения этой задачи:

Метод 1: Использование события "BeforeInsert"

В этом методе вы добавляете процедуру к событию "BeforeInsert" компонента TTable. Это событие вызывается перед вставкой новой записи в таблицу. Добавление команды Abort в конце процедуры эффективно отменяет вставку новой записи.

Пример кода:

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

Метод 2: Использование события "KeyDown"

В этом методе вы добавляете процедуру к событию "KeyDown" компонента DBGrid. Это событие вызывается при нажатии клавиши в гриде.

Код проверяет, была ли нажата клавиша вниз (VK_DOWN). Если да, то код отключает управляемые элементы таблицы, перемещается к следующей записи с помощью TTable1.Next и проверяет, достигнута ли конец файла (EOF). Если EOF истинно, то код устанавливает переменную Key в 0, эффективно отменяя событие нажатия клавиши.

Пример кода:

procedure TForm8.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (Key = VK_DOWN) then
  begin
    TTable1.DisableControls;
    TTable1.Next;
    if TTable1.EOF then
      Key := 0
    else
      TTable1.Prior;
    TTable1.EnableControls;
  end;
end;

Оба метода могут быть использованы для предотвращения автоматического добавления новой записи при перемещении вниз после последней записи в таблице.

Примечание: эти решения предполагают, что вы хотите остановить поведение автоподстановки только для клавиши вниз. Если вам нужно отменить это поведение для всех клавиш, вам может потребоваться изменение кода соответствующим образом.

Избавить TDBGrid от автоматического добавления новой записи можно, добавив обработчик события 'BeforeInsert' для TTables и вызвав процедуру Abort, или используя обработчик события 'KeyDown' для DBGrid и проверять, находится ли курсор в конце файла.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TDBGrid ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:33:16/0.022593021392822/1