Отловить внутри компонента нажатие Ctrl

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Павел Ишенин
постоялец
Сообщения: 475
Зарегистрирован: 24.03.2007 09:16:52

Сообщение Павел Ишенин »

GetKeyState присутствует в LCLIntf и реализована для gtk, gtk2, qt, carbon
VKB
новенький
Сообщения: 33
Зарегистрирован: 07.09.2009 13:57:35

Сообщение VKB »

Павел Ишенин писал(а):GetKeyState присутствует в LCLIntf и реализована для gtk, gtk2, qt, carbon
Меня вполне устраивает GetKeyShiftState. Оно тоже оказалось кроссплатформенное. Проверил на 64-битном линуксе - всё работает.

Код: Выделить всё

procedure TMyPanel.UserInputEvent(Sender: TObject; Msg: Cardinal);
  var
    NewCtrl: boolean;
  begin
    if (Msg = CN_KEYUP) or (Msg = CN_KEYDOWN) then begin
      NewCtrl := ssCtrl in GetKeyShiftState;
      if NewCtrl<>CtrlPressed then begin
        CtrlPressed:=NewCtrl;
        UpdateImages;
      end;
    end;
  end;
Ответить