Envoyé par
Lung
Je ne vois pas le rapport avec mon problème.
?
Cela change la gestion de la prise de Focus par la MainForm, fait une application en D6 et la même en D2010
une MainForm et un form secondaire créée et affiché à la volée, regarde la différence de prise de focus !
D6 : la MainForm passe par dessus les autres fenêtres
D210 : La MainForm reste toujours en dessous
Envoyé par
Lung
J'ai essayé quand même, mais ça ne change rien.
Dommage
Envoyé par
Lung
Je ne comprend pas la question.
Si tu demandes comment mes fenêtres sont affichées, j'en ai une qui est maximisée .
Donc j'en déduiis que tes fenêtres sont affichées par Show ou ShowModal sans ancrage !
Ta fenêtre s'appelle TFormColisage, j'avais créée une TFrmColisage en 2001 lorsque j'étais apprenti le monde est petit
Envoyé par
Lung
Je ne comprend pas bien non plus.
... partagent le même élément dans la barre Windows
Eh bien tu comprends plus que tu ne le crois, as-tu essayé de retirer cette ligne ?
Cela change la gestion de prise de focus des fenêtres, et comme en D2010 la gestion de la barre windows a justement changé (voir MainFormOnTaskBar)
Avec CreateParams, tu peux cacher l'icone de la fenêtre sans jouer avec le Handle
Dans le projet dont je m'occupe, on a beaucoup de fenêtre contenu dans des DLL, l'EXE appel des fonctions qui se chargent de l'instanciation, ShowModal et libération, on a presque exclusivement des BitBtn, pas de problème de Focus
Et pourtant, je ne trouve pas le fameeux Application->Handle = ...Je ne sais pas comment mon responsable a masquer cela
Le plus proche serait la ligne dans le constructeur ancêtre de TOUTES les fenêtres de nos applications :
DefaultMonitor = dmDesktop;
Seules les fenêtres ancrées avec l'API SetParent lors du passage de BCB2007 à BCBXE2 provoquait un problème de focus, le OnExit d'un TDBEdit par exemple n'était pas provoqué par le clic sur un BitBtn (lui directement dans le Parent) du coup pas de modification du DataLink->DataField ...
J'ai aussi eu un phénomène de prise de focus pénible comme le tien mais avec des TComboBox, il fallait cliquer deux fois pour l'ouvrir
En passant par la propriété Parent impliquant l'échange d'un TWinControl entre EXE et DLL au lieu d'un Handle, le problème était résolu
Partager