Як видаляти рядки з 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