Rien ne t'empêche de changer les paramètres de ta procédure !

Bestiol.
-------------------------------
Réponse au message :
-------------------------------
Non cela ne vas pas car Sender est de type TObject et TMessagerieForm est de type TForm ;)
Merci quand même
Jeankiki
-------------------------------
Réponse au message :
-------------------------------
Salut !!
Peut-être vais-je dire une bétise, mais ne devrais-tu pas remplacer "TMessagerieForm.Create(Application);" par "TMessagerieForm.Create(Sender);"
Ainsi, d'après moi (je ne peux malheureusement pas faire de test !), la form sera bien créée avec pour parent la form que tu as passé en paramètre de ta procédure... il faut donc bien que tu passes MainForm en paramètre de AffichMess dans ton prog...
Bien sûr, ta form MessagerieForm doit être en fsMDIChild, ce que tu as déjà fais, si j'ai bien compris !
Voilà, essaie ça et dit moi comment ça se présente, stp !!
Bestiol.
-------------------------------
Réponse au message :
-------------------------------
Merci pour ton aide, MessagerieForm est
var
MessagerieForm: TForm;
voici le code de AffichMess
procedure AffichageMessagerie(Sender: TObject);
begin
MessagerieForm:= TMessagerieForm.Create(Application);
end;
exports AffichageMessagerie name 'AffichMess';
Jeankiki
-------------------------------
Réponse au message :
-------------------------------
Salut !!
D'une, y a juste un petit problème qui pourrait entrainer une "erreur fatale" dans certain cas :
tu as mis :
if DLLHandle= 0 then
ShowMessage('Erreur dans le chargement de la DLL');
AffichMess:= GetProcAddress(DLLHandle, 'AffichMess');
AffichMess(MessagerieForm);
Donc, si jamais la DLL n'était pas chargée pour une quelconque erreur, le prog essaiera quand même d'utiliser la procedure AffichMess... pour palier à ce problème, tu peux utiliser un bloc "Try" avec un "Except" à la fin, ou mettre "if DLLHandle= 0 then
begin
ShowMessage('Erreur dans le chargement de la DLL');
Exit;
end;"
Sinon, pour ton "vrai" problème, il faudrait d'après moi que tu éclaircisses deux trois trucs : à quoi correspond "MessagerieForm" ? Si le paramètre de AffichMess est bel et bien Sender, alors c'est "MainForm" qu'il faut donner... Je me trompe ?
A moins que MessagerieForm soit elle aussi en "fsMDIForm"...
Peut-être pourrais-tu donner la partie du code de AffichMess qui ouvre la fenêtre ?
Voilà... J'espère avoir bien compris ce que tu demandais, et t'avoir aidé un peu !
Bestiol.
-------------------------------
Réponse au message :
-------------------------------
Salut à tous,
Je cré une application MDI, la fenêtre principal est mis comme FormStyle= fsMDIForm, mais j'aimerai mettre toutes les fenêtres dont FormStyle= fsMDIChild dans une DLL.
Dans la DLL elles sont mise sur FormStyle= fsMDIChild mais quand j'exécute je reçois le message d'erreur:
"Exception class EInvalidOperation with message 'Cannot create form. No MDI forms are currently active.'....
Voici le code qui fait appelle à la DLL
procedure TMainForm.Messagerie1Click(Sender: TObject);
var
DLLHandle: THandle;
AffichMess:procedure(Sender: TObject); stdcall;
begin
DLLHandle:= LoadLibrary('DllMessgerie.dll');
if DLLHandle= 0 then
ShowMessage('Erreur dans le chargement de la DLL');
AffichMess:= GetProcAddress(DLLHandle, 'AffichMess');
AffichMess(MessagerieForm);
end;
Merci pour votre aide.
Jeankiki