Bonjour,
Comme le titre l'indique je souhaiterais appeler dynamiquement des procedure et des fonctions, un peu comme on fait avec des Dll (lors du chargement dynamique) sauf que là mes fonction et mes procedure sont dans mon exe.
Je m'explique, j'ai un menu dynamique qui est constitué à partir d'un fichier texte (.inf) dont voici la structure :
et je veux rajouter la procedure ou fonction appelé pour avoir kune structure du fichier .inf comme ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Nom_menu;Image_menue;
Ainsi lorsque de la constitution de mon menu j''aurais, le nom du menu, l'image et la procédure (ou fonction) associé à ce menu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Nom_menu;Image_menue;Nom_procedure_menu
en résumé voici le pseudo code que je souhaite mettre en place :
PS la création du menu dynamque est aujourd'hui opérationnel le problème est qu'aujourd'hui la gestion du menu est comme ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 1. Lecture du fichier .inf 2. création du menu 2.1 Création bouton_1 2.1.1 Bouton_1.caption := Nom_menu 2.1.2 Bouton_1.glyph := Image_menue 2.1.3 Bouton_1.onClick := ChargerEtAppelerMAprocedure(' Nom_procedure_menu'); 2.2 Création bouton_2 2.2.1 Bouton_2.caption := Nom_menu 2.2.2 Bouton_2.glyph := Image_menue 2.2.3 Bouton_2.onClick := ChargerEtAppelerMAprocedure(' Nom_procedure_menu'); 2.3 Création bouton_3 2.4 Création bouton_4 ....
if Nom_menu = Calendrier then Affiche_calendrier
else if Nom_menu = Messagerie then Affiche_calendrier
ce qui n'est pas térrible et génant à gérer.
j'ai pensé au code suivant, que je n'ai pas encore essayer, car je n'es pas DELPHI sur mon poste pour le moment, je ferais le test ce soir chez moi, par contre si vous avec des idées ou autre je suis preneur
merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 procedure ChargerEtAppelerMAprocedure(NOM_PROCEDURE:String); var // Affiche_Fontionnalité est le nom de ma procedure dans mon exe MAprocedure: Affiche_Fontionnalité (Libelle: String); begin Somme := nil; //le Handle de l'exe If Handle = 0 then Exit; //Récupération de l'adresse de la fonction nommée NOM_PROCEDURE MAprocedure:= GetProcAddress(Handle, pAnsiChar(NOM_PROCEDURE)); //Appel de la fonction si on a bien récupéré son adresse If Assigned(MAprocedure) then MAprocedure(''); end;
Cordialement
Qays
Partager