Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Unit Unit1;
- {$mode objfpc}{$H+}
- Interface
- Uses
- Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
- ExtCtrls, StdCtrls;
- Type
- { BFrameClass }
- BFrameClass = Class(TFrame)
- Protected
- bPage: TPage;
- Public
- Property Page: TPage Read bPage;
- Constructor Build(Const aPage: TPage);
- Destructor Burn; Virtual;
- End;
- Type
- { BFrameClass1 }
- BFrameClass1 = Class(BFrameClass)
- Private
- bLabel: TLabel;
- Public
- Constructor Build(Const aPage: TPage);
- Destructor Burn; Override;
- End;
- Type
- { BFrameClass2 }
- BFrameClass2 = Class(BFrameClass)
- Private
- bMemo: TMemo;
- Public
- Constructor Build(Const aPage: TPage);
- Destructor Burn; Override;
- End;
- Type
- { TForm1 }
- TForm1 = Class(TForm)
- Procedure FormCreate(Sender: TObject);
- Private
- { Private declarations }
- aButton: TButton;
- aNotebook: TNotebook;
- aFrame: BFrameClass;
- Procedure NotebookChange(Sender: TObject);
- Procedure ButtonClick(Sender: TObject);
- Public
- { Public declarations }
- End;
- Var
- Form1: TForm1;
- FramesList: TList;
- Implementation
- {$R *.lfm}
- { TForm1 }
- Procedure TForm1.FormCreate(Sender: TObject);
- Begin
- aButton := TButton.Create(Self);
- With aButton Do
- Begin
- Parent := Self;
- Align := alTop;
- OnClick := @ButtonClick;
- End;
- aNotebook := TNotebook.Create(Self);
- With aNotebook Do
- Begin
- Parent := Self;
- Align := alClient;
- OnPageChanged := @NotebookChange;
- End;
- end;
- Procedure TForm1.NotebookChange(Sender: TObject);
- Var
- i: Integer;
- Begin
- Caption := IntToStr(FramesList.Count);
- For i := 0 To FramesList.Count - 1 Do
- Begin
- If BFrameClass(FramesList[i]).Page = aNotebook.ActivePageComponent Then
- Begin
- aFrame := BFrameClass(FramesList[i]);
- Exit;
- End;
- End;
- If Random(2) = 0 Then
- aFrame := BFrameClass1.Build(aNotebook.ActivePageComponent)
- Else
- aFrame := BFrameClass2.Build(aNotebook.ActivePageComponent);
- FramesList.Add(aFrame);
- Caption := IntToStr(FramesList.Count);
- End;
- Procedure TForm1.ButtonClick(Sender: TObject);
- Begin
- aNotebook.Pages.Add(IntToStr(Random(100)));
- End;
- { BFrameClass }
- Constructor BFrameClass.Build(Const aPage: TPage);
- Begin
- Try
- Inherited Create(Form1);
- Except
- End;
- bPage := aPage;
- Parent := aPage;
- Align := alClient;
- End;
- Destructor BFrameClass.Burn;
- Begin
- Inherited Destroy;
- End;
- { BFrameClass1 }
- Constructor BFrameClass1.Build(Const aPage: TPage);
- Begin
- Inherited Build(aPage);
- bLabel := TLabel.Create(Self);
- With bLabel Do
- Begin
- Parent := Self;
- Top := Random(100);
- Left := Random(100);
- Caption := 'Random: ' + IntToStr(Random(100));
- End;
- End;
- Destructor BFrameClass1.Burn;
- Begin
- bLabel.Free;
- Inherited Burn;
- End;
- { BFrameClass2 }
- Constructor BFrameClass2.Build(Const aPage: TPage);
- Begin
- Inherited Build(aPage);
- bMemo := TMemo.Create(Self);
- With bMemo Do
- Begin
- Parent := Self;
- Top := Random(100);
- Left := Random(100);
- Lines.Text := 'Random: ' + IntToStr(Random(100));
- End;
- End;
- Destructor BFrameClass2.Burn;
- Begin
- Inherited Burn;
- End;
- Initialization
- Begin
- FramesList := TList.Create;
- End;
- Finalization
- Begin
- FramesList.Free;
- End;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement