1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| {$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons;
type
TlzBitBtn = class(TBitBtn)
private
{ Private declarations }
// Modification des événements............................... [partie 1]
FOnMouseUp : TNotifyEvent;
// Modification des évènements............................... [partie 1-bis]
procedure SelfOnMouseUp (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
// Modification des évènements .................................. [partie 2]
property OnMouseUp : TNotifyEvent read FOnMouseUp write FOnMouseUp;
end;
procedure Register;
implementation
procedure Register;
begin
{$I lzbitbtn_icon.lrs}
RegisterComponents('Additionlz',[TlzBitBtn]);
end;
constructor TlzBitBtn.Create(AOwner: TComponent);
begin
Inherited Create(AOwner);
// Modification de l'évènement OnMouseUp..................... [partie 3]
Inherited OnMouseUp := @SelfOnMouseUp;
end;
destructor TlzBitBtn.Destroy;
begin
inherited Destroy;
end;
procedure TlzBitBtn.SelfOnMouseUp(Sender: TObject;Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
{Mon code : ici placé avant ce qui serait le inherited d'un classique override}
if Button <> mbLeft then
inherited
else begin
if (X > 0) and (X < Self.Width) and (Y > 0) and (Y < Self.Height) then
Self.Glyph := FBitmapOver
else
Self.Glyph := FBitmapOut;
//Si code OnMouseUp alors l'exécuter
if Assigned(FOnMouseUp) then FOnMouseUp(Sender);
//Cette dernière ligne est à éliminer s'il s'agit d'un code de remplacement et
//non d'un code complémentaire précédant ou suivant le code de l'utilisateur.
end;
end; |
Partager