summaryrefslogtreecommitdiff
path: root/examples/gui/embedded_form/fra_test.pas
blob: 184ee2dad0f81ba7008d8f92df7d05733e117ef4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
unit fra_test;

{$mode objfpc}{$H+}

interface

uses
  SysUtils, Classes, fpg_base, fpg_main, fpg_checkbox, fpg_button,
  fpg_menu, fpg_memo, fpg_panel;

type

  { Note the tags for the UI Designer. This allows use to visually design
    our frame. }
  TMyFrame = class(TfpgBevel)
  private
    {@VFD_HEAD_BEGIN: MyFrame}
    fraCheckBox1: TfpgCheckBox;
    fraMenu1: TfpgMenuBar;
    Button1: TfpgButton;
    Memo1: TfpgMemo;
    {@VFD_HEAD_END: MyFrame}
    framnuFile: TfpgPopupMenu;
    framnuHelp: TfpgPopupMenu;
    WindowTitle: TfpgString;
    procedure miHelpAboutClicked(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure AfterCreate;
  end;

{@VFD_NEWFORM_DECL}

implementation

uses
  fpg_dialogs;

{@VFD_NEWFORM_IMPL}

procedure TMyFrame.miHelpAboutClicked(Sender: TObject);
begin
  TfpgMessageDialog.AboutFPGui('');
end;

constructor TMyFrame.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Shape := bsSpacer;
  AfterCreate;
end;

destructor TMyFrame.Destroy;
begin
  framnuFile.Free;
  framnuHelp.Free;
  inherited Destroy;
end;

procedure TMyFrame.AfterCreate;
var
  miFile: TfpgMenuItem;
  miHelp: TfpgMenuItem;
begin
  {%region 'Auto-generated GUI code' -fold}
  {@VFD_BODY_BEGIN: MyFrame}
  Name := 'MyFrame';
  SetPosition(380, 237, 200, 203);
  WindowTitle := 'MyFrame';
  Hint := '';

  fraCheckBox1 := TfpgCheckBox.Create(self);
  with fraCheckBox1 do
  begin
    Name := 'fraCheckBox1';
    SetPosition(8, 40, 120, 20);
    FontDesc := '#Label1';
    Hint := '';
    TabOrder := 0;
    Text := 'CheckBox';
  end;

  fraMenu1 := TfpgMenuBar.Create(self);
  with fraMenu1 do
  begin
    Name := 'fraMenu1';
    SetPosition(0, 0, 200, 24);
    Anchors := [anLeft,anRight,anTop];
    miFile := AddMenuItem('File', nil);
    AddMenuItem('Edit', nil).Enabled := False;
    miHelp := AddMenuItem('Help', nil);
  end;

  Button1 := TfpgButton.Create(self);
  with Button1 do
  begin
    Name := 'Button1';
    SetPosition(104, 164, 80, 24);
    Anchors := [anRight,anBottom];
    Text := 'Button';
    FontDesc := '#Label1';
    Hint := '';
    ImageName := '';
    TabOrder := 2;
  end;

  Memo1 := TfpgMemo.Create(self);
  with Memo1 do
  begin
    Name := 'Memo1';
    SetPosition(12, 60, 172, 88);
    Anchors := [anLeft,anRight,anTop,anBottom];
    Hint := '';
    Lines.Add('');
    FontDesc := '#Edit1';
    TabOrder := 3;
  end;

  {@VFD_BODY_END: MyFrame}
  {%endregion}

  { There still seems to be a minor issue with Popup Menus used in a frame. So
    for now the work around is to manually maintain the life of the Popup
    Menus - so Owner is set to nil. }
  framnuFile := TfpgPopupMenu.Create(nil);
  with framnuFile do
  begin
    Name := 'framnuFile';
    SetPosition(44, 64, 120, 20);
    AddMenuItem('Open...', '', nil);
    AddMenuItem('-', '', nil);
    AddMenuItem('Save', '', nil);
  end;
  miFile.SubMenu := framnuFile;

  framnuHelp := TfpgPopupMenu.Create(nil);
  with framnuHelp do
  begin
    Name := 'framnuHelp';
    SetPosition(44, 64, 120, 20);
    AddMenuItem('About fpGUI...', '', @miHelpAboutClicked);
  end;
  miHelp.SubMenu := framnuHelp;
end;


end.