Bonjour à toutes et à tous,

Dans le composant TEditeurCoinRond que j'ai créé, qui est un TGraphicControl dans lequel j'ai mis un TEdit, je n'arrive pas à lier la visibilité du TEdit à celle de son conteneur.
Que faut-il faire ?

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
unit EditeurArrondi;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, StdCtrls, LResources, Forms, Controls, Graphics, Dialogs, BoutonArrondi;
 
type
  TEditeurCoinRond = class(TBoutonCoinRond)
  private
    Editeur: TEdit;
  protected
    procedure Paint; override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
                        X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
                      X, Y: Integer); override;
  published
    property OnMouseDown;
    property OnMouseUp;
  end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
  {$I editeurarrondi_icon.lrs}
  RegisterComponents('ChP',[TEditeurCoinRond]);
end;
 
constructor TEditeurCoinRond.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Actif:= False;
  Editeur:= TEdit.Create(AOwner);
  Editeur.Parent:= TWinControl(Parent);
  Editeur.BorderStyle:= bsNone;
  Editeur.AutoSize:= False;
  Editeur.Font.Style:= [fsBold];
end;
 
destructor TEditeurCoinRond.Destroy;
begin
//  Editeur.Free;
  inherited Destroy;
end;
 
procedure TEditeurCoinRond.Paint;
begin
  inherited Paint;
  Editeur.Visible:= Visible; // Ça, ne ne fonctionne que quand je mets visible à vrai
  Editeur.Left:= Left+16;
  Editeur.Top:= Top+4;
  Editeur.Width:= Width-32;
  Editeur.Height:= Round((Height-8)*0.8);
  Editeur.Font.Size:= Round((Height-8)*0.5);
end;
 
procedure TEditeurCoinRond.MouseDown(Button: TMouseButton; Shift: TShiftState;
                        X, Y: Integer);
begin
  inherited MouseDown(Button, Shift, X, Y);
end;
 
procedure TEditeurCoinRond.MouseUp(Button: TMouseButton; Shift: TShiftState;
                        X, Y: Integer);
begin
  inherited MouseUp(Button, Shift, X, Y);
end;
 
end.