Skip to content

Commit 6481f84

Browse files
committed
Remember the last demo form displayed, so we can get that Form OnDestroy event called when switching to another demo form. This is important as demo forms might do cleanup or other things on destroy.
1 parent 3deca15 commit 6481f84

2 files changed

Lines changed: 25 additions & 30 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,4 @@ src/
4747
demos/FireMonkey/TeeGridFeatures/Win32/
4848
*.rsm
4949
demos/VirtualData/Custom Sorting/__recovery/
50+
__recovery

demos/FireMonkey/TeeGridFeatures/Main.pas

Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface
1212
Appearance, Unit_Editors, Unit_Locked_Columns, Unit_Custom_Sorting,
1313
Master_Detail_FireDAC, Unit_DataSet,
1414
Unit_FMX_Themes, Unit_FMX_Ticker, Exporting, Unit_FMX_REST, System.ImageList,
15-
FMX.ImgList, Unit_Master_Detail_Two_Grids, ArrayData
15+
FMX.ImgList, Unit_Master_Detail_Two_Grids, ArrayData, FMX.Menus
1616
;
1717

1818
type
@@ -43,10 +43,13 @@ TMainForm = class(TForm)
4343
procedure ListView1ItemClick(const Sender: TObject; const AItem: TListViewItem);
4444
procedure FormCreate(Sender: TObject);
4545
private
46+
CurrentDemo : TCustomForm;
47+
4648
procedure AddDemosToListView;
47-
procedure RegisterClasses;
49+
procedure DestroyCurrentDemo;
4850
procedure CreateFormFromName(const FormName: string);
4951
procedure EmbeddForm(AParent: TControl; AForm: TCustomForm);
52+
procedure RegisterClasses;
5053
public
5154
end;
5255

@@ -60,9 +63,9 @@ TMainForm = class(TForm)
6063

6164
GroupHeaders = 4;
6265
GroupHeadersArray : array [1..GroupHeaders] of string = ('Adding Data',
63-
'Appearance',
64-
'Exporting',
65-
'Other Features');
66+
'Appearance',
67+
'Exporting',
68+
'Other Features');
6669

6770
NumDemos = 12;
6871
Demos : array[1..NumDemos] of TDemo =
@@ -125,21 +128,6 @@ procedure TMainForm.AddDemosToListView;
125128
finally
126129
ListView1.EndUpdate;
127130
end;
128-
129-
(*
130-
131-
ListView1.BeginUpdate;
132-
try
133-
for I := 1 to NumDemos do
134-
begin
135-
LItem := ListView1.Items.Add;
136-
LItem.Text := DemosTitlearray[I];
137-
LItem.TagString := DemosNameArray[I];
138-
end;
139-
finally
140-
ListView1.EndUpdate;
141-
end;
142-
*)
143131
end;
144132

145133
procedure TMainForm.FormCreate(Sender: TObject);
@@ -148,14 +136,21 @@ procedure TMainForm.FormCreate(Sender: TObject);
148136
AddDemosToListView;
149137
end;
150138

151-
procedure TMainForm.ListView1ItemClick(const Sender: TObject; const AItem: TListViewItem);
152-
var
153-
s : string;
139+
procedure TMainForm.DestroyCurrentDemo;
154140
begin
155-
MultiView1.HideMaster;
141+
CurrentDemo.Free;
142+
CurrentDemo:=nil;
156143

157144
while LayoutDemo.ChildrenCount>0 do
158145
LayoutDemo.Children[0].Free;
146+
end;
147+
148+
procedure TMainForm.ListView1ItemClick(const Sender: TObject; const AItem: TListViewItem);
149+
var s : string;
150+
begin
151+
MultiView1.HideMaster;
152+
153+
DestroyCurrentDemo;
159154

160155
s := AItem.TagString;
161156
DetailLabel.Text := AItem.Text;
@@ -180,17 +175,16 @@ procedure TMainForm.RegisterClasses;
180175
end;
181176

182177
procedure TMainForm.CreateFormFromName(const FormName : string);
183-
var
184-
ObjClass: TFmxObjectClass;
185-
NewForm : TCustomForm;
178+
var ObjClass: TFmxObjectClass;
186179
begin
187180
ObjClass := TFmxObjectClass(GetClass(FormName));
188181

189182
if ObjClass <> nil then
190183
begin
191-
NewForm := ObjClass.Create(Self) as TCustomForm;
192-
if Assigned(NewForm) then
193-
EmbeddForm(LayoutDemo,NewForm);
184+
CurrentDemo:= ObjClass.Create(Self) as TCustomForm;
185+
186+
if Assigned(CurrentDemo) then
187+
EmbeddForm(LayoutDemo,CurrentDemo);
194188
end
195189
end;
196190

0 commit comments

Comments
 (0)