Composant dans un Composant / Component dans un Component. [Résolu]

Signaler
Messages postés
5
Date d'inscription
samedi 17 avril 2004
Statut
Membre
Dernière intervention
28 mai 2011
-
Messages postés
5
Date d'inscription
samedi 17 avril 2004
Statut
Membre
Dernière intervention
28 mai 2011
-
Salut à toutes et tous et merci aux uploaders de CodeS-SourceS.

J'aimerais que quelqu'un m'explique pourquoi le code suivant compile mais ne fonctionne pas.
Je souhaiterais simplement affecter un événement au bouton construis dans le panel.

Si j'utilise ce composant "TtstPanel" il s'affiche, le bouton est visible, mais je n'obtien
aucune réaction quand je clique sur ce dernier!?

De toute évidence je n'ai pas compris quelque chose...

Notez que tous les exemples didacticiels etc.. que j'ai pu glaner ici et sur le web ne parlent jamais de composants dans un composant. Avis aux auteurs de tutos!

Voici mon code; si un bon Samaritain veux bien y jetter un oeil.


unit Panel;

INTERFACE
//=========================================================
uses
SysUtils, Classes, Controls, ExtCtrls, StdCtrls;

type
TtstPanel = class(TPanel)
private
FMyButton :TButton; //Déclaration de mon bouton
FMyButtonOnClick :TNotifyEvent; //Déclaration de mon événement
{ Private declarations }
protected
{ Protected declarations }
public


constructor Create (AOwner: TComponent); override;
{ Public declarations }
published
{ Published declarations }
end;

procedure Register;

IMPLEMENTATION
//=========================================================

procedure FMyButtonOnClick (Sender : TObject); //Evénement
BEGIN
TButton(Sender).Caption := 'Clicked!';
END;

constructor TtstPanel.create(AOwner:TComponent);
BEGIN
inherited Create(AOwner);
FMyButton := TButton.create(self); //Creation du bouton
FMyButton.Parent := Self; //Ratachement au Panel
FMyButton.Caption := 'Not Clicked'; //Init du Bouton
FMyButton.OnClick := FMyButtonOnClick; //Assignation de l'événement à Onclick
END;


procedure Register;
begin
RegisterComponents('Test', [TtstPanel]);
end;

end.

2 réponses

Messages postés
261
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
3 novembre 2020
12
Salut,
FMyButtonOnClick est une procedure
donc remplace
private
    FMyButtonOnClick :TNotifyEvent; //Déclaration de mon événement

par
private
    procedure FMyButtonOnClick(Sender:TObject); //Déclaration de mon événement

@+yanb
Messages postés
5
Date d'inscription
samedi 17 avril 2004
Statut
Membre
Dernière intervention
28 mai 2011

Salut Yanb , Merci pour ta réponse.

Je me doutais bien qu'a force de chercher, je passais complétement à côté de l'évidence, mais la !
Il va falloir que je rebranche le cerveau!!!!