Як видаляти рядки з dbgrid кнопкою delete

Як видаляти рядки з DBGrid кнопкою Delete?

Підставляєш код який-небудь кнопки - працює.
Але натискання кнопок-стрілок, Page Up, Page Down, Home, End, і найголовніше, Delete, навіть не обробляється (тобто вони до key не належать?)

Ось, такий у мене випадок, гляньте, будьте ласкаві:

procedure TForm1.DBGrid3KeyPress (Sender: TObject; var Key: Char);
begin
if key = "13" then // enter для прикладу
ADOTable3.Delete;
DBGrid3.DataSource.DataSet.Delete;
end;

(Тобто вони до key не належать?)

procedure TForm1.DBGrid3KeyPress (Sender: TObject; var Key: Char);

Вони до Char не належать


> ADOTable3.Delete;
> DBGrid3.DataSource.DataSet.Delete;
.
А два рази то видаляти навіщо?
А в гріді Ctrl + Delete видаляти має (не впевнений).

Перше - це дозвіл для бази даних на видалення (щось на зразок).

Друге - власне видалення з таблиці (і з бази даних)

Так, Ctrl + Delete має видаляти (ще не перевіряв)

А все-таки, як вважати натискання кнопки Del?

> А все-таки, як вважати натискання кнопки Del?
по onKeyDown.

> А все-таки, як вважати натискання кнопки Del?

Викинути нафигатор нафіг і використовувати власні кнопки (а краще в комбінації TActionList + TActions з призначеними клавішами)

Взагалі ж юзати для видалення Del не рекомендується, тому що тоді можна буде при редагуванні гріда видаляти символи цією клавішею.

Оброблювач OnKeyDown не рекомендується використовувати не надто досвідченим, по крайней мере в гріді. Може привести до неадекватної реакції багатьох стандартних фичей гріда.

Розрізняємо Дані (В загальному випадку TDataSet, в даному - TADOTable) і Відображення даних (TDataSource + TDBGrid)
Операції над даними (видалення, вставка, зміна) виконуємо через датасета. Все, що пов'язано з відображенням (отрисовка, фокус і т.д.), юзаем через грід. Чому. Уважно читаємо [2]


> Перше - це дозвіл для бази даних на видалення (щось
> Начебто).
> Друге - власне видалення з таблиці (і з бази даних)
- який дозвіл то. Ти видаляєш поспіль два записи цим кодом.

Пам'ять: 0.73 MB
Час: 0.067 c