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

Пример KeyDown компонента DBNavigator

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

Пример KeyDown компонента DBNavigator

Автор: Dmitry

Шел доомер тихой темной ночью по темной улице вдоль темного, высоко забора. Вдруг услышал с другой улицы крики и выстрелы.... IDCLIP, - перекрестился он и на всякий случай перешел по другую сторону забора... Вдруг очередь просвистела над его головой. IDDQD, - сказал он и поспешил покинуть это место...

Есть некоторое решение для создания "горячих клавиш" в DBNavigator. Установите свойство TForm.KeyPreview в TRUE и напишите обработчик события onkeydown. Примерно так:


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
const
  (* Классный участок кода от Graphical Gnome *)
  KeyBtn: array[TNavigateBtn] of record
    Key: Word;
    Btn: TNavigateBtn;
  end = (
    (Key: VK_F1; Btn: nbFirst),
    (Key: VK_F2; Btn: nbPrior),
    (Key: VK_F3; Btn: nbNext),
    (Key: VK_F4; Btn: nbLast),
    (Key: VK_F5; Btn: nbInsert),
    (Key: VK_F6; Btn: nbDelete),
    (Key: VK_F7; Btn: nbEdit),
    (Key: VK_F8; Btn: nbPost),
    (Key: VK_F9; Btn: nbCancel),
    (Key: VK_F10; Btn: nbRefresh)
    );
var
  i: TNavigateBtn;
begin
  for i := nbFirst to nbRefresh do
    if KeyBtn[i].Key = Key then
    begin
      DBNavigator1.BtnClick(KeyBtn[i].Btn);
      Exit;
    end;
end;

Пример использования свойства TForm.KeyPreview и события OnKeyDown в приложении на Delphi для создания "горячих клавиш" в компоненте DBNavigator.

Код выполняет следующие действия:

  1. Свойство TForm.KeyPreview устанавливается в True, что означает, что форма будет перехватывать все ввод из клавиатуры перед тем, как он достигнет любого контрола на форме.
  2. Обработчик события реализуется для события OnKeyDown формы. Это событие вызывается всякий раз, когда пользователь нажимает кнопку, а форма имеет фокус.
  3. Обработчик события итерирует массив (KeyBtn) для поиска совпадения между нажатой клавишей и определенным горячим клавишем в массиве. Каждый элемент массива представляет собой горячую клавишу, которая имеет два свойства: Key (код виртуальной клавиши) и Btn (соответствующий кнопка в компоненте DBNavigator).
  4. Если совпадение найдено, обработчик события вызывает метод BtnClick компонента DBNavigator для имитации клика на соответствующей кнопке.

Горячие клавиши определены в массиве KeyBtn следующим образом:

const
  KeyBtn: array[TNavigateBtn] of record
    Key: Word;
    Btn: TNavigateBtn;
  end = (
      (Key: VK_F1; Btn: nbFirst),
      (Key: VK_F2; Btn: nbPrior),
      (Key: VK_F3; Btn: nbNext),
      (Key: VK_F4; Btn: nbLast),
      (Key: VK_F5; Btn: nbInsert),
      (Key: VK_F6; Btn: nbDelete),
      (Key: VK_F7; Btn: nbEdit),
      (Key: VK_F8; Btn: nbPost),
      (Key: VK_F9; Btn: nbCancel),
      (Key: VK_F10; Btn: nbRefresh)
   );

Это позволяет пользователю нажимать клавиши F1-F10 для выполнения различных действий в компоненте DBNavigator.

Обратите внимание, что код предполагает, что компонент DBNavigator называется DBNavigator1. Вы должны заменить это на имя вашего компонента, если оно отличается.

В статье описывается пример использования компонента DBNavigator в Delphi, где создается обработчик события onkeydown для привязки горячих клавиш к функциям навигации.


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

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




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


:: Главная :: TDBNavigator ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-05-09 10:40:22/0.0080280303955078/1