Advertisement
Guest User

Untitled

a guest
Apr 19th, 2010
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.38 KB | None | 0 0
  1. Unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. Interface
  6.  
  7. Uses
  8.   Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  9.     ExtCtrls, StdCtrls;
  10.  
  11. Type
  12.  
  13. { BFrameClass }
  14.  
  15. BFrameClass = Class(TFrame)
  16.   Protected
  17.     bPage: TPage;
  18.   Public
  19.     Property Page: TPage Read bPage;
  20.     Constructor Build(Const aPage: TPage);
  21.     Destructor Burn; Virtual;
  22. End;
  23.  
  24. Type
  25.  
  26. { BFrameClass1 }
  27.  
  28. BFrameClass1 = Class(BFrameClass)
  29.   Private
  30.     bLabel: TLabel;
  31.   Public
  32.     Constructor Build(Const aPage: TPage);
  33.     Destructor Burn; Override;
  34. End;
  35.  
  36. Type
  37.  
  38. { BFrameClass2 }
  39.  
  40. BFrameClass2 = Class(BFrameClass)
  41.   Private
  42.     bMemo: TMemo;
  43.   Public
  44.     Constructor Build(Const aPage: TPage);
  45.     Destructor Burn; Override;
  46. End;
  47.  
  48. Type
  49.  
  50.   { TForm1 }
  51.  
  52.   TForm1 = Class(TForm)
  53.     Procedure FormCreate(Sender: TObject);
  54.   Private
  55.     { Private declarations }
  56.     aButton: TButton;
  57.     aNotebook: TNotebook;
  58.     aFrame: BFrameClass;
  59.     Procedure NotebookChange(Sender: TObject);
  60.     Procedure ButtonClick(Sender: TObject);
  61.   Public
  62.     { Public declarations }
  63.   End;
  64.  
  65. Var
  66.   Form1: TForm1;
  67.   FramesList: TList;
  68.  
  69. Implementation
  70.  
  71. {$R *.lfm}
  72.  
  73. { TForm1 }
  74.  
  75. Procedure TForm1.FormCreate(Sender: TObject);
  76. Begin
  77.   aButton := TButton.Create(Self);
  78.   With aButton Do
  79.     Begin
  80.       Parent := Self;
  81.       Align := alTop;
  82.       OnClick := @ButtonClick;
  83.     End;
  84.   aNotebook := TNotebook.Create(Self);
  85.   With aNotebook Do
  86.     Begin
  87.       Parent := Self;
  88.       Align := alClient;
  89.       OnPageChanged := @NotebookChange;
  90.     End;
  91. end;
  92.  
  93. Procedure TForm1.NotebookChange(Sender: TObject);
  94. Var
  95.   i: Integer;
  96. Begin
  97.   Caption := IntToStr(FramesList.Count);
  98.   For i := 0 To FramesList.Count - 1 Do
  99.     Begin
  100.     If BFrameClass(FramesList[i]).Page = aNotebook.ActivePageComponent Then
  101.       Begin
  102.         aFrame := BFrameClass(FramesList[i]);
  103.         Exit;
  104.       End;
  105.     End;
  106.   If Random(2) = 0 Then
  107.     aFrame := BFrameClass1.Build(aNotebook.ActivePageComponent)
  108.   Else
  109.     aFrame := BFrameClass2.Build(aNotebook.ActivePageComponent);
  110.   FramesList.Add(aFrame);
  111.   Caption := IntToStr(FramesList.Count);
  112. End;
  113.  
  114. Procedure TForm1.ButtonClick(Sender: TObject);
  115. Begin
  116.   aNotebook.Pages.Add(IntToStr(Random(100)));
  117. End;
  118.  
  119. { BFrameClass }
  120.  
  121. Constructor BFrameClass.Build(Const aPage: TPage);
  122. Begin
  123.   Try
  124.     Inherited Create(Form1);
  125.   Except
  126.   End;
  127.   bPage := aPage;
  128.   Parent := aPage;
  129.   Align := alClient;
  130. End;
  131.  
  132. Destructor BFrameClass.Burn;
  133. Begin
  134.   Inherited Destroy;
  135. End;
  136.  
  137. { BFrameClass1 }
  138.  
  139. Constructor BFrameClass1.Build(Const aPage: TPage);
  140. Begin
  141.   Inherited Build(aPage);
  142.   bLabel := TLabel.Create(Self);
  143.   With bLabel Do
  144.     Begin
  145.       Parent := Self;
  146.       Top := Random(100);
  147.       Left := Random(100);
  148.       Caption := 'Random: ' + IntToStr(Random(100));
  149.     End;
  150. End;
  151.  
  152. Destructor BFrameClass1.Burn;
  153. Begin
  154.   bLabel.Free;
  155.   Inherited Burn;
  156. End;
  157.  
  158. { BFrameClass2 }
  159.  
  160. Constructor BFrameClass2.Build(Const aPage: TPage);
  161. Begin
  162.   Inherited Build(aPage);
  163.   bMemo := TMemo.Create(Self);
  164.   With bMemo Do
  165.     Begin
  166.       Parent := Self;
  167.       Top := Random(100);
  168.       Left := Random(100);
  169.       Lines.Text := 'Random: ' + IntToStr(Random(100));
  170.     End;
  171. End;
  172.  
  173. Destructor BFrameClass2.Burn;
  174. Begin
  175.   Inherited Burn;
  176. End;
  177.  
  178. Initialization
  179. Begin
  180.   FramesList := TList.Create;
  181. End;
  182.  
  183. Finalization
  184. Begin
  185.   FramesList.Free;
  186. End;
  187.  
  188. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement