Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Сообщение WM_LBUTTONDOWN   Найти похожие ветки 

 
Дмитрий Галин   (2004-08-12 18:22) [0]

Почему всётаки глючит обработка сообщения WM_LBUTTONDOWN? Срабатывает нестабильно, через раз?


 
nester   (2004-08-12 18:27) [1]

Вам же отвечали, в 17-ой строке ошибка:)))))
Фраза типа "в 17-ой строке ошибка" - значит что тут не все видящие, и отсюда Ваш код не видно, мало ли что вы там придумали и написали и спрашиваете почему не работает, никаких деталий не даете. Вопрос типа "я написал программу, а она не работает, почему?". Форум сонный, программисты ленивые и большинсво попросту игнорирует такие вопросы.
Нужно добавить в FAQ как правильно задавать вопрос:))))
И что такое ошибка в 17-ой строке :))))


 
Дмитрий Галин   (2004-08-12 18:38) [2]

Извиняй, вот привожу кусок кода программы на KOL.

unit Main;
...

var
 Count: integer;

implementaton

procedure TMainForm.KOLFormFormCreate(Sender: PObj);
begin
 Count:=0;
end;

procedure TMainForm.Button1MouseDown(Sender: PControl; var Mouse: TMouseEventData);
begin
 Inc(Count);
 Button1.Caption:=Int2Str(Count);
end;

procedure TMainForm.Button1MouseUp(Sender: PControl; var Mouse: TMouseEventData);
begin
 Dec(Count);
 Button1.Caption:=Int2Str(Count);
end;

При это значение переменной Сount постепенно уменьшается, т.е. событие по сообщению WM_LBUTTONDOWN не всегда срабатывает.
По идее значение Count должно в итоге быть равно 0.


 
Дмитрий Галин   (2004-08-12 18:48) [3]

Аналогичная ситуация происходит при создании нового компонента, когда необходимо выполнить некоторые действия в процедуре WndProcComp. Например:

function WndProcComp(AControl: PControl; var AMessage: TMsg; var AResult: Integer): Boolean;
begin
 Result:=false;
 case AMessage.Message of
   WM_LBUTTONDOWN: begin
     AControl.Color:=clRed;
   end;
   WM_LBUTTONUP: begin
     AControl.Color:=clBlue;
   end;
 end;
end;


 
nester   (2004-08-12 19:04) [4]

Действительно, причем не важно что это кнопка, вот у формы ловлю, причем заметил закономерность, если не очень быстро тыкать, то работает нормально. Похоже очередь сообщений съедается, новое сообщение убивает предыдущее если предыдущее еще не обработалось.

function TFormMain.KOLForm1Message(var Msg: tagMSG;
 var Rslt: Integer): Boolean;
begin
result:= false;
if MSG.message=WM_LBUTTONDOWN then
begin
Inc(cnt);
Button1.Caption:= Int2Str(cnt);
end
else if MSG.message=WM_LBUTTONUP then
begin
 Dec(cnt);
 Button1.Caption:= Int2Str(cnt);
end;
end;


 
Дмитрий Галин   (2004-08-12 19:24) [5]

И как с этим бороться?


 
Дмитрий Галин   (2004-08-12 19:37) [6]

Nester, спасибо за вариант решения, хотя проблема всё-таки осталась.
Я хочу сделать кнопку такую как в XP-ном Internet Explorere с выпадающим меню и мне надо обрабатывать сообщения WM_LBUTTONDOWN и WM_LBUTTONUP для отрисовки изображения и вызова Popup-меню. А так как первое сообщение обрабатывается глючно от этого всё портится. Что делать?


 
nester   (2004-08-12 20:30) [7]

Попробуйте ловить сообщения по старинке, не средсвами КОЛы, а объявляю функцию сообщений(правда не знаю сработает ли в КОЛе), затем смотрите координаты курсора, если он над Вашей кнопкой - то показывайте менюшку.
Хотя это наверно лучше у Кладова спросить куда деваются часть сообщений если их много?


 
Vladimir Kladov   (2004-08-13 18:27) [8]

Когда срабатывает OnMoseDblClk, OnMouseDown уже не срабатывает. Так что поставьте в OnMouseDblClk тот же обработчик, что на OnMouseDown, и будет 0.


 
Дмитрий Галин   (2004-08-16 09:45) [9]

Спасибо большое! Это действительно исправило ситуацию.
Вопрос исчерпан. Тему объявляю закрытой.



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.112 c
1-1109078181
Aleks
2005-02-22 16:16
2005.03.06
как присвоить группе переменных группу данных


1-1109056083
Neznaika
2005-02-22 10:08
2005.03.06
DBGrid


1-1109015377
Wonderer
2005-02-21 22:49
2005.03.06
работа со строки


4-1103542919
Harry_Ts
2004-12-20 14:41
2005.03.06
Дисковые процедуры низкого уровня в Delphi


4-1106544335
Ana
2005-01-24 08:25
2005.03.06
Как сделать форму своего приложения всегда поверх чужих приложе