From 82fa654c7ac0942a080405ae5b2654c8b09d539e Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sun, 4 Dec 2016 20:09:30 +0000 Subject: [PATCH] jvcllaz: Add TXPStyleManager git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5411 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/jvcllaz/packages/JvXPCtrlsReg.pp | 5 +- components/jvcllaz/resource/JvXPCtrlsLaz.lrs | 20 +++++++ components/jvcllaz/run/JvXPButtons.pas | 4 +- components/jvcllaz/run/JvXPCheckCtrls.pas | 4 +- components/jvcllaz/run/JvXPCore.pas | 59 ++++++++++---------- 5 files changed, 58 insertions(+), 34 deletions(-) diff --git a/components/jvcllaz/packages/JvXPCtrlsReg.pp b/components/jvcllaz/packages/JvXPCtrlsReg.pp index 12f323799..95797d473 100644 --- a/components/jvcllaz/packages/JvXPCtrlsReg.pp +++ b/components/jvcllaz/packages/JvXPCtrlsReg.pp @@ -12,7 +12,7 @@ procedure Register; implementation uses - JvXPBar, JvXPContainer, JvXPButtons, JvXPCheckCtrls; + JvXPCore, JvXPBar, JvXPContainer, JvXPButtons, JvXPCheckCtrls; procedure Register; begin @@ -21,7 +21,8 @@ begin TJvXPContainer, TJvXPButton, TJvXPToolButton, - TJvXPCheckbox + TJvXPCheckbox, + TJvXPStyleManager ]); end; diff --git a/components/jvcllaz/resource/JvXPCtrlsLaz.lrs b/components/jvcllaz/resource/JvXPCtrlsLaz.lrs index 5a099bae0..7a0287447 100644 --- a/components/jvcllaz/resource/JvXPCtrlsLaz.lrs +++ b/components/jvcllaz/resource/JvXPCtrlsLaz.lrs @@ -84,3 +84,23 @@ LazarusResources.Add('TJvXpCheckbox','PNG',[ +#138#248#9'x;'#255'j'#213#189#166#127#166'I'#183#254#181'|i5'#0#0#0#0'IEND' +#174'B`'#130 ]); +LazarusResources.Add('TJvXPStyleManager','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#6#0#0#0#224'w='#248#0 + +#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#1'nIDATH'#137#173'U;v' + +#195' '#16#156#205#211#21#146#214#212#206'!'#196'%'#236#218'7'#17#186#142'}' + +#9't'#9#213'['#199'}'#218'Ma'#144#0#1'"'#182#231'='#158#216#5'vv'#150#143#136 + +'-'#4#30#10'o'#1#7#253#14#0#148'~!'#24'''v2'#222#249#142#136#224#191' '#162 + +'jp'#0#248#136#202'r'#159'''"Bk'#3#0#165#214#150'C'#151's'#190'C'#205#170#160 + +#132''''#212'h'#181#182#170#130#16#175#170#217'%'#0#0#220#231#169'9'#250'|' + +#179#0#6'o'#150'K'#148'_'#152#253#210#215'w'#191#216#9#218#9#142''''#157#251 + +#146'6C'#228#127#154#160#148'y:'#158#160'm'#15#0#224'x'#210'.`/?'#167'i'#201 + +#28#128'X3'#182')(d'#145#142#133#153'/'#193'3k'#25#129#2'w'#180#134'tR'#168 + +'@,'#198'b'#230#137#2#14#21'0'#175#173#168'f'#190#217#7#137#25#179#153#23#212 + +#19'3'#162#155#148#190')"'#178#189#7#142#12#0#232#243#216#163#130#205'&3'#175 + +#242#150'+'#159#203#206#251#250#161#7#141#231'v'#130#196#222#221#27#217#14 + +#137#152'+'#145'9o'#8#210#224'6ud'#160'w'#198#31#127'4U'#159'd9~!='#177'V'#0 + +'v'#222#194#14'p'''#162#130#9#143#163#25#6#182#236#136#221#156#176','#17#1#3 + +'8'#20'n'#225#130'_'#147'usu'#145'#'#0#226#155#153'CT'#18'g3'#128#139#194'R"' + +'"s'#22'1W'#223#247'k'#137'a'#133'Y7'#228#178#130#131#254#229' '#168#29#211 + +'?='#214#180'M'#214'b'#159#182#0#0#0#0'IEND'#174'B`'#130 +]); diff --git a/components/jvcllaz/run/JvXPButtons.pas b/components/jvcllaz/run/JvXPButtons.pas index fefea014b..d1f509b7c 100644 --- a/components/jvcllaz/run/JvXPButtons.pas +++ b/components/jvcllaz/run/JvXPButtons.pas @@ -159,7 +159,7 @@ type property PopupMenu; property ShowHint; property Style; -// property StyleManager; + property StyleManager; property Visible; //property OnDockDrop; //property OnDockOver; @@ -255,7 +255,7 @@ type property PopupMenu; property ShowHint; property Style; -// property StyleManager; + property StyleManager; property Visible; //property OnDockDrop; //property OnDockOver; diff --git a/components/jvcllaz/run/JvXPCheckCtrls.pas b/components/jvcllaz/run/JvXPCheckCtrls.pas index 383cdeee6..16199bcf0 100644 --- a/components/jvcllaz/run/JvXPCheckCtrls.pas +++ b/components/jvcllaz/run/JvXPCheckCtrls.pas @@ -113,8 +113,8 @@ type property ParentShowHint; property PopupMenu; property ShowHint; -// property Style; -// property StyleManager; + property Style; + property StyleManager; property Visible; //property OnDockDrop; //property OnDockOver; diff --git a/components/jvcllaz/run/JvXPCore.pas b/components/jvcllaz/run/JvXPCore.pas index 3dd73c759..9a1d88793 100644 --- a/components/jvcllaz/run/JvXPCore.pas +++ b/components/jvcllaz/run/JvXPCore.pas @@ -133,8 +133,8 @@ type { baseclass for focusable control descendants. } -// TJvXPCustomControl = class(TCustomControl) //(TJvCustomControl) - TJvXPCustomControl = class(TJvCustomControl) + TJvXPCustomControl = class(TCustomControl) //(TJvCustomControl) +// TJvXPCustomControl = class(TJvCustomControl) private FClicking: Boolean; FDrawState: TJvXPDrawState; @@ -253,20 +253,19 @@ type TJvXPStyle = class(TPersistent) private FTheme: TJvXPTheme; - //FUseStyleManager: Boolean; + FUseStyleManager: Boolean; protected Parent: TJvXPCustomStyleControl; procedure SetTheme(Value: TJvXPTheme); virtual; - //procedure SetUseStyleManager(Value: Boolean); virtual; + procedure SetUseStyleManager(Value: Boolean); virtual; public constructor Create(AOwner: TComponent); function GetTheme: TJvXPTheme; published property Theme: TJvXPTheme read FTheme write SetTheme default WindowsXP; - //property UseStyleManager: Boolean read FUseStyleManager write SetUseStyleManager default True; + property UseStyleManager: Boolean read FUseStyleManager write SetUseStyleManager default True; end; - (******************** NOT CONVERTED TJvXPStyleManager = class(TJvXPCustomComponent) private FControls: TList; @@ -274,6 +273,7 @@ type FOnThemeChanged: TNotifyEvent; procedure InvalidateControls; protected + procedure FreeNotifyControls; procedure SetTheme(Value: TJvXPTheme); virtual; public constructor Create(AOwner: TComponent); override; @@ -284,17 +284,16 @@ type property Theme: TJvXPTheme read FTheme write SetTheme default WindowsXP; property OnThemeChanged: TNotifyEvent read FOnThemeChanged write FOnThemeChanged; end; - ******************** NOT CONVERTED *) TJvXPCustomStyleControl = class(TJvXPCustomControl) private FStyle: TJvXPStyle; - //FStyleManager: TJvXPStyleManager; + FStyleManager: TJvXPStyleManager; protected - //procedure SetStyleManager(Value: TJvXPStyleManager); virtual; - //procedure Notification(AComponent: TComponent; Operation: TOperation); override; + procedure SetStyleManager(Value: TJvXPStyleManager); virtual; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; property Style: TJvXPStyle read FStyle write FStyle; - //property StyleManager: TJvXPStyleManager read FStyleManager write SetStyleManager; + property StyleManager: TJvXPStyleManager read FStyleManager write SetStyleManager; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -675,7 +674,7 @@ begin inherited Create; Parent := TJvXPCustomStyleControl(AOwner); FTheme := WindowsXP; - //FUseStyleManager := True; + FUseStyleManager := True; end; procedure TJvXPStyle.SetTheme(Value: TJvXPTheme); @@ -690,13 +689,10 @@ end; function TJvXPStyle.GetTheme: TJvXPTheme; begin Result := FTheme; - { if FUseStyleManager and Assigned(Parent.StyleManager) then Result := Parent.StyleManager.Theme; - } end; -{ procedure TJvXPStyle.SetUseStyleManager(Value: Boolean); begin if Value <> FUseStyleManager then @@ -705,9 +701,7 @@ begin Parent.InternalRedraw; end; end; - } -(******************** NOT CONVERTED //=== { TJvXPStyleManager } ================================================== @@ -721,17 +715,26 @@ end; destructor TJvXPStyleManager.Destroy; begin InvalidateControls; + FreeNotifyControls; FControls.Free; inherited Destroy; end; +procedure TJvXPStyleManager.FreeNotifyControls; +var + J: Integer; +begin + for J := 0 to FControls.Count - 1 do + TJvXPCustomControl(FControls[J]).Notification(self, opRemove); +end; + procedure TJvXPStyleManager.InvalidateControls; var I: Integer; begin for I := 0 to FControls.Count - 1 do - with TJvXPCustomControl(FControls[I]) do - InternalRedraw; + with TJvXPCustomControl(FControls[I]) do + InternalRedraw; end; procedure TJvXPStyleManager.SetTheme(Value: TJvXPTheme); @@ -756,13 +759,15 @@ end; procedure TJvXPStyleManager.UnregisterControls(const AControls: array of TJvXPCustomControl); var - I: Integer; + I, J: Integer; begin for I := Low(AControls) to High(AControls) do - if FControls.IndexOf(AControls[I]) <> -1 then - FControls.Delete(FControls.IndexOf(AControls[I])); + begin + J := FControls.IndexOf(AControls[I]); + if J <> -1 then + FControls.Delete(J); + end; end; -******************** NOT CONVERTED *) //=== { TJvXPCustomStyleControl } ============================================ @@ -771,19 +776,17 @@ constructor TJvXPCustomStyleControl.Create(AOwner: TComponent); begin inherited Create(AOwner); FStyle := TJvXPStyle.Create(Self); - //FStyleManager := nil; + FStyleManager := nil; end; destructor TJvXPCustomStyleControl.Destroy; begin - { if FStyleManager <> nil then FStyleManager.UnregisterControls([Self]); - } FStyle.Free; inherited Destroy; end; - { + procedure TJvXPCustomStyleControl.Notification(AComponent: TComponent; Operation: TOperation); begin @@ -803,7 +806,7 @@ begin FStyleManager := Value; InternalRedraw; end; -end; } +end; (******************** NOT CONVERTED