[Решено] OnKeyPress и передача Key в неактивный компонент...

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

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

[Решено] OnKeyPress и передача Key в неактивный компонент...

Сообщение leo_bsv » 11.02.2012 00:20:41

Вот собственно сабж: как из обработчика OnKeyPress активного компонента передать нажатую клавишу Key компоненту, который не активен... можно ли это вообще сделать... хочется чтобы неактивный её обработал... :?
Последний раз редактировалось leo_bsv 11.02.2012 23:01:50, всего редактировалось 2 раз(а).
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: OnKeyPress и передача Key в неактивный компонент...

Сообщение sign » 11.02.2012 09:06:14

Ну и вызывайте из активной формы при нажатии некой клавиши нужную обработку из неактивной.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: OnKeyPress и передача Key в неактивный компонент...

Сообщение leo_bsv » 11.02.2012 09:16:34

мне нужна обработка по-умолчанию... а не мой код в обработчике события неактивного компонента...
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: OnKeyPress и передача Key в неактивный компонент...

Сообщение sign » 11.02.2012 15:19:37

Если не секрет, что ваш компонент должен сделать по умолчанию?
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: OnKeyPress и передача Key в неактивный компонент...

Сообщение leo_bsv » 11.02.2012 16:39:16

Да нет особого секрета,.. например Grid должен при нажатии на "стрелку вниз" должен переместить выделение на строку ниже, поверх я отображаю Edit, который в активном состоянии естественно перехватывает все сообщения... да и Grid у меня не Grid, а TTreeListView, если знаете такой... короче нужно что-то типа SendMessage or PostMessage... только вот пока не особо понятно как... или же тупо в реакции Edit'a программно всё это произвести... есть ещё модуль mouseandkeyinput... но что-то у меня пока с ним не срослось...

Добавлено спустя 6 часов 22 минуты 11 секунд:
Re: [Снят] OnKeyPress и передача Key в неактивный компонент...
задача решена штатным обработчиком событий...
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: OnKeyPress и передача Key в неактивный компонент...

Сообщение sign » 12.02.2012 07:52:41

Ну, тогда задача выеденного яйца не стоит.
Ставите у формы режим KeyPreview=True.
В обработчике формы пишете только реакцию на клавиши управления.
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Edit1: TEdit;
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { private declarations }
    procedure NextItem(Count: Integer);
    procedure PrevItem(Count: Integer);
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.NextItem(Count: Integer);
begin
  if (ListBox1.ItemIndex + Count) < ListBox1.Items.Count then ListBox1.ItemIndex := ListBox1.ItemIndex + Count
  else ListBox1.ItemIndex := ListBox1.Items.Count-1;
end;

procedure TForm1.PrevItem(Count: Integer);
begin
  if (ListBox1.ItemIndex - Count) >= 0 then ListBox1.ItemIndex := ListBox1.ItemIndex - Count
  else ListBox1.ItemIndex := 0;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  case Key of
    27: Close;
    38: begin PrevItem(1); Key := 0; end;
    40: begin NextItem(1); key := 0; end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ActiveControl := Edit1;
  ListBox1.ItemIndex := 0;
end;

end.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 250

Рейтинг@Mail.ru
cron