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.
Partager