3 pièce(s) jointe(s)
Composant dérivé: composants TPanel contenant plusieurs tShapes
Bonjour à tous et merci pour vos réponses.
J’arrive à créer une classe dérivée de Tpanel avec un autre composant à l’intérieur. Cependant, il me manque l’accès aux propriétés du ou des composants contenus dans le TPanel.
Je m’explique avec des images ça évite de longue causerie :
J’ai créé mes propres boutons translucides à partir de TShape. Mon TShape accepte des images PNG et du texte.
Ci-dessous un exemple.
TPanel avec mes TPngshape
Pièce jointe 151830
DBNavigator créé avec un TPanel et TPngShape
Pièce jointe 151835
Mon souhait c’est de créer un composant conteneur dérivé de TPanel ou autres et qui contient à son tour d’autres composants tShape.
J’ai réussi à obtenir ça :
Pièce jointe 151831
Le TShape placé dans le TPanel ne réagit pas au clique et ne livre aucune propriété. J'aimerai par exemple avoir dans les propriétés du TPanel un bouton [+] pour ouvrir la liste des propriétés du ou des TShape.
Je ne sais pas si d'autres solution existent?
Ma question c’est comment rendre les propriétés des TShapes contenu dans mon TPanel accessibles afin de pouvoir les modifier (positionnement, couleur, etc…) ?
Merci infiniment pour votre aide.
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
| unit PngPage;
interface
uses
Windows, System.SysUtils, System.Classes, Winapi.UxTheme, StdCtrls,ImgList, Vcl.Controls,Vcl.Forms, Vcl.ExtCtrls, Types, messages, Graphics, Math;
type
TPngBouton = class(TShape)
private
{ Déclarations privées }
protected
{ Déclarations protégées }
public
{ Déclarations publiques }
Constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Déclarations publiées }
end;
type
TPngPage = class(TPanel)
private
{ Déclarations privées }
FShape:TPngBouton;
protected
{ Déclarations protégées }
public
{ Déclarations publiques }
Constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Déclarations publiées }
end;
procedure Register;
implementation
begin
RegisterComponents('Mes composants', [TPngPage, TPngBouton]);
end;
Constructor TPngPage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FShape:= TPngBouton.Create(Self);
FShape.Parent:=Self;
FShape.Width:=96;
FShape.Height:=96;
end;
Destructor TPngPage.Destroy;
begin
FShape.Free;
inherited Destroy;
end;
end. |