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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2008, 13:22   #1
tetris
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 18
По умолчанию Таймер "ловит" не все клики мыши

Проблема таймер "ловит" не все клики левой кнопки мыши над объектом.
пропускает ...

Интервал тайиера 50мс

procedure TfmLock.Timer_WorkTimer(Sender: TObject);
var p: TPoint;
begin
GetCursorPos(p);

// определяем что мышь над объектом:
if ((p.x > fmLock.Left + Zona_1.Left) and (p.x < fmLock.Left + Zona_1.Left + 50) and
(p.y > fmLock.Top + Zona_1.Top) and (p.y < fmLock.Top + Zona_1.Top+ 50)) then
Mouse_Sb_1 := True else Mouse_Sb_1 := False;

if ((Mouse_Sb_1 = True) and (Mouse_Left_1 = True)) then begin
Brush.Style := bsSolid;
Brush.Color := clWhite;
.. рисуем на канве
...
end;

procedure TfmLock.Zona_1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then Mouse_Left_1 := True;
if Button = mbRight then Mouse_Right_1 := True;
if Button = mbMiddle then Mouse_Middle_1 := True;
end;

procedure TfmLock.Zona_1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then Mouse_Left_1 := False;
if Button = mbRight then Mouse_Right_1 := False;
if Button = mbMiddle then Mouse_Middle_1 := False;
end;
tetris вне форума Ответить с цитированием
Старый 09.04.2008, 13:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем ты эти клики в таймере ловишь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.04.2008, 13:31   #3
tetris
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 18
По умолчанию

по кликам перерисовывается канва
tetris вне форума Ответить с цитированием
Старый 09.04.2008, 13:34   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

а на клик перерисовать канву не судьба ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 09.04.2008, 13:35   #5
tetris
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 18
По умолчанию

прямо на MouseDown? А там можно?
(П.П. я не программист,- я аниматор и только волей судьбы вынужден писать код для своих презентаций...)

Последний раз редактировалось tetris; 09.04.2008 в 13:45.
tetris вне форума Ответить с цитированием
Старый 09.04.2008, 13:49   #6
Reaction
Заблокирован
 
Регистрация: 09.04.2008
Сообщений: 13
По умолчанию А там можно!

Цитата:
А там можно?
Конечно можно, а для чего там это стоит? Если нельзя использовать.
Reaction вне форума Ответить с цитированием
Старый 09.04.2008, 13:52   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
только волей судьбы вынужден писать код для своих презентаций...
Дык зачем на делфе? Для презентаций есть другие средства гораздо получше.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.04.2008, 14:06   #8
tetris
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 18
По умолчанию

ну это философский вопрос. а такие "запарки" у меня раз два в году по неделе. когда прогер в отпуске или на больничном,- не стоит шкура выделки... А изучать мне для работы надо счас endorphin. а не средства программирования (извиняюсь если обидел прогеров)...

А по сути вопроса: Я так понял событие MouseDown очень кратковременно и таймер его просто не успевает "поймать"? Так это?

Последний раз редактировалось tetris; 09.04.2008 в 14:09.
tetris вне форума Ответить с цитированием
Старый 09.04.2008, 14:23   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это событие вообще с таймером не совместимо.
Вот то что ты твориш в таймере перенеси в OnMouseDown
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.04.2008, 14:48   #10
tetris
Пользователь
 
Регистрация: 05.05.2007
Сообщений: 18
По умолчанию

все понял спс.
tetris вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49
На чем пишутся стратегии типа "Казаков" и "Эпохи империи" Tayfun Свободное общение 3 26.06.2007 20:27