![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как добавить к 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]отлавливай их для формы, и если координаты мыши внутри панели обрабатывайю...