ich habe eine Applikation, die aus einem Mainform und x Frames (Frame1 of TFrame1, Frame2 of TFrame2 usw.) besteht. Es ist immer nur ein Frame sichtbar (oder auch mal keiner ...). Ausgewählt wird im einfachsten Fall per Menü bzw. Button. Ich wollte das so umsetzen dass das Zeigen eines bestimmten Frames durch Zuweisung des Frames an eine Property im MainForm erfolgt.
Code: Alles auswählen
Type TFormMain = class(TForm)
....
FActiveFrame: TFrame;
Property ActiveFrame : TFrame read FActiveFrame write SetActiveFrame.
....
end;
procedure TFormMain.FormCreate(Sender: TObject);
begin
FActiveFrame := nil; // brauchts das überhaupt??? Nil = default?
...
ActiveFrame := Frame1;
end;
procedure TFormMain.onButton1Click(Sender: TObject);
begin
ActiveFrame := Frame1;
end;
procedure TFormMain.onButton2Click(Sender: TObject);
begin
ActiveFrame := Frame2;
end;
Mein Plan war, so vorzugehen:
Code: Alles auswählen
Procedure TFormMain.SetActiveFrame(AFrame:TFrame);
begin
if FActiveFrame = AFrame then exit;
if assigned(FActiveFrame) then FActiveFrame.Parent := nil; // letztes gezeigtes Formular verbergen
if AFrame = nil then exit;
// Frame initialisieren wenn nötig
if not assigned(AFrame) then
begin
if AFrame is TFrame1 then
FActiveFrame := TFrame1.Create(self)
else if AFrame is TFrame2 then
FActiveFrame := TFrame2.Create(self);
...
else
assert(false,'TMainForm.SetActiveFrame: invalid frame type passed');
end
else
FActiveFrame := AFrame;
FActiveFrame.Parent := self;
end;
Code: Alles auswählen
Procedure TFormMain.SetActiveFrame(AFrame:TFrame1);
Procedure TFormMain.SetActiveFrame(AFrame:TFrame2);
Wer hat mir einen Tipp wie das geht? Oder wie ich eine solche Struktur generell designen muss damit ich sie dann so verwenden kann wie ich das oben skizzert habe.
Thnx, Armin.