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

Как отучить TDBGrid от автодобавления новой записи

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

Как отучить TDBGrid от автодобавления новой записи

Внимание! Осторожно - вирус! Если вы получите по почте мессадж, где в качестве subject стоит "повестка", а отправителем числится "военкомат", ни в коем случае не открывайте его. Немедленно делетируйте его вместе с конвертом. Внутри него может оказаться опаснейший вирус, полностью лишающий вас возможности работать на вашем компьютере. Форвардируйте это сообщение всем, с кем вы ведете переписку.

Добавьте в обработчик события вашего TTable "BeforeInsert" следующую строку:


procedure TForm1.Tbable1BeforeInsert(DataSet: TDataset);
begin
  Abort;  // <<---эту строчку
end;

Осуществляем перехват нажатия клавиши и проверку на конец файла (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, когда пользователь нажимает Enter или кликнет на пустую строку. Предлагаемые кодовые фрагменты направлены на достижение этого.

В первом кодовом фрагменте они добавляют обработчик события BeforeInsert для TTable. Это событие происходит перед вставкой новой записи в таблицу. Установка Abort; в этом обработчике эффективно предотвращает вставку новой записи.

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

Вот некоторые предложения:

  1. Вы можете использовать TDBGrid1.Options := TDBGrid1.Options - [dgCanInsert] в событии OnCreate вашей формы для предотвращения добавления новых записей вообще.
  2. Альтернативно, вы могли бы установить TTable1.InsertAllowed := False или TTable1.EditAllowed := False для отключения добавления или редактирования записей соответственно.
  3. В вашем процедуре DBGrid1KeyDown вам может потребоваться добавить обработку ошибок для случаев, когда пользователь нажимает другие клавиши, кроме VK_DOWN.

Обратите внимание, что эти предложения - это альтернативы и не обязательно улучшения над предлагаемыми кодовыми фрагментами. Это зависит от вашего конкретного требования и сценария использования.

Статья описывает способы отучения компонента TDBGrid от автодобавления новой записи в таблице, а также предупреждает о вредоносном вирусе и дает рекомендации по безопасности при получении неизвестных электронных сообщений.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 16:13:07/0.0052480697631836/1