unit Main.View;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ComCtrls,
Vcl.ActnList,
Vcl.StdCtrls;
type
TMain_View =
class( TForm )
PageControl1 : TPageControl;
ActionList1 : TActionList;
Action1 : TAction;
Button1 : TButton;
procedure FormCreate( Sender : TObject );
procedure Action1Execute( Sender : TObject );
procedure Action1Update( Sender : TObject );
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Main_View : TMain_View;
implementation
uses
Aufgabe.View;
{$R *.dfm}
procedure TMain_View.Action1Execute( Sender : TObject );
begin
// Aktive AufgabenForm ermitteln und die Methode ShowSolution aufrufen
( PageControl1.ActivePage.Controls[0]
as TAufgabe_View ).ShowSolution( Sender );
end;
procedure TMain_View.Action1Update( Sender : TObject );
begin
// Nur wenn die aktive Page auch eine AufgabenForm enthält, wird die Action aktiviert
Action1.Enabled := Assigned( PageControl1.ActivePage )
and ( PageControl1.ActivePage.ControlCount > 0 )
and
( PageControl1.ActivePage.Controls[0]
is TAufgabe_View );
end;
procedure TMain_View.FormCreate( Sender : TObject );
var
idx : Integer;
frm : TForm;
begin
// Es werden mal eben 20 Formulare erzeugt und angedockt
for idx := 1
to 20
do
begin
if idx
mod 3 = 1
then
begin
// ein Dummy-Formular, hier wird die Action disabled sein
frm := TForm.Create( Self );
frm.Caption := Format( '
Nur so %d', [idx] );
end
else
begin
frm := TAufgabe_View.Create( Self );
frm.Caption := Format( '
Aufgabe %d', [idx] );
end;
frm.ManualDock( PageControl1,
nil, alClient );
frm.Show;
end;
end;
end.