Главная страница
    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.46 MB
Время: 0.035 c
14-1118726011
Ega23
2005-06-14 09:13
2005.07.11
С днём рождения! 14 июня


6-1112928016
Veles
2005-04-08 06:40
2005.07.11
Скорость поиска компьютера по IP


9-1111774779
$SerG$
2005-03-25 21:19
2005.07.11
Ищу теорию


14-1118258843
Ломброзо
2005-06-08 23:27
2005.07.11
Нумерация в MS Word


11-1098430854
Владимир Кладов
2004-10-22 11:40
2005.07.11
Fast Type Expert





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский