Главная страница
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.037 c
1-1108642419
Blein_mono
2005-02-17 15:13
2005.03.06
Stringgrid


1-1108587583
Луарвик
2005-02-16 23:59
2005.03.06
Как писать в RichEdit разными шрифтами?


1-1108659158
Tack
2005-02-17 19:52
2005.03.06
ограничить размер лог-файла программы


4-1106198609
!Cyber
2005-01-20 08:23
2005.03.06
Как программно закрыть окно чужого диалога


3-1107415989
Маугли
2005-02-03 10:33
2005.03.06
Crystall Report