Ich haben eine Delphi 7-Anwendung, die zwei Ansichten ein Dokument hat (zum Beispiel eines WYSIWYG-HTML bearbeiten könnte eine WYSIWYG-Ansicht und eine Quellensicht - nicht meine richtige Anwendung). Sie können in separaten Fenstern geöffnet oder in Registerkarten im Hauptfenster angedockt werden.Multiple Form Delphi-Anwendungen und Dialoge
Wenn ich einen modalen Dialog von einem der getrennten Formen öffnen, wird die Hauptform nach vorne gebracht, und wird als das ausgewählte Fenster in der Taskleiste angezeigt. Angenommen, das Hauptformular ist die WYSIWYG-Ansicht und die Quellansicht ist ausgeblendet. Sie gehen zu einem bestimmten Punkt in der Quellansicht und fügen ein Bild-Tag ein. Ein Dialogfeld wird angezeigt, in dem Sie die gewünschten Eigenschaften für das Bild auswählen und eingeben können. Wenn sich die WYSIWYG-Ansicht und die Quellenansicht überschneiden, wird die WYSIWYG-Ansicht nach vorne und die Quellenansicht ausgeblendet. Sobald der Dialog geschlossen ist, wird die Quellansicht wieder angezeigt.
Ich habe versucht, auf die Form, die Eigentümer und die Parent Eigenschaften festlegen es verwandt ist:
dialog := TDialogForm.Create(parentForm);
dialog.ParentWindow := parentForm.Handle;
Wie kann ich dieses Problem beheben? Was sollte ich noch versuchen?
Da Menschen auf meinem Beispiel zu sein scheinen stolpern, vielleicht kann ich mit einem besseren Beispiel versuchen: ein Texteditor, den Sie mehr als eine Datei geöffnet zugleich haben kann. Die geöffneten Dateien befinden sich entweder in Tabs (wie in der Delphi-IDE) oder in einem eigenen Fenster. Angenommen, der Benutzer öffnet den Rechtschreibprüfdialog oder den Suchdialog. Was passiert, wenn die Datei in einem eigenen Fenster bearbeitet wird, wird dieses Fenster in der Z-Reihenfolge unterhalb des Hauptformulars gesendet, wenn der modale Dialog angezeigt wird. Sobald der Dialog geschlossen ist, wird er in seine ursprüngliche Z-Reihenfolge zurückversetzt.
Hinweis: Wenn Sie Delphi 7 verwenden und nach einer Lösung für dieses Problem suchen, finden Sie in meiner Antwort unten auf der Seite, um zu sehen, was ich getan habe.
Dies hat habe gerade ein langjähriges Problem für mich gelöst. Vielen Dank. –