Problème création composant conteneur
Salut à tous, j'éssaie de créer un composant qui pourrait contenir des composant graphiques, comme par exemple des boutons.
Voici la définition:
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
|
unit ComponentContainer;
interface
uses
SysUtils, Classes, Graphics, Controls, Dialogs;
type
TComponentContainer = class(TCustomControl)
private
mcontrols: array of TControl;
protected
procedure Paint; override;
public
constructor Create(AOwner:TComponent); override;
procedure addControl(ctrl:TControl);
procedure deleteControl(id:integer);
procedure refreshControls();
published
property Align;
property Caption;
property Color;
property Cursor;
property DragCursor;
property DragMode;
property Enabled;
property Font;
property Hint;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property Visible;
property Anchors;
end;
procedure Register; |
et les procédures addControl et refreshControls:
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
|
procedure TComponentContainer.addControl(ctrl:TControl);
var
i:integer;
begin
i:=length(mcontrols);
setlength(mcontrols,i+1);
ctrl.parent:=self;
mcontrols[i]:=ctrl;
refreshControls();
end;
procedure TComponentContainer.refreshControls();
var
ctop:integer;
i:integer;
begin
ctop:=self.top;
for i := 0 to Length(mcontrols) - 1 do
begin
mcontrols[i].Top:= ctop;
mcontrols[i].Left:=left+3;
mcontrols[i].width:=width-6;
mcontrols[i].visible:=true;
mcontrols[i].refresh();
ctop := ctop + mcontrols[i].Height + 3;
end;
refresh();
end;
procedure TComponentContainer.Paint;
var
i:integer;
begin
inherited Paint;
with Canvas do
begin
Brush.Style:=bsSolid;
Brush.Color:=Color;
Pen.Color:=clBlack;
Rectangle(0,0,Width,Height);
end;
for i := 0 to Length(mcontrols) - 1 do
mcontrols[i].refresh();
end; |
J'ai testé un exemple simple, en mettant 2 boutons sur une form, quand je cliques sur l'un, j'ajoute l'autre dans le composant. Le bouton disparait de la form, mais ne s'affiche pas. Quelqu'un aurait une idée?
Merci d'avance !