Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ShellListView


Автор: ZBugz 21.8.2009, 14:28
Всем причет.
А как в ShellListView поймать событие что клик был мышкой в пустое место ? А то у меня в ошибку вываливаеться и поймать не могу это событие.
Т.е. если написать
Код

if ShellListView .Folders[FileTree.ItemIndex].PathName='' then exit


То в ошибку падает

Автор: Rrader 21.8.2009, 17:45
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, CommCtrl, ShellCtrls;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ShellListView1Click(Sender: TObject);
var
  Info: TLVHitTestInfo;
begin
  Info.pt := ShellListView1.ScreenToClient(Mouse.CursorPos);
  ListView_HitTest(ShellListView1.Handle, Info);
  if (Info.flags and LVHT_NOWHERE) <> 0 then
    ShowMessage('Клик по пустому месту!');
end;

end.

Автор: Keeper89 21.8.2009, 18:25
Или так:
Код

procedure TForm1.ShellListView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Assigned(ShellListView1.GetItemAt(X, Y)) then
    Showmessage('Клик по пункту!')
  else
    Showmessage('Пустое место!')
end;

Автор: ZBugz 24.8.2009, 08:09
Сапасибо  smile 
1-е не пошло, пишет  что незнам TLVHitTestInfo. Кого еще заюсать ? В инете не сказанно.
2-е Пашет нормально, но вот это тока для мышки, если же руками скакать по файлам и пакам, то выделенные элементы не вылавливаються.
Я так понял в MouseDown надо написать просто обработчик, а что бы элементы ловило, соответственно в Click обрабатывать ?

Автор: Rrader 24.8.2009, 12:20
Цитата(ZBugz @  24.8.2009,  14:09 Найти цитируемый пост)
1-е не пошло, пишет  что незнам TLVHitTestInfo. Кого еще заюсать ? В инете не сказанно.

Код

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, CommCtrl, ShellCtrls;

Автор: ZBugz 25.8.2009, 07:45
Цитата(Rrader @ 24.8.2009,  12:20)
Цитата(ZBugz @  24.8.2009,  14:09 Найти цитируемый пост)
1-е не пошло, пишет  что незнам TLVHitTestInfo. Кого еще заюсать ? В инете не сказанно.

Код

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, CommCtrl, ShellCtrls;

Все есть, не пашет  smile 

Ну 2-е работает и ладно  smile Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)