jvcllaz: Add examples for full color dialogs

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6685 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2018-10-13 21:48:56 +00:00
parent 6f473af069
commit 56dd5e49ea
8 changed files with 882 additions and 0 deletions

View File

@ -0,0 +1,72 @@
object JvFullColorCircleDlgMainFrm: TJvFullColorCircleDlgMainFrm
Left = 498
Height = 394
Top = 236
Width = 343
BorderStyle = bsDialog
Caption = 'JvFullColorCircleDlgMainFrm'
ClientHeight = 394
ClientWidth = 343
Color = clBtnFace
Font.Color = clWindowText
KeyPreview = True
OnCreate = FormCreate
Position = poScreenCenter
LCLVersion = '2.1.0.0'
object Bevel: TBevel
Left = 16
Height = 108
Top = 48
Width = 108
Style = bsRaised
end
object Image: TImage
Left = 20
Height = 100
Top = 52
Width = 100
Center = True
end
object LabelImage: TLabel
Left = 24
Height = 15
Top = 16
Width = 39
Caption = 'Image :'
Layout = tlCenter
ParentColor = False
end
object Memo: TMemo
Left = 8
Height = 65
Top = 160
Width = 129
Alignment = taCenter
BorderStyle = bsNone
Lines.Strings = (
'Original image'
)
OnKeyDown = MemoKeyDown
OnKeyPress = MemoKeyPress
ParentColor = True
TabOrder = 0
end
object ComboBoxFileName: TComboBox
Left = 72
Height = 23
Top = 16
Width = 257
DropDownCount = 24
ItemHeight = 15
OnClick = ComboBoxFileNameSelect
OnSelect = ComboBoxFileNameSelect
Style = csDropDownList
TabOrder = 1
end
object JvFullColorCircleDialog: TJvFullColorCircleDialog
HelpContext = 0
OnApply = JvFullColorCircleDialogApply
left = 184
top = 80
end
end

View File

@ -0,0 +1,382 @@
{******************************************************************
JEDI-VCL Demo
Copyright (C) 2004 Project JEDI
Original author: Florent Ouchet [ouchet dott florent att laposte dott net]
Contributor(s):
You may retrieve the latest version of this file at the JEDI-JVCL
home page, located at http://jvcl.delphi-jedi.org
The contents of this file are used with permission, 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_1Final.html
Software distributed under the License is distributed on an
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
******************************************************************}
unit JvFullColorCircleDialogMainForm;
{$mode objfpc}{$H+}
interface
uses
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, JvFullColorSpaces, JvFullColorCircleForm,
JvFullColorDialogs, JvFullColorRotate;
type
{ TJvFullColorCircleDlgMainFrm }
TJvFullColorCircleDlgMainFrm = class(TForm)
Image: TImage;
Bevel: TBevel;
Memo: TMemo;
LabelImage: TLabel;
ComboBoxFileName: TComboBox;
JvFullColorCircleDialog: TJvFullColorCircleDialog;
procedure FormCreate(Sender: TObject);
procedure MemoKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure MemoKeyPress(Sender: TObject; var Key: Char);
procedure ComboBoxFileNameSelect(Sender: TObject);
procedure JvFullColorCircleDialogApply(Sender: TObject);
public
Images: array [0..6] of TImage;
Memos: array [0..6] of TMemo;
procedure CustomizeDblClick(Sender: TObject);
procedure RotateCustomValues;
procedure FormatMemo(AMemo: TMemo; const Delta: TJvColorDelta);
end;
var
JvFullColorCircleDlgMainFrm: TJvFullColorCircleDlgMainFrm;
implementation
{$R *.lfm}
uses Contnrs;
resourcestring
RsCustomize = 'Dbl-click to customize';
var
ImgDir: String = '';
type
TJvColorDeltaList = class (TObjectList)
private
function GetItems(Index: Integer): TJvColorDelta;
procedure SetItems(Index: Integer; const Value: TJvColorDelta);
public
property Items[Index: Integer]: TJvColorDelta read GetItems write SetItems; default;
end;
var
ColorDeltas: TJvColorDeltaList;
procedure TJvFullColorCircleDlgMainFrm.FormCreate(Sender: TObject);
var
X, Y: Integer;
PitchX, PitchY: Integer;
LImage: TImage;
LMemo: TMemo;
LBevel: TBevel;
Index: Integer;
LSearchRec: TSearchRec;
begin
ImgDir := IncludeTrailingPathDelimiter(GetCurrentDir) + '..\..\design\JvCtrls\images\';
if FindFirst(ImgDir + '*.png', faAnyFile, LSearchRec) = 0 then
repeat
ComboBoxFileName.Items.Add(LSearchRec.Name);
until FindNext(LSearchRec) <> 0;
FindClose(LSearchRec);
PitchX := Memo.Width + 32;
PitchY := Memo.Top + Memo.Height - Image.Top + 31;
Index := 0;
Image.Picture.Bitmap := TBitmap.Create;
for X := 0 to 3 do
for Y := 0 to 1 do
if (X <> 0) or (Y <> 0) then
begin
LBevel := TBevel.Create(Self);
LBevel.Parent := Self;
LBevel.Style := bsRaised;
LBevel.SetBounds(Bevel.Left+X*PitchX, Bevel.Top+Y*PitchY, Bevel.Width, Bevel.Height);
LImage := TImage.Create(Self);
LImage.Parent := Self;
LImage.Stretch := False;
LImage.Center := true;
LImage.Picture.Bitmap := TBitmap.Create;
LImage.SetBounds(Image.Left+X*PitchX, Image.Top+Y*PitchY, Image.Width, Image.Height);
LMemo := TMemo.Create(Self);
LMemo.Parent := Self;
LMemo.BorderStyle := bsNone;
LMemo.ParentColor := True;
LMemo.OnKeyDown := @MemoKeyDown;
LMemo.OnKeyPress := @MemoKeyPress;
LMemo.SetBounds(Memo.Left+X*PitchX, Memo.Top+Y*PitchY, Memo.Width, Memo.Height);
LMemo.Alignment := taCenter;
if (X = 3) and (Y = 1) then
begin
LImage.OnDblClick := @CustomizeDblClick;
LMemo.OnDblClick := @CustomizeDblClick;
ClientWidth := LMemo.Left+LMemo.Width-1+Memo.Left;
ClientHeight := LMemo.Top+LMemo.Height-1+Image.Top;
end;
Memos[Index] := LMemo;
Images[Index] := LImage;
Inc(Index);
end;
ComboBoxFileName.ItemIndex := 0;
ComboBoxFileNameSelect(ComboBoxFileName);
end;
procedure TJvFullColorCircleDlgMainFrm.CustomizeDblClick(Sender: TObject);
begin
if JvFullColorCircleDialog.Execute then
RotateCustomValues;
end;
procedure TJvFullColorCircleDlgMainFrm.MemoKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Key := 0; // discard any key but Enabled=False affects the text rendering
end;
procedure TJvFullColorCircleDlgMainFrm.MemoKeyPress(Sender: TObject; var Key: Char);
begin
Key := #0; // discard any key but Enabled=False affects the text rendering
end;
procedure TJvFullColorCircleDlgMainFrm.ComboBoxFileNameSelect(Sender: TObject);
var
Index: Integer;
fn: String;
begin
if ComboboxFileName.ItemIndex = -1 then
exit;
if Image.Picture.Bitmap <> nil then begin
fn := ImgDir + ComboboxFileName.Items[ComboboxFileName.ItemIndex];
if FileExists(fn) then
Image.Picture.LoadFromFile(fn)
else
MessageDlg(Format('File "%s" not found.', [fn]), mtError, [mbOK], 0);
end;
// Image.Picture.Bitmap := TBitmap.Create;
// Image.Picture.Bitmap.LoadFromFile(ComboBoxFileName.Items[ComboBoxFileName.ItemIndex]);
with Memos[6].Lines do
begin
Clear;
Add(RsCustomize);
end;
Images[6].Picture.Bitmap.FreeImage;
for Index := Low(Images) to High(Images)-1 do
begin
Images[Index].Picture.Bitmap.FreeImage;
RotateBitmap(Image.Picture.Bitmap,Images[Index].Picture.Bitmap,ColorDeltas[Index]);
FormatMemo(Memos[Index],ColorDeltas[Index]);
end;
RotateCustomValues;
end;
procedure TJvFullColorCircleDlgMainFrm.RotateCustomValues;
begin
RotateBitmap(Image.Picture.Bitmap,Images[6].Picture.Bitmap,JvFullColorCircleDialog.Delta);
FormatMemo(Memos[6],JvFullColorCircleDialog.Delta);
end;
procedure TJvFullColorCircleDlgMainFrm.FormatMemo(AMemo: TMemo; const Delta: TJvColorDelta);
var
Index: TJvAxisIndex;
begin
AMemo.Lines.Clear;
with ColorSpaceManager, ColorSpace[Delta.ColorID], AMemo.Lines do
begin
Add(Format('%s (%s)',[Name, ShortName]));
for Index := Low(TJvAxisIndex) to High(TJvAxisIndex) do
Add(Format('%s : %d, %d, %d',[AxisName[Index],Delta.AxisRed[Index].Value,
Delta.AxisGreen[Index].Value,Delta.AxisBlue[Index].Value]));
if AMemo = Memos[6] then
Add(RsCustomize);
end;
end;
{ TJvColorDeltaList }
function TJvColorDeltaList.GetItems(Index: Integer): TJvColorDelta;
begin
Result := TJvColorDelta(TObjectList(Self).Items[Index]);
end;
procedure TJvColorDeltaList.SetItems(Index: Integer;
const Value: TJvColorDelta);
begin
TObjectList(Self).Items[Index] := Value;
end;
procedure FillColorDeltas;
var
Delta : TJvColorDelta;
begin
Delta := TJvColorDelta.Create;
Delta.ColorID := csRGB;
Delta.AxisRed[axIndex0].Value := 100;
Delta.AxisRed[axIndex0].SaturationMethod := smRange;
Delta.AxisRed[axIndex1].Value := 0;
Delta.AxisRed[axIndex1].SaturationMethod := smRange;
Delta.AxisRed[axIndex2].Value := 0;
Delta.AxisRed[axIndex2].SaturationMethod := smRange;
Delta.AxisGreen[axIndex0].Value := 0;
Delta.AxisGreen[axIndex0].SaturationMethod := smRange;
Delta.AxisGreen[axIndex1].Value := 0;
Delta.AxisGreen[axIndex1].SaturationMethod := smRange;
Delta.AxisGreen[axIndex2].Value := 0;
Delta.AxisGreen[axIndex2].SaturationMethod := smRange;
Delta.AxisBlue[axIndex0].Value := 0;
Delta.AxisBlue[axIndex0].SaturationMethod := smRange;
Delta.AxisBlue[axIndex1].Value := 0;
Delta.AxisBlue[axIndex1].SaturationMethod := smRange;
Delta.AxisBlue[axIndex2].Value := 50;
Delta.AxisBlue[axIndex2].SaturationMethod := smRange;
ColorDeltas.Add(Delta);
Delta := TJvColorDelta.Create;
Delta.ColorID := csHLS;
Delta.AxisRed[axIndex0].Value := 0;
Delta.AxisRed[axIndex0].SaturationMethod := smRange;
Delta.AxisRed[axIndex1].Value := 0;
Delta.AxisRed[axIndex1].SaturationMethod := smRange;
Delta.AxisRed[axIndex2].Value := 0;
Delta.AxisRed[axIndex2].SaturationMethod := smRange;
Delta.AxisGreen[axIndex0].Value := 40;
Delta.AxisGreen[axIndex0].SaturationMethod := smRange;
Delta.AxisGreen[axIndex1].Value := 0;
Delta.AxisGreen[axIndex1].SaturationMethod := smRange;
Delta.AxisGreen[axIndex2].Value := 0;
Delta.AxisGreen[axIndex2].SaturationMethod := smRange;
Delta.AxisBlue[axIndex0].Value := 0;
Delta.AxisBlue[axIndex0].SaturationMethod := smRange;
Delta.AxisBlue[axIndex1].Value := 0;
Delta.AxisBlue[axIndex1].SaturationMethod := smRange;
Delta.AxisBlue[axIndex2].Value := 0;
Delta.AxisBlue[axIndex2].SaturationMethod := smRange;
ColorDeltas.Add(Delta);
Delta := TJvColorDelta.Create;
Delta.ColorID := csHSV;
Delta.AxisRed[axIndex0].Value := 0;
Delta.AxisRed[axIndex0].SaturationMethod := smRange;
Delta.AxisRed[axIndex1].Value := -176;
Delta.AxisRed[axIndex1].SaturationMethod := smRange;
Delta.AxisRed[axIndex2].Value := -180;
Delta.AxisRed[axIndex2].SaturationMethod := smRange;
Delta.AxisGreen[axIndex0].Value := 0;
Delta.AxisGreen[axIndex0].SaturationMethod := smRange;
Delta.AxisGreen[axIndex1].Value := 0;
Delta.AxisGreen[axIndex1].SaturationMethod := smRange;
Delta.AxisGreen[axIndex2].Value := 0;
Delta.AxisGreen[axIndex2].SaturationMethod := smRange;
Delta.AxisBlue[axIndex0].Value := 0;
Delta.AxisBlue[axIndex0].SaturationMethod := smRange;
Delta.AxisBlue[axIndex1].Value := 0;
Delta.AxisBlue[axIndex1].SaturationMethod := smRange;
Delta.AxisBlue[axIndex2].Value := 0;
Delta.AxisBlue[axIndex2].SaturationMethod := smRange;
ColorDeltas.Add(Delta);
Delta := TJvColorDelta.Create;
Delta.ColorID := csYUV;
Delta.AxisRed[axIndex0].Value := 0;
Delta.AxisRed[axIndex0].SaturationMethod := smRange;
Delta.AxisRed[axIndex1].Value := 38;
Delta.AxisRed[axIndex1].SaturationMethod := smRange;
Delta.AxisRed[axIndex2].Value := 0;
Delta.AxisRed[axIndex2].SaturationMethod := smRange;
Delta.AxisGreen[axIndex0].Value := 0;
Delta.AxisGreen[axIndex0].SaturationMethod := smRange;
Delta.AxisGreen[axIndex1].Value := 68;
Delta.AxisGreen[axIndex1].SaturationMethod := smRange;
Delta.AxisGreen[axIndex2].Value := 0;
Delta.AxisGreen[axIndex2].SaturationMethod := smRange;
Delta.AxisBlue[axIndex0].Value := 0;
Delta.AxisBlue[axIndex0].SaturationMethod := smRange;
Delta.AxisBlue[axIndex1].Value := 0;
Delta.AxisBlue[axIndex1].SaturationMethod := smRange;
Delta.AxisBlue[axIndex2].Value := 0;
Delta.AxisBlue[axIndex2].SaturationMethod := smRange;
ColorDeltas.Add(Delta);
Delta := TJvColorDelta.Create;
Delta.ColorID := csHLS;
Delta.AxisRed[axIndex0].Value := 0;
Delta.AxisRed[axIndex0].SaturationMethod := smRange;
Delta.AxisRed[axIndex1].Value := -30;
Delta.AxisRed[axIndex1].SaturationMethod := smRange;
Delta.AxisRed[axIndex2].Value := 0;
Delta.AxisRed[axIndex2].SaturationMethod := smRange;
Delta.AxisGreen[axIndex0].Value := 0;
Delta.AxisGreen[axIndex0].SaturationMethod := smRange;
Delta.AxisGreen[axIndex1].Value := -30;
Delta.AxisGreen[axIndex1].SaturationMethod := smRange;
Delta.AxisGreen[axIndex2].Value := 0;
Delta.AxisGreen[axIndex2].SaturationMethod := smRange;
Delta.AxisBlue[axIndex0].Value := 0;
Delta.AxisBlue[axIndex0].SaturationMethod := smRange;
Delta.AxisBlue[axIndex1].Value := -30;
Delta.AxisBlue[axIndex1].SaturationMethod := smRange;
Delta.AxisBlue[axIndex2].Value := 0;
Delta.AxisBlue[axIndex2].SaturationMethod := smRange;
ColorDeltas.Add(Delta);
Delta := TJvColorDelta.Create;
Delta.ColorID := csXYZ;
Delta.AxisRed[axIndex0].Value := 0;
Delta.AxisRed[axIndex0].SaturationMethod := smRange;
Delta.AxisRed[axIndex1].Value := 0;
Delta.AxisRed[axIndex1].SaturationMethod := smRange;
Delta.AxisRed[axIndex2].Value := 0;
Delta.AxisRed[axIndex2].SaturationMethod := smRange;
Delta.AxisGreen[axIndex0].Value := 0;
Delta.AxisGreen[axIndex0].SaturationMethod := smRange;
Delta.AxisGreen[axIndex1].Value := 0;
Delta.AxisGreen[axIndex1].SaturationMethod := smRange;
Delta.AxisGreen[axIndex2].Value := 0;
Delta.AxisGreen[axIndex2].SaturationMethod := smRange;
Delta.AxisBlue[axIndex0].Value := 80;
Delta.AxisBlue[axIndex0].SaturationMethod := smRange;
Delta.AxisBlue[axIndex1].Value := 0;
Delta.AxisBlue[axIndex1].SaturationMethod := smRange;
Delta.AxisBlue[axIndex2].Value := 0;
Delta.AxisBlue[axIndex2].SaturationMethod := smRange;
ColorDeltas.Add(Delta);
end;
procedure TJvFullColorCircleDlgMainFrm.JvFullColorCircleDialogApply(Sender: TObject);
begin
RotateCustomValues;
end;
initialization
ColorDeltas := TJvColorDeltaList.Create;
FillColorDeltas;
finalization
ColorDeltas.Free;
end.

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<General>
<Flags>
<UseDefaultCompilerOptions Value="True"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="JvFullColorCircleDialogPrj"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<XPManifest>
<DpiAware Value="True"/>
</XPManifest>
<Icon Value="0"/>
</General>
<BuildModes Count="1">
<Item1 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="JvMMLazR"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="JvFullColorCircleDialogPrj.lpr"/>
<IsPartOfProject Value="True"/>
</Unit0>
<Unit1>
<Filename Value="JvFullColorCircleDialogMainForm.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="JvFullColorCircleDlgMainFrm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="JvFullColorCircleDialogPrj"/>
</Target>
<SearchPaths>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<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>

View File

@ -0,0 +1,15 @@
program JvFullColorCircleDialogPrj;
{$mode objfpc}{$H+}
uses
Interfaces, Forms,
JvFullColorCircleDialogMainForm in 'JvFullColorCircleDialogMainForm.pas' {JvFullColorCircleDlgMainFrm};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TJvFullColorCircleDlgMainFrm, JvFullColorCircleDlgMainFrm);
Application.Run;
end.

View File

@ -0,0 +1,42 @@
object JvFullColorDialogMainFrm: TJvFullColorDialogMainFrm
Left = 419
Height = 295
Top = 367
Width = 723
Caption = 'TJvFullColorDialog example'
ClientHeight = 295
ClientWidth = 723
Color = clBtnFace
Font.Color = clWindowText
OnCreate = FormCreate
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '2.1.0.0'
Visible = True
object JvFullColorLabel: TJvFullColorLabel
Left = 16
Height = 17
Top = 32
Width = 257
LabelColor = 67108864
Brush.Color = clBlack
Caption = 'JvFullColorLabel'
Font.Color = clWindowText
ParentFont = False
OnDblClick = JvFullColorLabelDblClick
end
object LabelInfo: TLabel
Left = 16
Height = 15
Top = 8
Width = 192
Caption = 'Double-click on a label to customize'
ParentColor = False
end
object JvFullColorDialog: TJvFullColorDialog
FullColor = 83886079
OnApply = JvFullColorDialogApply
left = 232
top = 128
end
end

View File

@ -0,0 +1,187 @@
{******************************************************************
JEDI-VCL Demo
Copyright (C) 2004 Project JEDI
Original author: Florent Ouchet [ouchet dott florent att laposte dott net]
Contributor(s):
You may retrieve the latest version of this file at the JEDI-JVCL
home page, located at http://jvcl.delphi-jedi.org
The contents of this file are used with permission, 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_1Final.html
Software distributed under the License is distributed on an
"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
******************************************************************}
unit JvFullColorDialogMainForm;
{$mode objfpc}{$H+}
interface
uses
//Windows, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, JvFullColorSpaces, JvFullColorCtrls, StdCtrls, JvFullColorForm,
JvFullColorDialogs;
type
{ TJvFullColorDialogMainFrm }
TJvFullColorDialogMainFrm = class(TForm)
JvFullColorLabel: TJvFullColorLabel;
LabelInfo: TLabel;
JvFullColorDialog: TJvFullColorDialog;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure JvFullColorLabelDblClick(Sender: TObject);
procedure JvFullColorDialogApply(Sender: TObject; AFullColor: TJvFullColor);
public
procedure UpdateCaption (ALabel: TJvFullColorLabel);
procedure UpdateAllCaptions;
end;
var
JvFullColorDialogMainFrm: TJvFullColorDialogMainFrm;
implementation
{$R *.lfm}
uses
Math;
procedure TJvFullColorDialogMainFrm.Button1Click(Sender: TObject);
begin
JvFullColorLabel.Caption := 'test';
end;
procedure TJvFullColorDialogMainFrm.FormCreate(Sender: TObject);
var
Index: Integer;
LDEFColorSpace: TJvDEFColorSpace;
LColorLabel: TJvFullColorLabel;
X, Y: Integer;
procedure CreateLabel(AFullColor: TJvFullColor);
begin
Inc(Y,JvFullColorLabel.Height+10);
if Y > ClientHeight then
begin
Y := JvFullColorLabel.Top;
Inc(X,JvFullColorLabel.Width+10);
end;
LColorLabel := TJvFullColorLabel.Create(Self);
LColorLabel.Parent := Self;
LColorLabel.SetBounds(X,Y,JvFullColorLabel.Width,JvFullColorLabel.Height);
LColorLabel.LabelColor := AFullColor;
LColorLabel.AutoSize := true;
LColorLabel.BorderSpacing.Around := 8;
LColorLabel.OnDblClick := @JvFullColorLabelDblClick;
end;
begin
X := JvFullColorLabel.Left;
Y := JvFullColorLabel.Top;
with ColorSpaceManager do
begin
LDEFColorSpace := TJvDEFColorSpace(ColorSpace[csDEF]);
for Index := 1 to Min(LDEFColorSpace.ColorCount-1,9) do
CreateLabel(ConvertFromColor(LDEFColorSpace.ColorValue[Index]));
with ColorSpace[csHLS] do
begin
CreateLabel(ConvertFromColor(clRed));
CreateLabel(ConvertFromColor(clLime));
CreateLabel(ConvertFromColor(clBlue));
CreateLabel(ConvertFromColor(clYellow));
end;
CreateLabel(ColorSpace[csYUV].ConvertFromColor(clWhite));
CreateLabel(ColorSpace[csYCC].ConvertFromColor(clPurple));
CreateLabel(ColorSpace[csHSV].ConvertFromColor(clAqua));
CreateLabel(ColorSpace[csYIQ].ConvertFromColor(clOlive));
CreateLabel(ColorSpace[csLAB].ConvertFromColor(clMaroon));
CreateLabel(ColorSpace[csDEF].ConvertFromColor(clAppWorkSpace));
end;
UpdateAllCaptions;
end;
procedure TJvFullColorDialogMainFrm.FormShow(Sender: TObject);
begin
AutoSize := true;
end;
procedure TJvFullColorDialogMainFrm.UpdateAllCaptions;
var
Index: Integer;
begin
for Index := 0 to ControlCount-1 do
if Controls[Index] is TJvFullColorLabel then
UpdateCaption(TJvFullColorLabel(Controls[Index]));
end;
procedure TJvFullColorDialogMainFrm.UpdateCaption(ALabel: TJvFullColorLabel);
var
Index: Cardinal;
LColor: TColor;
begin
with ColorSpaceManager, ColorSpace[GetColorSpaceID(ALabel.LabelColor)] do
if ID = csDEF then
begin
with TJvDEFColorSpace(ColorSpace[csDEF]) do
begin
LColor := ConvertToColor(ALabel.LabelColor);
for Index:=0 to ColorCount-1 do
if ColorValue[Index]=LColor then
begin
ALabel.Caption := Format('%s : %s',[ShortName,ColorPrettyName[Index]]);
Break;
end;
if Index = ColorCount then
ALabel.Caption := ShortName+' : Invalid color';
end;
end
else
ALabel.Caption := Format('%s : %s=%d ; %s=%d ; %s=%d',[ShortName,
AxisName[axIndex0],GetAxisValue(ALabel.LabelColor,axIndex0),
AxisName[axIndex1],GetAxisValue(ALabel.LabelColor,axIndex1),
AxisName[axIndex2],GetAxisValue(ALabel.LabelColor,axIndex2)]);
end;
procedure TJvFullColorDialogMainFrm.JvFullColorLabelDblClick(Sender: TObject);
begin
with TJvFullColorLabel(Sender) do
begin
JvFullColorDialog.FullColor := LabelColor;
JvFullColorDialog.Tag := Integer(Sender);
if JvFullColorDialog.Execute then
begin
LabelColor := JvFullColorDialog.FullColor;
UpdateCaption(TJvFullColorLabel(Sender));
end;
end;
end;
procedure TJvFullColorDialogMainFrm.JvFullColorDialogApply(Sender: TObject;
AFullColor: TJvFullColor);
begin
with TJvFullColorDialog(Sender) do
begin
TJvFullColorLabel(Tag).LabelColor := FullColor;
UpdateCaption(TJvFullColorLabel(Tag));
end;
end;
end.

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<General>
<Flags>
<UseDefaultCompilerOptions Value="True"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="JvFullColorDialogPrj"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<XPManifest>
<DpiAware Value="True"/>
</XPManifest>
<Icon Value="0"/>
</General>
<BuildModes Count="1">
<Item1 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="JvMMLazR"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="JvFullColorDialogPrj.lpr"/>
<IsPartOfProject Value="True"/>
</Unit0>
<Unit1>
<Filename Value="JvFullColorDialogMainForm.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="JvFullColorDialogMainFrm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="JvFullColorDialogPrj"/>
</Target>
<SearchPaths>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<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>

View File

@ -0,0 +1,16 @@
program JvFullColorDialogPrj;
{$mode objfpc}{$H+}
uses
Interfaces,
Forms,
JvFullColorDialogMainForm in 'JvFullColorDialogMainForm.pas' {JvFullColorDialogMainFrm};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TJvFullColorDialogMainFrm, JvFullColorDialogMainFrm);
Application.Run;
end.