1. Du legst Dir eine Variable
CurrentFrame : TTntFrame;
an zentraler Stelle an (im Hauptformular oder einer gemeinsamen
Unit)
2 .Du legst im Hauptformular ein Panel als Container für die Frames an.
3. Die TreeView-Click-Funktion:
Delphi-Quellcode:
procedure TDPR00001Form1.MenuTreeClick(Sender: TObject);
begin
if CurrentFrame <> nil then begin
CurrentFrame.Free;
CurrentFrame := nil;
end;
if MenuTree.Selected.Text = _('Logintabelle') then begin TDPR001Frame1.ShowFrame(Panel1); exit; end;
if MenuTree.Selected.Text = _('Sprache') then begin TDPR001Frame14.ShowFrame(Panel1); exit; end;
...
end;
4. Jedes Frame verfügt über eine statische ShowMethode:
Delphi-Quellcode:
public
class procedure ShowFrame(_Parent : TWinControl);
end;
...
class procedure TDPR001Frame4.ShowFrame(_Parent: TWinControl);
begin
DPR00001Form1.CurrentFrame := TDPR001Frame4.Create(_Parent);
with TDPR001Frame4(DPR00001Form1.CurrentFrame) do
begin
Parent := _Parent;
Align := alClient;
end;
end;
5. Schliesen des Frames vom Frame aus:
Delphi-Quellcode:
procedure TDPR001Frame4.ButtonFrameCloseClick(Sender: TObject);
begin
PostMessage(Application.MainForm.Handle,WM_USER+3333,0,0);
end;
6. Das Gegenstück im Hauptformular
Delphi-Quellcode:
procedure OnCloseFrame(var _Msg : TMessage); message WM_USER+3333;
...
procedure TDPR00001Form1.OnCloseFrame(var _Msg: TMessage);
begin
if CurrentFrame <> nil then
begin
CurrentFrame.Free;
CurrentFrame := nil;
end;
end;