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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2007, 22:01   #1
Brother
 
Регистрация: 22.09.2007
Сообщений: 7
По умолчанию Возможна ли обработка двойного щелчка мышью на кнопке (TButton)?

Приветствую, господа!

1. Возможно ли создать обработку двойного щелчка на кнопке?

Дело в том, как известно, устанавливая функции обработки
события для одиночного (OnClick) и для двойного щелчка
(OnDblClick) на кнопке - обработка двойного щелчка
не вызывается, т.е. и не выполняется.

И первое, что может прийти в голову - это, конечно,
перехват интервалов между нажатиями данной кнопки
(и если интервал меньше n милисекунд, то вызывать
функцию для обработки, как бы, двойного щелчка).
Но, тогда возникает второй вопрос:

2. Как корректно перехватывать клики, откуда вызывать
проверку на интервал -из данной кнопки, на форме?

Заранее спасибо за ответ!
Brother вне форума Ответить с цитированием
Старый 03.12.2007, 19:29   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

пример обработки двойного щелчка по кнопке
Код:
const
  interval= 500; //максимальный интервал между кликами в милисекундах

var
  lastclick:DWORD=0;

procedure OnDblClickProc;
//выполняется когда происходит двойной щелчок
begin
  ShowMessage('двойной щелчок');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if lastclick=0 then
   lastclick:=GetTickCount
                else
    begin
     if GetTickCount-lastclick<interval then OnDblClickProc;
     lastclick:=GetTickCount;
    end;
end;
rpy3uH вне форума Ответить с цитированием
Старый 03.12.2007, 23:31   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

боже мой. Я конечно задаюсь вопрос "этот раздел вообще про вин апи ?". Но факт в том что когда прийдет понимание, что все в виндовсе ( что видно ) есть окно, то проблем подобных не будет. Что именно я хочу сказать:

Код:
type
  TDblButton = class(TButton)
  private
     FOnDblClick: TNotifyEvent;

     procedure WMLBUTTONDBLCLK(var Message: TMessage); message        WM_LBUTTONDBLCLK; 
  public
     property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
  end;

implementation
   
procedure TDblButton.WMLBUTTONDBLCLK;
begin
   inherited;
   if Assign(OnDblClick) then
    OnDblClick(Self);
end;
Вот рабочий так сказать компонент. Ну не проверял конечн, прямо тут сразу и писал.
BOBAH13 вне форума Ответить с цитированием
Старый 04.12.2007, 08:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

э-э-э стоп, ребята, у кнопки нет обработчика OnDblClick

О кста по теме:
этот код без траблов обработает и клик и даблклик
Код:
unit Unit1;

interface

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

type
  TButton=class(StdCtrls.Tbutton)
   procedure q(var m:TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption:=TimeToStr(time);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

{ TButton }

procedure TButton.q(var m: TWMLButtonDblClk);
begin
ShowMessage('dsfdsf');
end;

end.
I'm learning to live...

Последний раз редактировалось Stilet; 04.12.2007 в 08:37.
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент TButton... slim5 Помощь студентам 7 17.06.2008 17:58
цвет caption в Tbutton EdNovice Компоненты Delphi 5 31.05.2008 22:57
возможна ли быстрая загрузка в WebBrowser? furstenberg Работа с сетью в Delphi 10 09.01.2008 02:33
Возможна сортировка или нет? Constellation БД в Delphi 44 17.11.2007 11:32
Возможна ли рекурсия в запросах eremin БД в Delphi 0 23.05.2007 15:54