Dans Delphi (2009 Pro) - J'ai une forme principale qui peut créer des fenêtres enfants non modales. Je veux que la forme attire l'attention - même si c'est la fenêtre principale qui a le focus.Fenêtre enfant non modale permettant de dessiner une forme principale - Delphi
Répondre
Plusieurs fenêtres ne peuvent pas avoir le focus en même temps. Je suppose que vous vouliez dire que vous voulez que votre formulaire enfant non-modal soit sur le dessus quand seul le MainForm a le focus. Avez-vous essayé de définir la propriété FormStyle du formulaire enfant sur fsStayOnTop?
Avec Delphi 2007/2009, la VCL a modifié son comportement concernant le parent d'un formulaire. Dans Delphi 1-2006, le parent d'un formulaire était la fenêtre de l'application cachée (Application.Handle). Dans Delphi 2007/2009, le parent d'un formulaire est le formulaire principal et le parent du formulaire principal est le bureau. Si vous voulez changer cela, vous pouvez soit changer la ligne * .dpr Application.MainFormOnTaskbar
en False
ce qui vous donne l'ancien comportement de retour, mais rend aussi votre application semble étrange dans Vista et Windows 7. Ou vous pouvez remplacer le virtuel CreateParams méthode dans toutes vos formes enfants non modales et définissez le champ Params.WndParent
sur le bureau (HWND_DESKTOP
) ou le Application.Handle
encore existant.
type
TMyChildForm = class(TForm)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := Application.Handle;
end;
Ne veut-il pas exactement le contraire? Le formulaire principal devrait pouvoir devenir au-dessus des autres fenêtres ce que Delphi 2007 et 2009 ont changé. –