Class dynamique... événement

juli1m Messages postés 14 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 14 février 2005 - 4 juin 2004 à 16:52
juli1m Messages postés 14 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 14 février 2005 - 8 juin 2004 à 10:45
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

Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
4 juin 2004 à 20:58
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 ;)
juli1m Messages postés 14 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 14 février 2005
7 juin 2004 à 09:21
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 ?
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
7 juin 2004 à 20:43
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.
juli1m Messages postés 14 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 14 février 2005
8 juin 2004 à 09:04
ok, merci beaucoup Loulibier

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
juli1m Messages postés 14 Date d'inscription vendredi 6 février 2004 Statut Membre Dernière intervention 14 février 2005
8 juin 2004 à 10:45
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.
Rejoignez-nous