From f9b905a28dcc0d8ef3a7c991ae0baf6187f1b859 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Wed, 9 Oct 2019 10:46:11 +0000 Subject: [PATCH] jvcllaz: Add TJvGammaPanel incl demo. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7154 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../design/JvCustomControls/images/images.txt | 3 +- .../JvCustomControls/images/tjvgammapanel.bmp | Bin 0 -> 1654 bytes .../design/JvCustomControls/jvcustomreg.pas | 5 +- .../JvGammaPanel/JvGammaPanelDemo.lpi | 83 ++++ .../JvGammaPanel/JvGammaPanelDemo.lpr | 22 + .../jvcllaz/examples/JvGammaPanel/main.lfm | 34 ++ .../jvcllaz/examples/JvGammaPanel/main.pas | 43 ++ components/jvcllaz/packages/jvcustomlazr.lpk | 6 +- components/jvcllaz/resource/jvcustomreg.res | Bin 46951 -> 48647 bytes components/jvcllaz/resource/jvgammapanel.res | Bin 0 -> 13196 bytes .../run/JvCustomControls/jvgammapanel.pas | 407 ++++++++++++++++++ 11 files changed, 599 insertions(+), 4 deletions(-) create mode 100644 components/jvcllaz/design/JvCustomControls/images/tjvgammapanel.bmp create mode 100644 components/jvcllaz/examples/JvGammaPanel/JvGammaPanelDemo.lpi create mode 100644 components/jvcllaz/examples/JvGammaPanel/JvGammaPanelDemo.lpr create mode 100644 components/jvcllaz/examples/JvGammaPanel/main.lfm create mode 100644 components/jvcllaz/examples/JvGammaPanel/main.pas create mode 100644 components/jvcllaz/resource/jvgammapanel.res create mode 100644 components/jvcllaz/run/JvCustomControls/jvgammapanel.pas diff --git a/components/jvcllaz/design/JvCustomControls/images/images.txt b/components/jvcllaz/design/JvCustomControls/images/images.txt index 9890e700d..897e65261 100644 --- a/components/jvcllaz/design/JvCustomControls/images/images.txt +++ b/components/jvcllaz/design/JvCustomControls/images/images.txt @@ -1,6 +1,7 @@ tjvtabbar.bmp tjvmoderntabbarpainter.bmp -Tjvtabbarxppainter.bmp +tjvtabbarxppainter.bmp +tjvgammapanel.bmp tjvoutlookbar.png tjvoutlookbar_150.png tjvoutlookbar_200.png diff --git a/components/jvcllaz/design/JvCustomControls/images/tjvgammapanel.bmp b/components/jvcllaz/design/JvCustomControls/images/tjvgammapanel.bmp new file mode 100644 index 0000000000000000000000000000000000000000..40b505f6892c44ba7fc29ee81e549d9ca3eca6eb GIT binary patch literal 1654 zcma*lL9Ww441i%jgb>_-9bR$*x@uyv=MFx_Tl*+pAkN_(5?6qQkMOpr=#_smZPg+w zaPq~86HUg+eEjtIO1Aj$Qsg~nZ%-cN^;WkRTbhT5t8)n%yF|>ykyEKEsUIaz-@b^b z!NCnp6k5at3Qo)sNEBMc1quTf9!M1W^j;+!9DzikML3mI7#x8_p_!yWVQ>Tzg%)9# zRu~+CM4`omX^LWOjzFT&vo%$+!4XIldbVv!HaG%_LeEd)N;WtGi9*lM6-qWZ0*OM; zPnk+KI0A`6&(B;+HaG%_LT|soTFC}SAW>)u`VUcz&K+Y*6k0+B3WFn%DD?boreuR7 zkSO&0rLJUyBakTc{N21H!r%xb3O$!XD%s!&Bnmy3Nh#Uj2qX%2Q?KJQs{7a@=+~9>*EjMv24M + + + + + + + + <Scaled Value="True"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <XPManifest> + <DpiAware Value="True"/> + </XPManifest> + <Icon Value="0"/> + </General> + <BuildModes> + <Item Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <UseFileFilters Value="True"/> + </PublishOptions> + <RunParams> + <FormatVersion Value="2"/> + <Modes Count="0"/> + </RunParams> + <RequiredPackages Count="2"> + <Item1> + <PackageName Value="JvCustomLazR"/> + </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> + </RequiredPackages> + <Units> + <Unit> + <Filename Value="JvGammaPanelDemo.lpr"/> + <IsPartOfProject Value="True"/> + </Unit> + <Unit> + <Filename Value="main.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="Form1"/> + <ResourceBaseClass Value="Form"/> + </Unit> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="../../bin/JvGammaPanelDemo"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Debugging> + <UseExternalDbgSyms Value="True"/> + </Debugging> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/components/jvcllaz/examples/JvGammaPanel/JvGammaPanelDemo.lpr b/components/jvcllaz/examples/JvGammaPanel/JvGammaPanelDemo.lpr new file mode 100644 index 000000000..fcb58d2f1 --- /dev/null +++ b/components/jvcllaz/examples/JvGammaPanel/JvGammaPanelDemo.lpr @@ -0,0 +1,22 @@ +program JvGammaPanelDemo; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX} + cthreads, + {$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, main + { you can add units after this }; + +{$R *.res} + +begin + RequireDerivedFormResource:=True; + Application.Scaled:=True; + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. + diff --git a/components/jvcllaz/examples/JvGammaPanel/main.lfm b/components/jvcllaz/examples/JvGammaPanel/main.lfm new file mode 100644 index 000000000..714332041 --- /dev/null +++ b/components/jvcllaz/examples/JvGammaPanel/main.lfm @@ -0,0 +1,34 @@ +object Form1: TForm1 + Left = 340 + Height = 393 + Top = 128 + Width = 431 + AutoSize = True + Caption = 'JvGammaPanel demo' + ClientHeight = 393 + ClientWidth = 431 + LCLVersion = '2.1.0.0' + object JvGammaPanel1: TJvGammaPanel + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = Owner + Left = 8 + Top = 8 + OnChangeColor = JvGammaPanel1ChangeColor + end + object StaticText1: TLabel + AnchorSideLeft.Control = JvGammaPanel1 + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = JvGammaPanel1 + AnchorSideTop.Side = asrCenter + Left = 105 + Height = 45 + Top = 111 + Width = 214 + BorderSpacing.Left = 32 + BorderSpacing.Right = 8 + Caption = ' This is a test... ' + Font.Height = -32 + ParentColor = False + ParentFont = False + end +end diff --git a/components/jvcllaz/examples/JvGammaPanel/main.pas b/components/jvcllaz/examples/JvGammaPanel/main.pas new file mode 100644 index 000000000..525ee0c68 --- /dev/null +++ b/components/jvcllaz/examples/JvGammaPanel/main.pas @@ -0,0 +1,43 @@ +unit main; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, JvGammaPanel, + JvTypes; + +type + + { TForm1 } + + TForm1 = class(TForm) + JvGammaPanel1: TJvGammaPanel; + StaticText1: TLabel; + procedure JvGammaPanel1ChangeColor(Sender: TObject; Foreground, + Background: TColor); + private + + public + + end; + +var + Form1: TForm1; + +implementation + +{$R *.lfm} + +{ TForm1 } + +procedure TForm1.JvGammaPanel1ChangeColor(Sender: TObject; Foreground, + Background: TColor); +begin + StaticText1.Color := Background; + StaticText1.Font.Color := Foreground; +end; + +end. + diff --git a/components/jvcllaz/packages/jvcustomlazr.lpk b/components/jvcllaz/packages/jvcustomlazr.lpk index fdcca5bb2..0d0ca45e9 100644 --- a/components/jvcllaz/packages/jvcustomlazr.lpk +++ b/components/jvcllaz/packages/jvcustomlazr.lpk @@ -16,7 +16,7 @@ TimeLine, OutlookBar, Thumbnail viewer, ImageViewer, ImageListViewer, OwnerDrawViewer"/> <License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/> <Version Major="1" Release="6"/> - <Files Count="12"> + <Files Count="13"> <Item1> <Filename Value="..\run\JvCustomControls\jvtimeline.pas"/> <UnitName Value="JvTimeLine"/> @@ -65,6 +65,10 @@ TimeLine, OutlookBar, Thumbnail viewer, ImageViewer, ImageListViewer, OwnerDrawV <Filename Value="..\run\JvCustomControls\jvvalidateedit.pas"/> <UnitName Value="jvvalidateedit"/> </Item12> + <Item13> + <Filename Value="..\run\JvCustomControls\jvgammapanel.pas"/> + <UnitName Value="JvGammaPanel"/> + </Item13> </Files> <RequiredPkgs Count="2"> <Item1> diff --git a/components/jvcllaz/resource/jvcustomreg.res b/components/jvcllaz/resource/jvcustomreg.res index 90fc54cae8f2d427021aee31a36fea2cc01a71cc..2894342b13eec342312a0041a202f4c4188e76bb 100644 GIT binary patch delta 1685 zcma*ny>1ji48U=dA`)+q4mVUhKxppHDG(9@M1iO%T=E38>y8JYNrhY>Y9wC39TE)> z0EIg`6iSpR;lDRIau-tI-QRl7`!zE=x*tFH-kj}yJU+PlYG35Oh+JIk$#Z!mFXW*d z$rH9Cd4{L*KpwySwSRBoq7k<?jXB49mx#FqHX2nW^}Xce%LfrPI5?q+LW`I{LBkw@ zM4?4opfEV^_duf1^V^^>I0A`6i_nx*7#x8_q3NYSVQ>Tzg%)9#Rv0Gd5J(hSOz5a6 z=FJgE6nYF!m27YX5``WEHzgY!fkdIlq_~nzY;va&NECX^SSZ=x2qX$UW;2y+a0C*C z9y47^HaG%_La)DqwUSLHYo`%N6k38A2vN*qcg$O&(Btc<k`0bPqR`{ZnUW2TK%&s& ztGbeH;@}7*3Ozn~DB0i$Bnmy2Ln_(e2qX$UmP#qv;0PoNy<SGqN}h~^BakSx6f;nw zFgOB<dF!#hRLKTMAW`VC_DsnJM<7w?u`XSuCO3XK0*OM8MH@;sI0A`6j|H7dHaG%_ zLXX8>N;WtGDJQ2F@}BF0=kfO-6Xw5(kvP)Cg?wIa#bU8IKO3>+a$<Rz=lba>r<QU^ z%=K@CP^Zei+O03I)u+u3oFHzzVN>6E@zwP!Vymy4j?U%n6X%z)T0dqpfN9f^#Y*lF zvRcY*Vy?d?uIj7*t1matxpqDEb*y$eFfo;*r<cdAk?hpBhIr$H=I6+7LU_SE)OjGM n#J}~`R{iDn4Vx2(*B*3L-x<N*k?`Sn`#S$(AfJv8zP|ed&`BXG delta 14 WcmZqw!}R<e(}o!mn=Rze&jSEB&j&OB diff --git a/components/jvcllaz/resource/jvgammapanel.res b/components/jvcllaz/resource/jvgammapanel.res new file mode 100644 index 0000000000000000000000000000000000000000..a76b25f9eefb6df1325965fa062ea5e1d2b5a1c6 GIT binary patch literal 13196 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 literal 0 HcmV?d00001 diff --git a/components/jvcllaz/run/JvCustomControls/jvgammapanel.pas b/components/jvcllaz/run/JvCustomControls/jvgammapanel.pas new file mode 100644 index 000000000..d57e13c6e --- /dev/null +++ b/components/jvcllaz/run/JvCustomControls/jvgammapanel.pas @@ -0,0 +1,407 @@ +{----------------------------------------------------------------------------- +The contents of this file are subject to the Mozilla Public License +Version 1.1 (the "License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/MPL-1.1.html + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for +the specific language governing rights and limitations under the License. + +The Original Code is: JvGammaPanel.PAS, released on 2001-02-28. + +The Initial Developer of the Original Code is Sébastien Buysse [sbuysse att buypin dott com] +Portions created by Sébastien Buysse are Copyright (C) 2001 Sébastien Buysse. +All Rights Reserved. + +Contributor(s): Michael Beck [mbeck att bigfoot dott com]. + +You may retrieve the latest version of this file at the Project JEDI's JVCL home page, +located at http://jvcl.delphi-jedi.org + +Modifications: + 2/11/2000 Added the Align and AutoSize property (Request of Brad T.) + 2004/01/06 VisualCLX compatibilty + +Known Issues: +-----------------------------------------------------------------------------} +// $Id$ + +unit JvGammaPanel; + +//{$I jvcl.inc} +{$MODE OBJFPC}{$H+} + + +interface + +uses + Types, SysUtils, Classes, + //Windows, Messages, + Graphics, Controls, Dialogs, + ExtCtrls, StdCtrls, + JvTypes; +// JvTypes, JvComponent; + +type + TJvGammaPanel = class(TWinControl) //TJvWinControl) + private + FForegroundColor: TColor; + FBackgroundColor: TColor; + LastCol: TColor; + FPanel1: TPanel; + FPanel2: TPanel; + FPanel3: TPanel; + FPanel4: TPanel; + FRLabel: TLabel; + FGLabel: TLabel; + FBLabel: TLabel; + FXLabel: TLabel; + FGamma: TImage; + FChoosed: TImage; + FForegroundColorImg: TImage; + FBackgroundColorImg: TImage; + FOnChangeColor: TJvChangeColorEvent; + procedure ChangeColor(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure ColorSeek(Sender: TObject; Shift: TShiftState; X, Y: Integer); + procedure Exchange(Sender: TObject); + procedure SetForegroundColor(const Value: TColor); + procedure SetBackgroundColor(const Value: TColor); + procedure Color1Click(Sender: TObject); + procedure Color2Click(Sender: TObject); + protected + procedure BoundsChanged; override; + procedure DoChangeColor(AForegroundColor, ABackgroundColor: TColor); virtual; + public + constructor Create(AOwner: TComponent); override; + published + property Align; + property AutoSize; + property BorderSpacing; + property Height default 250; + property Width default 65; + property ForegroundColor: TColor read FForegroundColor write SetForegroundColor default clBlack; + property BackgroundColor: TColor read FBackgroundColor write SetBackgroundColor default clWhite; + property OnChangeColor: TJvChangeColorEvent read FOnChangeColor write FOnChangeColor; + end; + + +implementation + +uses + LCLIntf, + JvResources; + +{$R ../../resource/jvgammapanel.res} + +constructor TJvGammaPanel.Create(AOwner: TComponent); +var + p5: Integer; +begin + inherited Create(AOwner); + Width := 65; + Height := 250; + FForegroundColor := clBlack; + FBackgroundColor := clWhite; + + FPanel1 := TPanel.Create(Self); + with FPanel1 do + begin + Parent := Self; +// Width := 65; +// Height := 250; + Align := alClient; + BevelInner := bvLowered; + BevelOuter := bvRaised; + Visible := True; + end; + + FPanel2 := TPanel.Create(FPanel1); + with FPanel2 do + begin + Parent := FPanel1; + Left := 5; + Top := 5; + Width := 55; + Height := 105; + BevelInner := bvLowered; + BevelOuter := bvRaised; + Visible := True; + end; + + FPanel3 := TPanel.Create(FPanel1); + with FPanel3 do + begin + Parent := FPanel1; + Left := 5; + Top := 115; + Width := 55; + Height := 50; + BevelInner := bvLowered; + BevelOuter := bvRaised; + Visible := True; + end; + + FPanel4 := TPanel.Create(FPanel1); + with FPanel4 do + begin + Parent := FPanel1; + Left := 5; + Top := 170; + Width := 55; + Height := 75; + BevelInner := bvLowered; + BevelOuter := bvRaised; + Visible := True; + end; + + FRLabel := TLabel.Create(FPanel4); + with FRLabel do + begin + Top := 2; + Left := 5; + AutoSize := True; + { + Font.Size := 8; + Font.Name := 'Arial'; + } + Caption := RsDefaultR; + Transparent := True; + Parent := FPanel4; + end; + + FGLabel := TLabel.Create(FPanel4); + with FGLabel do + begin + Top := 14; + Left := 5; + AutoSize := True; + { + Font.Name := 'Arial'; + Font.Size := 8; + } + Caption := RsDefaultG; + Transparent := True; + Parent := FPanel4; + end; + + FBLabel := TLabel.Create(FPanel4); + with FBLabel do + begin + Top := 26; + Left := 5; + { + Font.Size := 8; + Font.Name := 'arial'; + } + AutoSize := True; + Caption := RsDefaultB; + Transparent := True; + Parent := FPanel4; + end; + + FGamma := TImage.Create(FPanel2); + with FGamma do + begin + Parent := FPanel2; + Stretch := False; + Center := True; + AutoSize := True; + Picture.Bitmap.PixelFormat := pf24bit; + Width := 55; + Height := 105; + OnMouseDown := @ChangeColor; + OnMouseMove := @ColorSeek; + Align := alClient; + Picture.Bitmap.LoadFromResourceName(HInstance, 'JvGammaPanelCOLORS'); + Cursor := crCross; + end; + + FChoosed := TImage.Create(FPanel4); + with FChoosed do + begin + Top := 40; + Left := 12; + Width := 30; + Height := 30; + Parent := FPanel4; + Visible := True; + Stretch := False; + Align := alNone; +// Picture.Bitmap := TBitmap.Create; + Picture.Bitmap.Width := Width; + Picture.Bitmap.Height := Height; + Canvas.Brush.Color := clBlack; + Canvas.Brush.Style := bsSolid; + Canvas.FillRect(Rect(0, 0, Width, Height)); + end; + + FForegroundColorImg := TImage.Create(FPanel3); + with FForegroundColorImg do + begin + Left := 5; + Top := 5; + Width := 25; + Height := 25; +// Picture.Bitmap := TBitmap.Create; + Picture.Bitmap.Width := FChoosed.Width; + Picture.Bitmap.Height := FChoosed.Height; + Canvas.Brush.Color := clBlack; + Canvas.Brush.Style := bsSolid; + Canvas.FillRect(Rect(0, 0, FChoosed.Width, FChoosed.Height)); + Hint := RsHint2; + ShowHint := True; + OnClick := @Color1Click; + Parent := FPanel3; + Visible := True; + end; + + FBackgroundColorImg := TImage.Create(FPanel3); + with FBackgroundColorImg do + begin + Left := 25; + Top := 20; + Height := 25; + Width := 25; +// Picture.Bitmap := TBitmap.Create; + Picture.Bitmap.Width := FChoosed.Width; + Picture.Bitmap.Height := FChoosed.Height; + Canvas.Brush.Color := clWhite; + Canvas.Brush.Style := bsSolid; + Canvas.FillRect(Rect(0, 0, FChoosed.Width, FChoosed.Height)); + Hint := RsHint1; + ShowHint := True; + OnClick := @Color2Click; + Parent := FPanel3; + Visible := True; + end; + + FXLabel := TLabel.Create(FPanel3); + with FXLabel do + begin + Left := 7; + Top := 32; + AutoSize := True; + Caption := RsXCaption; + Hint := RsLabelHint; + OnClick := @Exchange; + ShowHint := True; + Visible := True; + Parent := FPanel3; + end; +end; + +procedure TJvGammaPanel.ChangeColor(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +begin + if Button = mbLeft then + begin + FForegroundColor := LastCol; + FForegroundColorImg.Canvas.Brush.Color := FForegroundColor; + FForegroundColorImg.Canvas.Brush.Style := bsSolid; + FForegroundColorImg.Canvas.FillRect(Rect(0, 0, FChoosed.Width, FChoosed.Height)); + DoChangeColor(FForegroundColor, FBackgroundColor); + end + else + if Button = mbRight then + begin + FBackgroundColor := LastCol; + FBackgroundColorImg.Canvas.Brush.Color := FBackgroundColor; + FBackgroundColorImg.Canvas.Brush.Style := bsSolid; + FBackgroundColorImg.Canvas.FillRect(Rect(0, 0, FChoosed.Width, FChoosed.Height)); + DoChangeColor(FForegroundColor, FBackgroundColor); + end; +end; + +procedure TJvGammaPanel.Color1Click(Sender: TObject); +begin + with TColorDialog.Create(Self) do + begin + if Execute then + SetForegroundColor(Color); + Free; + end; +end; + +procedure TJvGammaPanel.Color2Click(Sender: TObject); +begin + with TColorDialog.Create(Self) do + begin + if Execute then + SetBackgroundColor(Color); + Free; + end; +end; + +procedure TJvGammaPanel.ColorSeek(Sender: TObject; Shift: TShiftState; X, Y: Integer); +var + Col: TColor; +begin + if not PtInRect(Bounds(0, 0, FGamma.Picture.Width, FGamma.Picture.Height), Point(X,Y)) then + Exit; // asn for Linux/X11 + Col := FGamma.Picture.Bitmap.Canvas.Pixels[X, Y]; + LastCol := Col; + FRLabel.Caption := Format(RsRedFormat, [GetRValue(Col)]); + FGLabel.Caption := Format(RsGreenFormat, [GetGValue(Col)]); + FBLabel.Caption := Format(RsBlueFormat, [GetBValue(Col)]); + FChoosed.Canvas.Brush.Color := Col; + FChoosed.Canvas.Brush.Style := bsSolid; + FChoosed.Canvas.FillRect(Rect(0, 0, FChoosed.Width, FChoosed.Height)); +end; + +procedure TJvGammaPanel.Exchange(Sender: TObject); +var + Col: TColor; +begin + // exchange colors + Col := FForegroundColor; + FForegroundColor := FBackgroundColor; + FBackgroundColor := Col; + + FForegroundColorImg.Canvas.Brush.Color := FForegroundColor; + FForegroundColorImg.Canvas.Brush.Style := bsSolid; + FForegroundColorImg.Canvas.FillRect(Rect(0, 0, FChoosed.Width, FChoosed.Height)); + + FBackgroundColorImg.Canvas.Brush.Color := FBackgroundColor; + FBackgroundColorImg.Canvas.Brush.Style := bsSolid; + FBackgroundColorImg.Canvas.FillRect(Rect(0, 0, FChoosed.Width, FChoosed.Height)); + + if Assigned(FOnChangeColor) then + FOnChangeColor(Self, FForegroundColor, FBackgroundColor); +end; + +procedure TJvGammaPanel.SetForegroundColor(const Value: TColor); +begin + FForegroundColor := Value; + FForegroundColorImg.Canvas.Brush.Color := FForegroundColor; + FForegroundColorImg.Canvas.Brush.Style := bsSolid; + FForegroundColorImg.Canvas.FillRect(Rect(0, 0, FChoosed.Width, FChoosed.Height)); + if Assigned(FOnChangeColor) then + FOnChangeColor(Self, FForegroundColor, FBackgroundColor); +end; + +procedure TJvGammaPanel.SetBackgroundColor(const Value: TColor); +begin + FBackgroundColor := Value; + FBackgroundColorImg.Canvas.Brush.Color := FBackgroundColor; + FBackgroundColorImg.Canvas.Brush.Style := bsSolid; + FBackgroundColorImg.Canvas.FillRect(Rect(0, 0, FChoosed.Width, FChoosed.Height)); + if Assigned(FOnChangeColor) then + FOnChangeColor(Self, FForegroundColor, FBackgroundColor); +end; + +procedure TJvGammaPanel.BoundsChanged; +begin + Width := 65; + Height := 250; + if Assigned(FForegroundColorImg) then + FForegroundColorImg.BringToFront; +end; + +procedure TJvGammaPanel.DoChangeColor(AForegroundColor, ABackgroundColor: TColor); +begin + if Assigned(FOnChangeColor) then + FOnChangeColor(Self, AForegroundColor, ABackgroundColor); +end; + + +end.