Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как перехватить щелчок мышью? / 22 сообщений из 22, страница 1 из 1
10.04.2003, 18:00
    #32137899
V.L.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
На форме несколько десятков компонентов.
Как перехватить щелчок мышью, чтобы не анализировать события мыши
каждого компонента?
Т.е. что-то похожее на Form.KeyPreview, только не для клавиатуры, а
для мыши.

Спасибо.
...
Рейтинг: 0 / 0
10.04.2003, 18:04
    #32137903
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Как перехватить щелчок мышью, чтобы не анализировать события мыши
каждого компонента?


Интересно, я то же не знаю как. Акромя как пробежаться по всем компонентам и назначить им обработчик мыши как у формы. А зачем это надо, если не севрет?
...
Рейтинг: 0 / 0
10.04.2003, 18:23
    #32137930
Ден
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Я делал когда то..
нужно перехватывать событие OnMessage для объекта Application. Но я делал для клавиатуры, но помоему без разницы что перехватывать.
...
Рейтинг: 0 / 0
11.04.2003, 07:28
    #32138078
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
  private
    { Private declarations }
    procedure WndProc(var Message: TMessage); override;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WndProc(var Message: TMessage);
begin

  if (Message.Msg = WM_LBUTTONDOWN) then
    begin
      Label1.Caption := 'LButtonDown'
    end;
  if (Message.Msg = WM_RBUTTONDOWN) then
    begin
      Label1.Caption := 'RButtonDown'
    end;
  inherited;
end;

end.

...
Рейтинг: 0 / 0
11.04.2003, 11:26
    #32138321
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
2 V.L.

А зачем его перехватывать? Есть стандартный метод OnClick у контролов - там все и делай. Чего извращаться то?
...
Рейтинг: 0 / 0
11.04.2003, 13:57
    #32138665
VitL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Вижу, только один человек понял суть.

Объясню, зачем мне это нужно. Надо сделать, чтобы при щелчке мышью на любом компоненте произошло определенное действие.
Чем вписывать одинаковый код в тридцать обработчиков для каждого компонента, ведь проще обработать это событие один раз. Тем более, что
можно случайно пропустить какой-то компонент. Кроме того, на форме могут появляться новые компоненты...
А если перехватить - то не будет лишней головной боли.

Спасибо LexusR. Решение очень простое, не знаю, почему сам не додумался...
Сейчас проверю...
...
Рейтинг: 0 / 0
11.04.2003, 14:13
    #32138702
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
2 V.L.

Надо сделать, чтобы при щелчке мышью на любом компоненте произошло определенное действие.

Ну уж раз начал, расказывай до конца, что ж это за действие такое, которое надо обработать на клик мышки, да еще для всех контролов?
...
Рейтинг: 0 / 0
11.04.2003, 14:17
    #32138708
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
> pkarklin
присоединяюсь к вопросу!
че делать то собираешься со всеми контролами сразу....?
...
Рейтинг: 0 / 0
11.04.2003, 14:39
    #32138758
VitL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Плавающая панель интрументов должна исчезнуть при любом щелчке мышью. Вот и все, что мне нужно.
...
Рейтинг: 0 / 0
11.04.2003, 14:44
    #32138766
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
См. >>Ден

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TfMain.FormCreate(Sender: TObject);
begin
  Application.OnMessage := onMess;
end;

procedure TfMain.onMess(var Msg: TMsg; var Handled: Boolean);
begin
  if(Msg.message=WM_LBUTTONDOWN)then begin
    Panel1.Caption := IntToStr(Msg.hwnd);
  end;
  Handled := False;
end;
...
Рейтинг: 0 / 0
11.04.2003, 14:50
    #32138776
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
>Плавающая панель интрументов должна исчезнуть при любом щелчке мышью. Вот и все, что мне нужно.

А на событие OnActivate для формы не получится это сделать?
...
Рейтинг: 0 / 0
11.04.2003, 14:57
    #32138793
VitL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
А форма и так активна, ведь панель ей принадлежит.
...
Рейтинг: 0 / 0
11.04.2003, 15:06
    #32138810
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
>А форма и так активна, ведь панель ей принадлежит.

Ой ли, если панель плавающая?
...
Рейтинг: 0 / 0
11.04.2003, 15:11
    #32138815
VitL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Да-да, именно так. Delphi 3, самодельный компонент.
...
Рейтинг: 0 / 0
11.04.2003, 17:50
    #32139086
VitL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Обращаюсь к
LexusR
ZrenBy

Есть сомнения, что ваши методы сработают для щелчка по пустой области
строки меню.
Хотя метод ZrenBy, по идее, должен сработать. К сожалению, смогу это проверить только завтра, сейчас нет Дельфы под рукой.
...
Рейтинг: 0 / 0
11.04.2003, 18:32
    #32139170
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
+
WM_NCLBUTTONDOWN
...
Рейтинг: 0 / 0
11.04.2003, 23:42
    #32139273
Белов Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Может я ошибаюсь, но имхо
для этого есть сообщение OnMouseUp

пишешь обработчик на событие OnMouseUp
...
Рейтинг: 0 / 0
12.04.2003, 08:45
    #32139302
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
<<Есть сомнения, что ваши методы сработают для щелчка по пустой области

оба способа почти идентичны и работают при шелчке мыши в пределах
формы в которой определена процедура перехвата сообщения
...
Рейтинг: 0 / 0
12.04.2003, 09:12
    #32139307
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
и событие обрабатывай как написал ZrenBy
WM_NCLBUTTONDOWN
оно срабатывает везде в пределах формы
а если нужно щелкать за пределами формы (что скорее всего вряд ли нужно)
то нужно
...
Рейтинг: 0 / 0
12.04.2003, 09:15
    #32139309
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
)))
в Rx -ах есть компонент TRxWindowHook
который перехватывает все сообщения винды
и тогда можешь щелкать где угодно
...
Рейтинг: 0 / 0
12.04.2003, 13:26
    #32139374
VitL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Спасибо всем.
Метод ZrenBy почти подошел.
А с учетом WM_NCLBUTTONDOWN, я думаю, будет на 100%.
...
Рейтинг: 0 / 0
12.04.2003, 18:13
    #32139427
ScableR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перехватить щелчок мышью?
Я не понял, нафига изврашаться, надо просто пробежаться (мышью) по свойствам компонентов, прежде создав всего один обработчик, и присвоить этот обработчик всем кнопкам на реакцию нажатия.
Код будет ~ такой:
Код: plaintext
1.
2.
3.
Procedure TForm1.xxx();
begin
f.enabled := false;
end;
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как перехватить щелчок мышью? / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]