Содержание материала

Итак, когда курсор мышки попадает в область кнопки (WmMouseMove), то компонент запускает таймер либо счётчик количества сообщений о перемещении. По истечении определённого времени либо при получении нужного количества сообщений о перемещении, компонент эмулирует событие нажатия кнопкой.

Code:

procedure TAutoButton2.WmMouseMove (var Msg: TWMMouse);

begin

inherited;

if not Capture then

begin

   SetCapture (Handle);

   Capture := True;

   CurrMov := 0;

   if FAutoKind <> akMovement then

   begin

     MyTimer := TTimer.Create (Parent);

     if FSeconds <> 0 then

       MyTimer.Interval := 3000

     else

       MyTimer.Interval := FSeconds * 1000;

     MyTimer.OnTimer := TimerProc;

     MyTimer.Enabled := True;

   end;

end

else // захватываем

begin

   if (Msg.XPos > 0) and (Msg.XPos < Width)

     and (Msg.YPos > 0) and (Msg.YPos < Height) then

   begin

     // если мы подсчитываем кол-во движений...

     if FAutoKind <> akTime then

     begin

       Inc (CurrMov);

       if CurrMov >= FMovements then

       begin

         if Assigned (OnClick) then

           OnClick (self);

         EndCapture;

       end;

     end;

   end

   else // за пределами... стоп!

     EndCapture;

end;

end;

 

procedure TAutoButton2.EndCapture;

begin

Capture := False;

ReleaseCapture;

if Assigned (MyTimer) then

begin

   MyTimer.Enabled := False;

   MyTimer.Free;

   MyTimer := nil;

end;

end;

 

procedure TAutoButton2.TimerProc (Sender: TObject);

begin

if Assigned (OnClick) then

   OnClick (self);

EndCapture;

end;

 

procedure TAutoButton2.WmLBUttonDown (var Msg: TMessage);

begin

if not Capture then

   inherited;

end;

 

procedure TAutoButton2.WmLButtonUp (var Msg: TMessage);

begin

if not Capture then

   inherited;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить