Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2007, 21:18   #1
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию Сообщения мыши в ListBox

Как обработать сообщение WM_LBUTTONUP, когда курсор находится над Листбоксом?
ListBox.OnMouseUp не подходит, из-за перетаскивания некорректно работает.
Для формы я делаю так
Код:
procedure MyMouseUp(var n: TWMLButtonUp); message WM_LBUTTONUP;

procedure TForm1.MyMouseUp(var n: TWMLButtonUp);
begin
if n.Keys = MK_CONTROL then showmessage('up');
end;
над листбоксом не работает, а мне над ним и надо
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 23.08.2007, 08:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Можно так :

unit Unit1;

interface

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

type
TListBox=class(StdCtrls.TListBox)
protected
procedure ListMouseUp(var n: TWMLButtonUp); message WM_LBUTTONUP;
end;


TForm1 = class(TForm)
ListBox1: TListBox;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TLIstBox }

procedure TLIstBox.ListMouseUp(var n: TWMLButtonUp);
begin
// if n.Keys = MK_CONTROL then showmessage('up');
end;

end.


Причем Это распространяется на все листвоксы которые ты как обычно накидаеш на форму, хотя я не пойму чем мешает OnMouseUp
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.08.2007, 18:12   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Спасибо
Цитата:
хотя я не пойму чем мешает OnMouseUp
если используются Drag and Drop процедуры, OnMouseUp перестает правильно работать - срабатывает сразу при нажатии, Ctrl не определяется
Тут все дело в функции BeginDrag, если убрать ее вызов все приходит в норму, но она тоже нужна.

P.S. пока писал ответ пришла хорошая идея, намного проще, нужно просто BeginDrag вызывать не при каждом нажатии (он на MouseDown повешан) а выборочно.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 23.08.2007 в 18:55.
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сообщения в Delphi Роман777 Помощь студентам 19 24.11.2008 15:27
Сообщения Serg12345678 Общие вопросы C/C++ 1 12.04.2008 14:07
как отправить сообщения на Асю (icq) Ermak Работа с сетью в Delphi 8 19.09.2007 19:57
сообщения с ошибками в delphi Alar Общие вопросы Delphi 0 30.10.2006 00:43