Créer un composant graphique
Bonjour à toutes et à tous,
Voilà, ça fait pas mal de temps que n'ai plus pratiqué Lazarus et, j'ai du mal à m'y remettre.
Je voudrais créer un bouton avec une forme spéciale (j'essaie avec une simple ellipse pour l'instant). Le code qui suit s'appuie sur un code que j'avais créé il y a longtemps et qui lui fonctionne. Mais ici, rien n'apparaît, que j'inclue ou non la procédure "paint" (à mon sens, je ne devrais pas avoir à l'appeler) dans la création de mon bouton.
Pouvez-vous me dire ce qui cloche, ce qui manque, ...
Merci de votre aide.
Pierre.
Code:
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 77 78 79
| unit FntrBase;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, CompPlus;
type
TBoutonArrondi = class(TGraphicControl)
private
FPen: TPen;
FBrush: TBrush;
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Brush: TBrush read FBrush write FBrush;
property Pen: TPen read FPen write FPen;
end;
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
MonBouton: TBoutonArrondi;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
MonBouton:= TBoutonArrondi.Create(Self);
end;
constructor TBoutonArrondi.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Parent:= TWinControl(AOwner);
FPen:= TPen.Create;
FBrush:= TBrush.Create;
Paint;
end;
destructor TBoutonArrondi.Destroy;
begin
FPen.Free;
FBrush.Free;
inherited Destroy;
end;
procedure TBoutonArrondi.Paint;
begin
with Canvas do
begin
Pen:= FPen;
Brush:= FBrush;
end;
Pen.Color:= clBlack;
Brush.Style:= bsSolid;
Brush.Color:= clRed;
Canvas.Ellipse(20, 20, 100, 100);
end;
end. |