Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Передать обработку событий форме.


kashey ©   (20.08.18 21:59

До определенного момента в программе на главной форме не было компонентов, которые могли бы получить фокус. Пришлось добавить TreeView, который сразу же получает фокус. Как по клику на форме вернуть ей фокус? Отваливается сразу все события которые я повесил на формы:
OnMouseWheelDown
 OnMouseWheelUp
 OnKeyPress
 OnKeyDown
 OnKeyUp

Можно было бы взять любой другой TWinControl и ему передавать фокус, но например TPanel не имеет все эти 5 событий. Помогите выкрутится.


kilkennycat ©   (20.08.18 22:18[1]

поправь анкету. там почему-то высшее образование стоит.
(Ща Керк скажет, что зло и хамство )) )


xayam ©   (20.08.18 22:25[2]

Keypreview=true


xayam ©   (20.08.18 22:33[3]

Mouse Equivalent of Key Preview?
http://www.delphigroups.info/2/c6/513110.html


aka ©   (21.08.18 11:07[4]

Ну а такое зачудить, что мешает:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls, Mask, ComCtrls;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormActivate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

 TMyPanel = class(TCustomPanel)
 protected
   procedure WMGetDlgCode(var Msg: TMessage); message WM_GETDLGCODE;
   procedure KeyDown(var Key: Word; Shift: TShiftState); override;
   procedure KeyUp(var Key: Word; Shift: TShiftState); override;
   procedure KeyPress(var Key: Char); override;
   function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
   function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override;
 end;

var
 Form1: TForm1;
 MyPanel: TMyPanel;
 
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 MyPanel := TMyPanel.Create(Self);
 MyPanel.Parent := Self;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
 MyPanel.SetFocus;
end;

procedure TMainPanel.WMGetDlgCode(var Msg: TMessage);
begin
 inherited;
 Msg.Result := Msg.Result or DLGC_WANTARROWS or DLGC_WANTTAB;
end;

procedure TMyPanel.KeyDown(var Key: Word; Shift: TShiftState);
begin
 //
end;

procedure TMyPanel.KeyUp(var Key: Word; Shift: TShiftState);
begin
 //
end;

procedure TMyPanel.KeyPress(var Key: Char);
begin
 //
end;

function TMyPanel.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;
begin
 //
end;

function TMyPanel.DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean;
begin
 //
end;

end.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо