Problème avec ondeactivate et onactivate....

cs_OrsE Messages postés 44 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 20 octobre 2005 - 9 juin 2005 à 12:41
cs_OrsE Messages postés 44 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 20 octobre 2005 - 10 juin 2005 à 10:26
Salut tout le monde...



Voilà, j'ai un projet dans lequel apparaîtront des fenêtres avec le
style fsStayOnTop, donc si on change d'application ou même si un
messagebox apparaît, la fenêtre restera au dessus.

Alors j'ai trouvé la solution en utilisant l'évènement OnDeactivate et
OnActivate de mon Application, et dans ces méthodes, mettre
Application->RestoreTopMosts(); et
Application->NormalizeAllTopMosts(); . J'ai testé et ça fonctionne
bien.



Mon problème vient du fait que pour mon projet actuel, ça fonctionne
plus... pire je rentre même pas dans les fonctions OnDeactivate et
OnActivate!! Pourtant mes deux projet ne semble pas différents à
première vue, alors qu'es ce qui pourrait empêché ces évènements de se
produire???

J'ai aussi testé directement avec l'objet TApplcationEvents, et
d'utiliser ces deux évènements, mais ça fonctionnes toujours pas...

J'ai mi un breakpoint à l'intérieur des deux fonctions et j'y rentre jamais...

Es ce que quelqu'un a une idée sur ce qui aurait pu se passer??

Merci.

4 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
9 juin 2005 à 18:18
Si l'on admet que l'évènement OnDeactivate se situe sur Form1, essaye ceci :



procedure TForm1.FormCreate(Sender: TObject);

begin

//Application.OnDeactivate := Form1.OnDeactivate; // ou bien...

Application.OnDeactivate := Form1.OnActivate;

end;




...selon où tu as placé ton code qui maintient les fiches au premier plan.



Ca devrait résoudre le problème.



Bonne prog'



japee
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
9 juin 2005 à 18:22
Oups, pas la peine de préciser Form1...



Ce qui donne :



procedure TForm1.FormCreate(Sender: TObject);

begin

//Application.OnDeactivate := OnDeactivate;

Application.OnDeactivate := OnActivate;

end;




Bonne prog'



japee
0
cs_OrsE Messages postés 44 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 20 octobre 2005
10 juin 2005 à 09:29
oui, tu as entièrement raison, je suis d'accord avec toi, et c'est bien
ça le problème, c'est exactement ce que j'ai fait et ça ne fonctionne
pas, voilà mon code (désolé c'est du C++ Builder mais ça ressemble):



void __fastcall TMain::DeactiveForm(TObject *Sender)

{

ShowMessage("desactivation");

}

//---------------------------------------------------------------------------



void __fastcall TMain::ActiveForm(TObject *Sender)

{

ShowMessage("activation");

}

//---------------------------------------------------------------------------



void __fastcall TMain::FormCreate(TObject *Sender)

{

Application->OnActivate = this->ActiveForm;

Application->OnDeactivate = this->DeactiveForm;

}

Je devrais au moins voir les ShowMessage, et je n'ai
rien.... là je ne comprends pas, d'autant plus, que j'ai fait presqu'un
copier/coller d'un autre projet que j'ai fait et qui fonctionne bien
lui....

De quoi ça peut venir un tel problème????
0
cs_OrsE Messages postés 44 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 20 octobre 2005
10 juin 2005 à 10:26
Bon alors il semblerait que j'ai trouvé le problème mais pas la solution...

En fait dans mon projet, je charge une DLL static (c'est à dire que
j'inclue le .LIB associé à ma DLL), et à ce moment là, j'ai plus mes
évènements...

Par contre, quand je charge aucune DLL ça fonctionne...

D'où ça peut venir??

Merci
0
Rejoignez-nous