Votre procédure dans le dLL montre une forme non modale, dans votre application de l'appelant vous n'avez aucun code pour la boucle de message, si vous regardez un fichier DPR créé par Delphi pour une application de formulaire VCL, vous verrez un code similaire à ceci:
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
ce code initialise l'application, crée la forme, et puis exécute la boucle de message, et cette boucle itère de message et les processus messages reçus jusqu'à ce que votre application est terminée.
Dans votre code, vous venez de faire la partie création de formulaire, pas le reste. Vous pouvez avoir le code ci-dessus dans votre propre code et remplacer Application.CreateForm avec votre propre code de création de formulaire.
Une autre option consiste à afficher votre formulaire dans DLL en tant que formulaire modal. Dans ce cas, votre formulaire restera à l'écran jusqu'à ce que vous fermiez:
MyForm.ShowModal;
s'il vous plaît prendre note également que dans votre code actuel objet Application dans votre DLL ne se réfère pas nécessairement à l'objet d'application dans l'application de l'appelant, à moins que vous envoyez Application.Handle de l'application appelant à la DLL.
Il est préférable de changer votre procédure de DLL à un code comme ceci:
procedure StartApp;
begin
with TMyForm.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
Cordialement
merci, je viens de modifier la procédure StartApp, j'ai changé Show en ShowModal et dans le programme principal (dpr) je viens de mettre StartApp et ça marche bien. BTW est-il ok si j'ai enlevé des procédures d'application. *, Cela fonctionne bien sans eux. –