Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Как добавить к TPanel свойства OnKeyPress, OnKeyUp, OnKeyDown ?   Найти похожие ветки 

 
Вин2   (2005-06-13 01:47) [0]

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


 
iskatel ©   (2005-06-13 03:05) [1]

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


 
jack128 ©   (2005-06-13 03:25) [2]

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

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

по сабжу:

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:27) [3]

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


 
jack128 ©   (2005-06-13 03:47) [4]

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

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


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


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

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


 
jack128 ©   (2005-06-13 16:49) [6]

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

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


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

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


type
 TPanelCrack = class(TPanel);

.....

 TPanelCrack(RealPanel).OnKeyPress := PanelKeyPressHandler;


Что такое RealPanel?

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


 
Shuric ©   (2005-06-13 20:18) [8]

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


 
jack128 ©   (2005-06-13 21:15) [9]

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.


 
ЮЮ ©   (2005-06-14 03:16) [10]

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

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



Страницы: 1 вся ветка

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
5-1086668430
Gelios
2004-06-08 08:20
2005.07.11
Редактор свойств/компонент а-ла Fields Editor


3-1117527568
Леонид
2005-05-31 12:19
2005.07.11
Удаление записи на которой находится курсор


3-1117451733
evg00
2005-05-30 15:15
2005.07.11
Ошибка при редактировании


10-1095245277
Pumpa
2004-09-15 14:47
2005.07.11
Это кто? PortableServer_POA::AdapterNonExistent


8-1111160885
zhongguoren
2005-03-18 18:48
2005.07.11
tstringlist.create