Главная страница
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.033 c
1-1118896533
Layner
2005-06-16 08:35
2005.07.11
Как автоматизировать процесс создания однотипных форм


6-1112963163
Макс Т.
2005-04-08 16:26
2005.07.11
enter и twebbrowser


14-1118301380
DiamondShark
2005-06-09 11:16
2005.07.11
Хочу писать GINA.


14-1118188805
Crazy_Diman
2005-06-08 04:00
2005.07.11
работа с DrawDrid


3-1117267100
Iova
2005-05-28 11:58
2005.07.11
Как можно получить список справочников в 1С?