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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.