Class dynamique... événement

Signaler
Messages postés
14
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
14 février 2005
-
Messages postés
14
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
14 février 2005
-
Bon, ben déjà, désolé pour le sujet, il n'est pas forcément clair, mais voici quelques explications.

ce que je veux faire, c'est:
- je créé une class, elle sera utilisée par quelqu'un d'autre.
- une class qui ne sera pas un composant...
- qu'il y ait une fonction (ou procédure) que j'appelle depuis une méthode de ma classe, mais je ne met rien dedans. c'est à un autre utilisateur de la class de dire ce que fera cette fonction.

en fait, ce que je veux faire, c'est une sorte d'événement, mais je n'arrive pas à voir comment on en créé.

en gros la fonction que je cherche à faire, elle servira soit à afficher quelque chose, soit à executer une autre fonction.

merci d'avance.

5 réponses

Messages postés
309
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Salut,

Si j'ai bien compris ce que tu veux faire, sa donnerais ça :

tu te déclare un type de procedure :

type
TMaProc = procedure(const Toto: string) of object;

puis tu déclares une variable de ce type, ainsi qu'une procedure pocèdant les même paramètres :

private
FMaProc: TMaProc;
procedure Maprocedure(const Toto : string);

puis tu déclares une propriété qui permettra à l'utilisateur de ta classe d'utiliser ta procedure.

published
property MaProc : TMaProc read FMaProc write FMaproc

puis il ne te reste plus qu'a creer ta procedure en indiquant qu'elle doit executer la procedure de l'utilisateur si l'utilisateur à lier une procedure à ta classe.

procedure Maprocedure(const Toto : string);
begin
if Assigned(FMaProc) then
FMaProc(Self)
else
begin
// tu mets ton code si il n'ya pas de procedure lier.
end;
end;

J'espères avoir été compréensif ;)
Bonne Prog ;)
Messages postés
14
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
14 février 2005

Merci Loulibier, ça ressemble bien à ce que je voudrais faire.

je pense avoir compris ce que tu veux m'expliquer, par contre, comment fait-on pour lier une procédure à une classe ?
est-ce que ça marche aussi avec une fonction ?
Messages postés
309
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
pour lier une procedure à ta classe ton utilisateur devra creer sa procedure et devra l'initialiser comme dessous :

MaClasse.MaProc := MaProcedure;

Je ne suis pas convaincu que cette méthode fonctionne avec une function, mais je ne peux pas te l'affirmer car je ne l'ai jamais fait.
Messages postés
14
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
14 février 2005

ok, merci beaucoup Loulibier
Messages postés
14
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
14 février 2005

Loulibier, merci encore pour la solution que tu m'as passée.

j'ai fait le test de lier une fonction, et ça marche.
ceci dit, en regardant bien, je ne suis même pas sûr que ça me sera utile de le faire avec des fonctions.