Избавить TDBGrid от автоматического добавления новой записиDelphi , Компоненты и Классы , TDBGridИзбавить TDBGrid от автоматического добавления новой записи
Оформил: DeeCo {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 в конце процедуры эффективно отменяет вставку новой записи. Пример кода:
Метод 2: Использование события "KeyDown" В этом методе вы добавляете процедуру к событию "KeyDown" компонента DBGrid. Это событие вызывается при нажатии клавиши в гриде. Код проверяет, была ли нажата клавиша вниз (VK_DOWN). Если да, то код отключает управляемые элементы таблицы, перемещается к следующей записи с помощью TTable1.Next и проверяет, достигнута ли конец файла (EOF). Если EOF истинно, то код устанавливает переменную Key в 0, эффективно отменяя событие нажатия клавиши. Пример кода:
Оба метода могут быть использованы для предотвращения автоматического добавления новой записи при перемещении вниз после последней записи в таблице. Примечание: эти решения предполагают, что вы хотите остановить поведение автоподстановки только для клавиши вниз. Если вам нужно отменить это поведение для всех клавиш, вам может потребоваться изменение кода соответствующим образом. Избавить TDBGrid от автоматического добавления новой записи можно, добавив обработчик события 'BeforeInsert' для TTables и вызвав процедуру Abort, или используя обработчик события 'KeyDown' для DBGrid и проверять, находится ли курсор в конце файла. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |