2009-06-03 9 views

Répondre

0

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?

+0

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é. –

7

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; 
Questions connexes