Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как добавить к TPanel свойства OnKeyPress, OnKeyUp, OnKeyDown ? [D7]


Вин2 ©   (2005-06-13 01:47:00) 

У панели есть TabStop, и значит можно перевести на неё фокус. А как отлавливать нажатия клавиш ? А то без этого смысл теряется.


ЮЮ   (2005-06-14 03:16:00) [1]

>У панели есть TabStop, и значит можно перевести на неё фокус.

Фокус ввода на панель? Полагаешь, это возможно? Можно передать фокус компоненту ввода на панели!!! Панель просто выступает элементом группировки.


jack128   (2005-06-13 21:15:00) [2]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls;

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   Edit1: TEdit;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
   procedure Panel1KeyPress(Sender: TObject; var Key: Char);
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

type
 TPanelCrack = class(TPanel);

procedure TForm1.FormCreate(Sender: TObject);
begin
 TPanelCrack(Panel1).OnKeyPress := Panel1KeyPress;
end;

procedure TForm1.Panel1KeyPress(Sender: TObject; var Key: Char);
begin
 ShowMessage(Key);
end;

end.


Shuric   (2005-06-13 20:18:00) [3]

Зачем так сложно :) В обработчике сообщения, если HWND панели - проверяем L, W параметры.


s11   (2005-06-13 20:09:00) [4]

to jack128:
а "второй вариант" можно поподробнее?


type
 TPanelCrack = class(TPanel);

.....

 TPanelCrack(RealPanel).OnKeyPress := PanelKeyPressHandler;


Что такое RealPanel?

Вместо ..... что писать? Вот это:
published
property OnKeyPress;
property OnKeyDown;
property OnKeyUp;  
?
Но это тогда будет то же самое, что и в варианте 1?


jack128   (2005-06-13 16:49:00) [5]

Вин2   (13.06.05 6:24) [5]
А как её создать ? Это нужно новый компонент что ли написать ?

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


Вин2   (2005-06-13 06:24:00) [6]


> и создовай панель класса TMyPanel, а не панель.

А как её создать ? Это нужно новый компонент что ли написать ?


jack128   (2005-06-13 03:47:00) [7]

iskatel ©   (13.06.05 3:27) [3]
ну тогда поправка "если фокус на панели"

угу. И если KeyPreview выставлено в True?


iskatel   (2005-06-13 03:27:00) [8]

нда, сплю )))
ну тогда поправка "если фокус на панели"


jack128   (2005-06-13 03:25:00) [9]

Вин2   (13.06.05 1:47)
отлавливай их для формы, и если координаты мыши внутри панели обрабатывайю

а какое отнашение имееют события On KeyXXX к мыши??

по сабжу:

TMyPanel = class(TPanel)
published
 property OnKeyPress;
 property OnKeyDown;
 property OnKeyUp;  
end;


и создовай панель класса TMyPanel, а не панель.

Или можно сделать так

type
 TPanelCrack = class(TPanel);

.....

 TPanelCrack(RealPanel).OnKeyPress := PanelKeyPressHandler;


iskatel   (2005-06-13 03:05:00) [10]

отлавливай их для формы, и если координаты мыши внутри панели обрабатывайю...


Наверх

Титульная страница Поиск, карта сайта Написать письмо