Recent

Author Topic: [SOLVED] TButton.OnMouseUp does not trigger  (Read 2508 times)

ling

  • New Member
  • *
  • Posts: 14
[SOLVED] TButton.OnMouseUp does not trigger
« on: March 03, 2021, 08:12:05 am »
I bind an event to OnMouseUp for TButton, but when the button be clicked, only OnMouseDown and OnClick be triggered, is it a bug?

Lazarus version: 2.0.6
FPC: 3.0.4
macOS Catalina 10.15.7
« Last Edit: March 16, 2021, 03:14:06 am by ling »

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: TButton.OnMouseUp does not trigger
« Reply #1 on: March 03, 2021, 08:22:28 am »
If you have properly set up events then yes, it looks like a bug, though it might be OS-specific behaviour; I don't know enough about Macos to even guess.

The "normal" chain of events is:
  • MouseDown,
  • MouseUp,
  • Click
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

Handoko

  • Hero Member
  • *****
  • Posts: 5130
  • My goal: build my own game engine using Lazarus
Re: TButton.OnMouseUp does not trigger
« Reply #2 on: March 03, 2021, 08:36:21 am »
It works on my Ubuntu Mate 20.10 Lazarus 2.0.10 GTK2.

I wrote a very simple demo to test it. Download and run my code, if it does not work on your computer, please report it to the bugtracker: https://bugs.freepascal.org/view_all_bug_page.php?project_id=1

Code: Pascal  [Select][+][-]
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
  9.  
  10. type
  11.  
  12.   { TForm1 }
  13.  
  14.   TForm1 = class(TForm)
  15.     Button1: TButton;
  16.     procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
  17.       Shift: TShiftState; X, Y: Integer);
  18.     procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
  19.       Shift: TShiftState; X, Y: Integer);
  20.   end;
  21.  
  22. var
  23.   Form1: TForm1;
  24.  
  25. implementation
  26.  
  27. {$R *.lfm}
  28.  
  29. { TForm1 }
  30.  
  31. procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  32.   Shift: TShiftState; X, Y: Integer);
  33. begin
  34.   Button1.Caption := 'MouseDown event triggered';
  35. end;
  36.  
  37. procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  38.   Shift: TShiftState; X, Y: Integer);
  39. begin
  40.   Button1.Caption := 'MouseUp event triggered';
  41. end;
  42.  
  43. end.

ling

  • New Member
  • *
  • Posts: 14
Re: TButton.OnMouseUp does not trigger
« Reply #3 on: March 03, 2021, 10:07:10 am »
@Handoko Thanks for your demo code. I've tried it, mouse up doesn't trigger.


trev

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2020
  • Former Delphi 1-7, 10.2 user
Re: TButton.OnMouseUp does not trigger
« Reply #4 on: March 03, 2021, 10:15:44 am »
It works in macOS 10.14 with Lazarus trunk and FPC 3.0.4 or 3.2.0 or trunk.

Looks like it was fixed in Lazarus 2.0.8 - the OP needs to upgrade! See Bug #38099.

I just confirmed that it works in Lazarus 2.0.10 with FPC 3.2.0.
« Last Edit: March 03, 2021, 10:35:08 am by trev »

ling

  • New Member
  • *
  • Posts: 14
Re: [SOLVED] TButton.OnMouseUp does not trigger
« Reply #5 on: March 16, 2021, 02:42:43 pm »
@trev Thanks,

I updated lazarus and fpc to the latest version, it works fine now.

 

TinyPortal © 2005-2018