Muss mir wohl eingestehen dass hier ein Designfehler vorliegt den ich mir nicht wieder gerade basteln kann... auf alle Fälle nicht crossplatform.
Wo liegt hier der Designfehler?
In Deiner Form, Formulare zu erstellen?
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 =
class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
private
{ Private-Deklarationen }
f : TForm2;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(f)
then begin
f := TForm2.Create(Application);
f.
Name := '
Hugo';
end;
f.Show;
// oder mach sonstwas mit dem Formular, ohne es anzuzeigen.
end;
procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if Assigned(f)
then f.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
k : TComponent;
begin
k := Application.FindComponent('
Hugo');
if Assigned(k)
then begin
if k
is TForm2
then begin
TForm2(k).Show;
// oder sonstwas, es muss nicht zwingend angezeigt werden, um damit zu arbeiten.
end
end;
end;
end.
Hiermit kann man ein Formular erstellen, soweit es noch nicht existiert.
Wenn es existiert, kann man es freigeben.
Man kann es über Application.FindComponent finden und damit arbeiten.
Was funktioniert nicht bzw. wo ist der Designfehler?
Uwes Vorschlag funktioniert, unabhängig davon, ob die Formulare angezeigt werden oder nicht.
Das Vorhandensein von Formularen hat nichts mit der Sichtbarkeit auf dem Bildschirm zu tuen.
Wie "holst" Du denn die Panels (oder was auch immer) auf "Dein" Formular? Änderst Du dann den Parent?
War passiert eigentlich dann mit diesen Teilen, wenn Du Dein Formular schließt?
Oder wenn eines der Formulare, von denen Du sie holst, freigegeben wird?
Die Verwendung von Frames dürfte da deutlich besser sein und auch wohl eher designkonform.
Designfehler liegen nicht vor, wenn man etwas nicht designkonform nutzt, man sollte hier die Form der Nutzung lieber designkonform gestalten.
Bei mir funktionieren Frames seit ca. 20 Jahren unter Delphi problemlos, wie alt ist denn das Design der von Dir gewarteten Software?