Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

Как добавить к 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.04 c
14-1118214604
Ozone
2005-06-08 11:10
2005.07.11
Symantec GHost 7.5.0.335


3-1117443924
Сатир
2005-05-30 13:05
2005.07.11
Генерация SQL-скриптаизменений в базе


14-1118033774
kot andrei
2005-06-06 08:56
2005.07.11
Asimo


1-1118321226
Eugene74
2005-06-09 16:47
2005.07.11
Отображение begin .. end другим цветом (D2005)


1-1119362054
dfkghasdlkgjh
2005-06-21 17:54
2005.07.11
событе на открытие/закрытие проги.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский