Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перехват сообщения DoubleClick [D7, WinXP]


Student ©   (2009-08-29 22:50:00) 

Столкнулся с задачей: "Навигация по каталогам и файлам". Выбрал компонент ShellListView. Сделал составной класс, вот код:

unit Unit2;

interface
uses
// system units
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Dialogs,
ExtCtrls, StdCtrls, IniFiles, Buttons,
// additional units
ShellCtrls;

type
TArchiveReports = class(TObject)
private
  pnlMain : TPanel;
  lvListView : TShellListView;
  procedure MesDblClick (var MyMessage : TWMMouse); message wm_LButtonDblClk;
public
  constructor Create;
end;

var
ArchiveReports : TArchiveReports;
implementation

uses
unit1;

constructor TArchiveReports.Create;
begin
inherited Create;
pnlMain := TPanel.Create(Form1);
with pnlMain do
begin
  Align := alTop;
  Height := 250;
  BevelWidth := 1;
  Font.Name := 'Courier New';
  Font.Size := 12;
  Font.Style := [fsBold];
  Parent := Form1;
  Show;
end;
lvListView := TShellListView.Create(pnlMain);
with lvListView do
begin
  Width := pnlMain.Width div 2;
  Height := pnlMain.Height;
  Sorted := True;
  ReadOnly := False;
  HideSelection := False;
  TabOrder := 1;
  Parent := pnlMain;
  Color := clGray;
end;
end;

procedure TArchiveReports.MesDblClick (var MyMessage : TWMMouse);
begin
ShowMessage ('Хэллоу ворлд');
end;
end.

Я, конечно, писал
  lvListView.OnDblClick := MesDblClick;, но меня не устраивает данный обработчик, т.к. он после DblClick вызывает какае то другое сообщение, которое открывает файл. Т.е. мне как бы "перекрыть" надо это сообщение(которое DblClick). Спасибо


AntiZOG   (2009-09-05 09:35:00) [1]

Как вариант локальный хук.

Пишется намного проще глобального, так как не нужно межпроцессной коммуникации
Вот пример для установки глобального. Для локального можно большую часть кода выкинуть.
http://www.delphimaster.ru/articles/hooks/index.html


Сергей М.   (2009-08-31 08:41:00) [2]


> Student


С какой радости система будет поылать твоему классу сообщение wm_LButtonDblClk ? Окна-то у него нет ..


Германн   (2009-08-30 01:13:00) [3]

Спам :(


Наверх

Титульная страница Поиск, карта сайта Написать письмо