Skip to content

Commit a3bab6d

Browse files
committed
* added DefaultParent property
1 parent 7538da2 commit a3bab6d

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

lib/cpp/FrameStand.hpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ class PASCALIMPLEMENTATION TFrameStand : public System::Classes::TComponent
302302
Fmx::Actnlist::TActionList* FCommonActionList;
303303
System::UnicodeString FCommonActionPrefix;
304304
TOnBindCommonActionList FOnBindCommonActionList;
305+
Fmx::Types::TFmxObject* FDefaultParent;
305306
int __fastcall GetCount(void);
306307

307308
protected:
@@ -322,12 +323,13 @@ class PASCALIMPLEMENTATION TFrameStand : public System::Classes::TComponent
322323
__property System::Generics::Collections::TObjectDictionary__2<Fmx::Forms::TFrame*,TFrameInfo__1<Fmx::Forms::TFrame*>*>* FrameInfos = {read=FFrameInfos};
323324

324325
__published:
325-
__property Fmx::Controls::TStyleBook* StyleBook = {read=FStyleBook, write=FStyleBook};
326-
__property System::UnicodeString DefaultStyleName = {read=FDefaultStyleName, write=FDefaultStyleName};
327326
__property System::UnicodeString AnimationShow = {read=FAnimationShow, write=FAnimationShow};
328327
__property System::UnicodeString AnimationHide = {read=FAnimationHide, write=FAnimationHide};
329328
__property Fmx::Actnlist::TActionList* CommonActionList = {read=FCommonActionList, write=FCommonActionList};
330329
__property System::UnicodeString CommonActionPrefix = {read=FCommonActionPrefix, write=FCommonActionPrefix};
330+
__property System::UnicodeString DefaultStyleName = {read=FDefaultStyleName, write=FDefaultStyleName};
331+
__property Fmx::Types::TFmxObject* DefaultParent = {read=FDefaultParent, write=FDefaultParent};
332+
__property Fmx::Controls::TStyleBook* StyleBook = {read=FStyleBook, write=FStyleBook};
331333
__property TOnBeforeShowEvent OnBeforeShow = {read=FOnBeforeShow, write=FOnBeforeShow};
332334
__property TOnBeforeStartAnimationEvent OnBeforeStartAnimation = {read=FOnBeforeStartAnimation, write=FOnBeforeStartAnimation};
333335
__property TOnBindCommonActionList OnBindCommonActionList = {read=FOnBindCommonActionList, write=FOnBindCommonActionList};

source/FrameStand.pas

+18-6
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ TFrameStand = class(TComponent)
137137
FCommonActionList: TActionList;
138138
FCommonActionPrefix: string;
139139
FOnBindCommonActionList: TOnBindCommonActionList;
140+
FDefaultParent: TFmxObject;
140141
function GetCount: Integer;
141142
protected
142143
FFrameInfos: TObjectDictionary<TFrame, TFrameInfo<TFrame>>;
@@ -160,12 +161,13 @@ TFrameStand = class(TComponent)
160161
property CommonActions: TCommonActionDictionary read FCommonActions;
161162
property FrameInfos: TObjectDictionary<TFrame, TFrameInfo<TFrame>> read FFrameInfos;
162163
published
163-
property StyleBook: TStyleBook read FStyleBook write FStyleBook;
164-
property DefaultStyleName: string read FDefaultStyleName write FDefaultStyleName;
165164
property AnimationShow: string read FAnimationShow write FAnimationShow;
166165
property AnimationHide: string read FAnimationHide write FAnimationHide;
167166
property CommonActionList: TActionList read FCommonActionList write FCommonActionList;
168167
property CommonActionPrefix: string read FCommonActionPrefix write FCommonActionPrefix;
168+
property DefaultStyleName: string read FDefaultStyleName write FDefaultStyleName;
169+
property DefaultParent: TFmxObject read FDefaultParent write FDefaultParent;
170+
property StyleBook: TStyleBook read FStyleBook write FStyleBook;
169171

170172
// Events
171173
property OnBeforeShow: TOnBeforeShowEvent read FOnBeforeShow write FOnBeforeShow;
@@ -219,7 +221,10 @@ function TFrameStand.GetCount: Integer;
219221

220222
function TFrameStand.GetDefaultParent: TFmxObject;
221223
begin
222-
Result := Self.Owner as TFmxObject;
224+
if Assigned(FDefaultParent) then
225+
Result := FDefaultParent
226+
else
227+
Result := Self.Owner as TFmxObject;
223228
end;
224229

225230
function TFrameStand.GetFrameClass<T>(const AParent: TFmxObject; const AStandStyleName: string): TFrameClass;
@@ -259,11 +264,16 @@ function TFrameStand.Use<T>(const AFrame: T; const AParent: TFmxObject; const AS
259264
function TFrameStand.New<T>(const AParent: TFmxObject; const AStandStyleName: string): TFrameInfo<T>;
260265
var
261266
LFrame: T;
267+
LParent: TFmxObject;
262268
begin
263-
LFrame := T(GetFrameClass<T>(AParent, AStandStyleName).Create(nil));
269+
LParent := AParent;
270+
if not Assigned(LParent) then
271+
LParent := GetDefaultParent;
272+
273+
LFrame := T(GetFrameClass<T>(LParent, AStandStyleName).Create(nil));
264274
try
265275
LFrame.Name := '';
266-
Result := Use<T>(LFrame, AParent, AStandStyleName);
276+
Result := Use<T>(LFrame, LParent, AStandStyleName);
267277
Result.FrameIsOwned := True;
268278
except
269279
LFrame.Free;
@@ -281,7 +291,9 @@ procedure TFrameStand.Notification(AComponent: TComponent;
281291
if (AComponent = FStyleBook) then
282292
FStyleBook := nil
283293
else if (AComponent = FCommonActionList) then
284-
FCommonActionList := nil;
294+
FCommonActionList := nil
295+
else if (AComponent = FDefaultParent) then
296+
FDefaultParent := nil;
285297
end;
286298
end;
287299

0 commit comments

Comments
 (0)