From a3bab6dc9898e1301d85694c859a1c6da024e81c Mon Sep 17 00:00:00 2001 From: Andrea Magni Date: Tue, 3 Nov 2015 08:49:17 +0100 Subject: [PATCH] * added DefaultParent property --- lib/cpp/FrameStand.hpp | 6 ++++-- source/FrameStand.pas | 24 ++++++++++++++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/lib/cpp/FrameStand.hpp b/lib/cpp/FrameStand.hpp index 0823977..5e020e3 100755 --- a/lib/cpp/FrameStand.hpp +++ b/lib/cpp/FrameStand.hpp @@ -302,6 +302,7 @@ class PASCALIMPLEMENTATION TFrameStand : public System::Classes::TComponent Fmx::Actnlist::TActionList* FCommonActionList; System::UnicodeString FCommonActionPrefix; TOnBindCommonActionList FOnBindCommonActionList; + Fmx::Types::TFmxObject* FDefaultParent; int __fastcall GetCount(void); protected: @@ -322,12 +323,13 @@ class PASCALIMPLEMENTATION TFrameStand : public System::Classes::TComponent __property System::Generics::Collections::TObjectDictionary__2*>* FrameInfos = {read=FFrameInfos}; __published: - __property Fmx::Controls::TStyleBook* StyleBook = {read=FStyleBook, write=FStyleBook}; - __property System::UnicodeString DefaultStyleName = {read=FDefaultStyleName, write=FDefaultStyleName}; __property System::UnicodeString AnimationShow = {read=FAnimationShow, write=FAnimationShow}; __property System::UnicodeString AnimationHide = {read=FAnimationHide, write=FAnimationHide}; __property Fmx::Actnlist::TActionList* CommonActionList = {read=FCommonActionList, write=FCommonActionList}; __property System::UnicodeString CommonActionPrefix = {read=FCommonActionPrefix, write=FCommonActionPrefix}; + __property System::UnicodeString DefaultStyleName = {read=FDefaultStyleName, write=FDefaultStyleName}; + __property Fmx::Types::TFmxObject* DefaultParent = {read=FDefaultParent, write=FDefaultParent}; + __property Fmx::Controls::TStyleBook* StyleBook = {read=FStyleBook, write=FStyleBook}; __property TOnBeforeShowEvent OnBeforeShow = {read=FOnBeforeShow, write=FOnBeforeShow}; __property TOnBeforeStartAnimationEvent OnBeforeStartAnimation = {read=FOnBeforeStartAnimation, write=FOnBeforeStartAnimation}; __property TOnBindCommonActionList OnBindCommonActionList = {read=FOnBindCommonActionList, write=FOnBindCommonActionList}; diff --git a/source/FrameStand.pas b/source/FrameStand.pas index 9f7127d..5f45f48 100755 --- a/source/FrameStand.pas +++ b/source/FrameStand.pas @@ -137,6 +137,7 @@ TFrameStand = class(TComponent) FCommonActionList: TActionList; FCommonActionPrefix: string; FOnBindCommonActionList: TOnBindCommonActionList; + FDefaultParent: TFmxObject; function GetCount: Integer; protected FFrameInfos: TObjectDictionary>; @@ -160,12 +161,13 @@ TFrameStand = class(TComponent) property CommonActions: TCommonActionDictionary read FCommonActions; property FrameInfos: TObjectDictionary> read FFrameInfos; published - property StyleBook: TStyleBook read FStyleBook write FStyleBook; - property DefaultStyleName: string read FDefaultStyleName write FDefaultStyleName; property AnimationShow: string read FAnimationShow write FAnimationShow; property AnimationHide: string read FAnimationHide write FAnimationHide; property CommonActionList: TActionList read FCommonActionList write FCommonActionList; property CommonActionPrefix: string read FCommonActionPrefix write FCommonActionPrefix; + property DefaultStyleName: string read FDefaultStyleName write FDefaultStyleName; + property DefaultParent: TFmxObject read FDefaultParent write FDefaultParent; + property StyleBook: TStyleBook read FStyleBook write FStyleBook; // Events property OnBeforeShow: TOnBeforeShowEvent read FOnBeforeShow write FOnBeforeShow; @@ -219,7 +221,10 @@ function TFrameStand.GetCount: Integer; function TFrameStand.GetDefaultParent: TFmxObject; begin - Result := Self.Owner as TFmxObject; + if Assigned(FDefaultParent) then + Result := FDefaultParent + else + Result := Self.Owner as TFmxObject; end; function TFrameStand.GetFrameClass(const AParent: TFmxObject; const AStandStyleName: string): TFrameClass; @@ -259,11 +264,16 @@ function TFrameStand.Use(const AFrame: T; const AParent: TFmxObject; const AS function TFrameStand.New(const AParent: TFmxObject; const AStandStyleName: string): TFrameInfo; var LFrame: T; + LParent: TFmxObject; begin - LFrame := T(GetFrameClass(AParent, AStandStyleName).Create(nil)); + LParent := AParent; + if not Assigned(LParent) then + LParent := GetDefaultParent; + + LFrame := T(GetFrameClass(LParent, AStandStyleName).Create(nil)); try LFrame.Name := ''; - Result := Use(LFrame, AParent, AStandStyleName); + Result := Use(LFrame, LParent, AStandStyleName); Result.FrameIsOwned := True; except LFrame.Free; @@ -281,7 +291,9 @@ procedure TFrameStand.Notification(AComponent: TComponent; if (AComponent = FStyleBook) then FStyleBook := nil else if (AComponent = FCommonActionList) then - FCommonActionList := nil; + FCommonActionList := nil + else if (AComponent = FDefaultParent) then + FDefaultParent := nil; end; end;