Les classes

Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006 - 2 oct. 2004 à 01:01
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 - 4 oct. 2004 à 20:58
Salut les amis,

Bon, il est temps pour moi d'utiliser les classes pour passer à des choses nouvelles...bonne résolution n'est-ce pas ;)

Première confrontation, premier problème.

Soit une classe TMaClasse. Sans aller trop loin, on va dire qu'elle contient 2 variables Var1 et Var2 de type String.

Bon maintenant grosse question existentielle : Je met un bouton sur ma fiche et à l'événement OnClick, je met cela :

procedure TfrmTest.btTestClick(Sender: TObject);
var
aTest: TMaClasse;
begin

aTest := TMaClasse.Create;
Showmessage('Objet créé');
aTest.Free;
end;

Donc à partir de là, je peux accéder au contenu de mon objet aTest, c'est à dire aTest.Var1 ou aTest.Var2. Ma question est donc, est-ce que je peux y accéder à partir de n'importe quel endroit de mon programme ? A mon avis non, car l'instance se trouve dans la procédure btTestClick.

Dans ce cas, je voudrai savoir comment utiliser les classes dans le cadre d'un programme qui, par exemple, ouvre un fichier, charge des données à partir de celui-ci et qu'ailleur dans le programme on utilise ces données chargées...

Moi jusqu'au jour d'aujourd'hui j'utilise des variables globales dans lesquelles je met tout ce que je veux et que je peux récupérer à tout moment n'importe où dans le programme.

C'est cet aspect que j'arrive pas à comprendre avec les classes... :??:

A moins que la solution se trouve dans la déclaration d'un objet de ma classe dans les variables globales du programme ??

Beaucoup de questions pour lesquelles j'attends une réponse de votre part.

Merci à tous.

Inekman.

Si ici c'est la Terre alors j'imagine même pas l'Enfer.

3 réponses

Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
4 oct. 2004 à 20:44
salut Inekman,

tout d'abord si tu Free la class aTest juste après l'avoir créé, cela ne fonctionnera pas du tout ;) . Mais je suppose que cela n'est qu'un exemple...

afin que tu puisses utiliser la classe TMaClasse dans toute ton unité, il faut que tu déclares une variable de ta classe dans les private. si tu la déclare en public elle seras accessible par toutes les unités liées à celle-ci.

exemple :
 private
    aTest: TMaClasse;
  end;

procedure TForm1.Create(Sender : TObject);
begin
  aTest := TMaClasse.Create; 
end;

procedure TForm1.Destroy;
begin
  aTest.Free;
end;

procedure TfrmTest.btTestClick(Sender: TObject);
begin
  Showmessage(aTest.Var1);
end;


en espérant avoir répondu à ta question.

Olivier.
0
Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006
4 oct. 2004 à 20:52
Impeccable Olivier :-D

Par contre, moi j'ai souvent lu sur divers site qu'utiliser des variables déclarées tout en haut de l'unit (globales ?) c'est caca... Alors vu que j'osais pas faire un truc pas bien j'ai déclaré la variable dans l'évènement du bouton mais je me suis confronté à la limite de la portée.

Ta réponse me rassure.

Merci.
0
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
4 oct. 2004 à 20:58
A quoi servirait donc le private, public, published, protected, ... ??
si l'on ne peut faire aucune déclaration.

Il est vrai qu'il est conseillé de faire des fonctions dans le public qui te permettront de modifier tes variables locales, au lieu d'attaquer ta variable en directe par d'autre classe.

Bonne Prog,

Olivier
0
Rejoignez-nous