Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.07.2011, 19:50
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию Отловить Dblclick у Image с событием Click

подскажите как отловить?
есть Image, надо сделать ему два события, onClick и OnDblClick, но перед двойным нажатием происходит Клик и ничего не получается.
Желательно код в пример привести,а то погуглил, многие пишут таймером ,или Shift на Mousedown смотреть,но конкретного примера нигде не нашел.
Ответить с цитированием
  #2  
Старый 02.07.2011, 21:30
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

И не найдёшь, DblClick является продолжением Click.
Ответить с цитированием
  #3  
Старый 02.07.2011, 21:39
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

Цитата:
Сообщение от angvelem
И не найдёшь, DblClick является продолжением Click.
но ведь кактож делают этот дабл клик!
Ответить с цитированием
  #4  
Старый 02.07.2011, 21:45
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Конечно, но при этом про клик забывают. Есть конечно выход, заведи переменную, взводи по клику и сбрасывай по дблклику. Остальное додумаешь?
Ответить с цитированием
  #5  
Старый 02.07.2011, 22:00
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

Цитата:
Сообщение от angvelem
но при этом про клик забывают.
ага,а какже в винде клик по ярлычкам реализован?одинарный - выделить,двойной - открыть.

сделал следующую причуду:
прадва думаю это плохой вариант,потому что при одинарном клике словно тормознутось возникает небольшая,хотя наверное если юзер не знает о таймере то эту тормознутось не заметит))
интревал таймера поставил 200
Код:
var
i:Integer=0;
...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Timer1.Enabled:=false;
if i>1 then ShowMessage('двойной')
else ShowMessage('одинарный');
i:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Inc(i);
Timer1.Enabled:=True;
end;

Последний раз редактировалось Snake22, 02.07.2011 в 22:03.
Ответить с цитированием
  #6  
Старый 02.07.2011, 22:12
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Без выкрутас:
Вложения
Тип файла: rar prj.rar (41.6 Кбайт, 7 просмотров)
Ответить с цитированием
  #7  
Старый 02.07.2011, 22:20
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

аа понял о чём ты.но как обычно мне это не подходит.да, при открытии ярлычка в проводнике событие "выделить" в любом случае происходит. как и с картинкой.на тут событие одиночный клик полюбому происходит.
но если прописать туда например showmessage то уже дблклик не сработает,вот в чём загвоздка
Ответить с цитированием
  #8  
Старый 02.07.2011, 22:23
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ты почитай про то, как Винда посылает эти сообщения приложению, и многое станет ясно.
Поясню: У винды нет события Click, имеются сообщения "WM_LBUTTONDOWN", "WM_LBUTTONUP".

Последний раз редактировалось angvelem, 02.07.2011 в 22:34.
Ответить с цитированием
  #9  
Старый 02.07.2011, 22:35
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

так даже при двойном клике присходит выделение сначало
но потом снимается
Ответить с цитированием
  #10  
Старый 02.07.2011, 22:38
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

да я то думал программисты какой нибудь стандартный способ придумали как реализовать это дело,а то не очень приятно када сделано кое как...
Ответить с цитированием
  #11  
Старый 02.07.2011, 22:44
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Пробуй так:
Вложения
Тип файла: rar prj.rar (41.8 Кбайт, 5 просмотров)
Ответить с цитированием
  #12  
Старый 02.07.2011, 23:46
antikiler antikiler вне форума
Прохожий
 
Регистрация: 16.03.2011
Сообщения: 23
Репутация: 24
По умолчанию

Тут все закоментировано. Есть вопросы спрашивай. Сделал под Image.
Код:
procedure TForm1.Image1Click(Sender: TObject);
var
  Msg: TMsg;
  ControlTime: Longword;
begin
  Form1.Tag := 0;
  // Определение размера контролируемого отрезка времени
  ControlTime := GetTickCount + GetDoubleClickTime;
  // Ожидание повторного щелчка мышью на контролируемом отрезке
  while GetTickCount < ControlTime do
    if PeekMessage(Msg, Form1.Handle, WM_LBUTTONDBLCLK, WM_LBUTTONDBLCLK,
      PM_NOREMOVE) then
    Begin
      ShowMessage('Двойной щелчок'); // Обработка событий по двойному щелчку
      Form1.Tag := 1;
    end;
  if Form1.Tag = 1 then
    exit
  else
  begin
    ShowMessage('Одинарный щелчок'); // Обработка событий по одинарному щелчку
    
  end

end;

Последний раз редактировалось antikiler, 03.07.2011 в 00:05.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:15.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter