ytillang30400
Messages postés35Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention27 juillet 2013
-
28 sept. 2007 à 02:10
ytillang30400
Messages postés35Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention27 juillet 2013
-
28 sept. 2007 à 14:26
Bonjour.
J'ai un petit problème pour accéder à une autre classe dans l'écriture d'un composant.
Pas d'erreur à la compilation, mais BUG au lancement de l'application test (violation d'accès à l'adresse...)
Mon code :
type
TMonComposant = class(TComponent)
private
// J'ai aussi testé dans "protected"
Ville:String;
public
// Je ne veux pas mettre la propriété "FVille" ici sinon accès public
TMaClasse2 = class(TPersistent)
private
SN: TMonComposant;
procedure MaMethode;
...
var
// Je ne veux pas mettre la propriété "FVille" ici sinon accès public
procedure MaMethode;
begin
// Besoin d'accéder à la propriété de l'autre classe.
// Pas d'erreur à la compil mais Bug. Plus de bug si j'enlève la ligne
TMonComposant(SN).Ville:='paris';
ytillang30400
Messages postés35Date d'inscriptionjeudi 23 novembre 2000StatutMembreDernière intervention27 juillet 2013 28 sept. 2007 à 12:45
Je ne peux pas créer avec (self) car types incompatibles.
J'ai besoin d'accéder à une propriété du composant depuis ma classe 2.
Mon code ci-dessous :
unit MonComposant;
interface
uses Classes,Dialogs,Contnrs;
type
{ Pré-déclaration du composant, sinon ma classe 2 ne le reconnait pas }
TMonComposant = class;
{ Déclaration de ma classe 2 }
TPays = class(TObjectList)
end;
TMaClasse2 = class(TPersistent)
private
SN: TMonComposant;
FActive:boolean;
procedure SetActive(value:boolean);
public
constructor Create;
published
property Active : boolean read FActive write SetActive;
end;
{ Déclaration du composant }
TMonComposant = class(TComponent)
private
// J'ai aussi testé dans "protected"
FVille : String;
FPays:TMaClasse2;
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Ville : String read FVille write FVille;
property Pays : TMaClasse2 read FPays write FPays;
end;
//var
// Je ne veux pas mettre la propriété "FVille" ni "SN" ici sinon accès public
// Si je place 2 composants dans la même page, ils doivent travailler indépendamment un de l'autre
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Examples', [TMonComposant]);
end;