In Delphi (2009 Pro) - Ich habe ein Hauptformular, das nicht modale Unterfenster erstellen kann. Ich möchte, welche Form der Fokus hat, um oben zu zeichnen - auch wenn es das Hauptfenster ist, das den Fokus hat.Nicht-modales untergeordnetes Fenster, mit dem Mainform oben gezeichnet werden kann - Delphi
Antwort
Mehrere Fenster können nicht gleichzeitig den Fokus haben. Ich nehme an, Sie wollten sagen, dass Sie wollen, dass Ihre nicht-modale Kindform oben ist, wenn nur die MainForm den Fokus hat. Haben Sie versucht, die FormStyle-Eigenschaft des untergeordneten Formulars auf "fsStayOnTop" zu setzen?
Mit Delphi 2007/2009 hat die VCL ihr Verhalten bezüglich des Elternteils eines Formulars geändert. In Delphi 1-2006 war das übergeordnete Anwendungsfenster (Application.Handle) das übergeordnete Element eines Formulars. In Delphi 2007/2009 ist das übergeordnete Element eines Formulars das Hauptformular und das übergeordnete Element des Hauptformulars ist der Desktop.
Wenn Sie dies ändern möchten, können Sie entweder die * .dpr Linie ändern Application.MainFormOnTaskbar
-False
was Sie zurück das alte Verhalten gibt, sondern auch macht Ihre Anwendung seltsam aussehen in Vista und Windows 7. Sie können auch die virtuellen CreateParams außer Kraft setzen Methode in all Ihren nicht-modalen untergeordneten Formularen und setzen Sie das Feld Params.WndParent
auf den Desktop (HWND_DESKTOP
) oder das noch vorhandene Application.Handle
.
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;
Will er nicht das genaue Gegenteil? Das Hauptformular sollte in der Lage sein, über andere Fenster zu wechseln, was Delphi 2007 und 2009 geändert hat. –