mbColorLib: Add SHL picker to and permanently display HSL edits in OfficeMoreColorsDialog

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5474 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-12-13 16:36:12 +00:00
parent fcef4c5992
commit 76f6fe2f20
6 changed files with 306 additions and 193 deletions

View File

@ -33,6 +33,8 @@ type
FHSCursor, FLCursor: TCursor; FHSCursor, FLCursor: TCursor;
PBack: TBitmap; PBack: TBitmap;
function GetManual: boolean; function GetManual: boolean;
function GetShowHint: Boolean;
procedure SetShowHint(AValue: Boolean);
procedure SetLumIncrement(i: integer); procedure SetLumIncrement(i: integer);
procedure SelectColor(c: TColor); procedure SelectColor(c: TColor);
procedure SetH(v: integer); procedure SetH(v: integer);
@ -83,7 +85,7 @@ type
property HSPickerCursor: TCursor read FHSCursor write SetHSCursor default crDefault; property HSPickerCursor: TCursor read FHSCursor write SetHSCursor default crDefault;
property LPickerCursor: TCursor read FLCursor write SetLCursor default crDefault; property LPickerCursor: TCursor read FLCursor write SetLCursor default crDefault;
property TabStop default true; property TabStop default true;
property ShowHint; property ShowHint read GetShowHint write SetShowHint;
property ParentShowHint; property ParentShowHint;
property Anchors; property Anchors;
property Align; property Align;
@ -323,6 +325,19 @@ function THSLColorPicker.GetManual:boolean;
begin begin
Result := FHSPicker.Manual or FLPicker.Manual; Result := FHSPicker.Manual or FLPicker.Manual;
end; end;
function THSLColorPicker.GetShowHint: Boolean;
begin
Result := inherited ShowHint;
end;
procedure THSLColorPicker.SetShowHint(AValue: Boolean);
begin
inherited ShowHint := AValue;
FHSPicker.ShowHint := AValue;
FLPicker.ShowHint := AValue;
end;
(* (*
procedure THSLColorPicker.PaintParentBack; procedure THSLColorPicker.PaintParentBack;
begin begin

View File

@ -1,7 +1,7 @@
object OfficeMoreColorsWin: TOfficeMoreColorsWin object OfficeMoreColorsWin: TOfficeMoreColorsWin
Left = 194 Left = 265
Height = 300 Height = 300
Top = 112 Top = 115
Width = 331 Width = 331
ActiveControl = OKbtn ActiveControl = OKbtn
BorderIcons = [biSystemMenu] BorderIcons = [biSystemMenu]
@ -90,35 +90,35 @@ object OfficeMoreColorsWin: TOfficeMoreColorsWin
object Label3: TLabel object Label3: TLabel
Left = 6 Left = 6
Height = 13 Height = 13
Top = 154 Top = 150
Width = 60 Width = 32
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
Caption = 'Color mo&del:' Caption = 'Mo&del:'
FocusControl = ColorModel FocusControl = ColorModel
ParentColor = False ParentColor = False
end end
object LRedOrHue: TLabel object LRed: TLabel
Left = 6 Left = 6
Height = 13 Height = 13
Top = 180 Top = 176
Width = 23 Width = 23
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
Caption = '&Red:' Caption = '&Red:'
ParentColor = False ParentColor = False
end end
object LGreenOrSat: TLabel object LGreen: TLabel
Left = 6 Left = 6
Height = 13 Height = 13
Top = 206 Top = 202
Width = 33 Width = 33
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
Caption = '&Green:' Caption = '&Green:'
ParentColor = False ParentColor = False
end end
object LBlueOrLum: TLabel object LBlue: TLabel
Left = 6 Left = 6
Height = 13 Height = 13
Top = 232 Top = 228
Width = 24 Width = 24
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
Caption = '&Blue:' Caption = '&Blue:'
@ -126,9 +126,9 @@ object OfficeMoreColorsWin: TOfficeMoreColorsWin
end end
object HSL: THSLColorPicker object HSL: THSLColorPicker
Left = 6 Left = 6
Height = 128 Height = 124
Top = 20 Top = 20
Width = 203 Width = 210
HSPickerHintFormat = 'H: %h S: %s'#13'Hex: %hex' HSPickerHintFormat = 'H: %h S: %s'#13'Hex: %hex'
LPickerHintFormat = 'Luminance: %l' LPickerHintFormat = 'Luminance: %l'
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
@ -136,10 +136,10 @@ object OfficeMoreColorsWin: TOfficeMoreColorsWin
OnChange = HSLChange OnChange = HSLChange
end end
object ColorModel: TComboBox object ColorModel: TComboBox
Left = 74 Left = 48
Height = 21 Height = 21
Top = 148 Top = 146
Width = 92 Width = 147
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
ItemHeight = 13 ItemHeight = 13
ItemIndex = 0 ItemIndex = 0
@ -152,6 +152,44 @@ object OfficeMoreColorsWin: TOfficeMoreColorsWin
TabOrder = 1 TabOrder = 1
Text = 'RGB' Text = 'RGB'
end end
object SLH: TSLHColorPicker
Left = 6
Height = 80
Top = 20
Width = 115
HPickerHintFormat = 'Hue: %h'
SLPickerHintFormat = 'S: %hslS L: %l'#13'Hex: %hex'
ParentShowHint = False
TabOrder = 2
OnChange = SLHChange
end
object LHue: TLabel
Left = 120
Height = 13
Top = 176
Width = 23
Anchors = [akLeft, akBottom]
Caption = '&Hue:'
ParentColor = False
end
object LSat: TLabel
Left = 120
Height = 13
Top = 202
Width = 20
Anchors = [akLeft, akBottom]
Caption = '&Sat:'
ParentColor = False
end
object LLum: TLabel
Left = 120
Height = 13
Top = 228
Width = 23
Anchors = [akLeft, akBottom]
Caption = 'L&um:'
ParentColor = False
end
end end
end end
object OKbtn: TButton object OKbtn: TButton

View File

@ -14,11 +14,18 @@ uses
Forms, StdCtrls, ExtCtrls, ComCtrls, Forms, StdCtrls, ExtCtrls, ComCtrls,
HexaColorPicker, HSLColorPicker, RGBHSLUtils, HexaColorPicker, HSLColorPicker, RGBHSLUtils,
mbColorPreview, {$IFDEF mbXP_Lib}mbXPSpinEdit, mbXPSizeGrip,{$ELSE} Spin,{$ENDIF} mbColorPreview, {$IFDEF mbXP_Lib}mbXPSpinEdit, mbXPSizeGrip,{$ELSE} Spin,{$ENDIF}
HTMLColors; HTMLColors, SLHColorPicker;
type type
{ TOfficeMoreColorsWin }
TOfficeMoreColorsWin = class(TForm) TOfficeMoreColorsWin = class(TForm)
LLum: TLabel;
LSat: TLabel;
LHue: TLabel;
Pages: TPageControl; Pages: TPageControl;
SLH: TSLHColorPicker;
Standard: TTabSheet; Standard: TTabSheet;
Custom: TTabSheet; Custom: TTabSheet;
Hexa: THexaColorPicker; Hexa: THexaColorPicker;
@ -27,9 +34,9 @@ type
Label2: TLabel; Label2: TLabel;
Label3: TLabel; Label3: TLabel;
ColorModel: TComboBox; ColorModel: TComboBox;
LRedOrHue: TLabel; LRed: TLabel;
LGreenOrSat: TLabel; LGreen: TLabel;
LBlueOrLum: TLabel; LBlue: TLabel;
Label4: TLabel; Label4: TLabel;
Label5: TLabel; Label5: TLabel;
OKbtn: TButton; OKbtn: TButton;
@ -38,9 +45,12 @@ type
OldSwatch: TmbColorPreview; OldSwatch: TmbColorPreview;
procedure ColorModelChange(Sender: TObject); procedure ColorModelChange(Sender: TObject);
procedure HSLChange(Sender: TObject); procedure HSLChange(Sender: TObject);
procedure ERedOrHueChange(Sender: TObject); procedure ERedChange(Sender: TObject);
procedure EGreenOrSatChange(Sender: TObject); procedure EGreenChange(Sender: TObject);
procedure EBlueOrLumChange(Sender: TObject); procedure EBlueChange(Sender: TObject);
procedure EHueChange(Sender: TObject);
procedure ESatChange(Sender: TObject);
procedure ELumChange(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormResize(Sender: TObject); procedure FormResize(Sender: TObject);
@ -50,12 +60,15 @@ type
procedure OldSwatchColorChange(Sender: TObject); procedure OldSwatchColorChange(Sender: TObject);
procedure PagesChange(Sender: TObject); procedure PagesChange(Sender: TObject);
procedure SetAllToSel(c: TColor); procedure SetAllToSel(c: TColor);
procedure SLHChange(Sender: TObject);
private private
{$IFDEF mbXP_Lib} {$IFDEF mbXP_Lib}
ERedOrHue, EGreenOrSat, EBlueOrLum: TmbXPSpinEdit; ERed, EGreen, EBlue: TmbXPSpinEdit;
EHue, ESat, ELum: TmbXPSpinEdit;
grip: TmbXPSizeGrip; grip: TmbXPSizeGrip;
{$ELSE} {$ELSE}
ERedOrHue, EGreenOrSat, EBlueOrLum: TSpinEdit; ERed, EGreen, EBlue: TSpinEdit;
EHue, ESat, ELum: TSpinEdit;
{$ENDIF} {$ENDIF}
FLockChange: Integer; FLockChange: Integer;
protected protected
@ -89,124 +102,102 @@ begin
end; end;
procedure TOfficeMoreColorsWin.ColorModelChange(Sender: TObject); procedure TOfficeMoreColorsWin.ColorModelChange(Sender: TObject);
var
h, s, l: Integer;
begin begin
case ColorModel.ItemIndex of HSL.Visible := ColorModel.ItemIndex = 0;
0: SLH.Visible := ColorModel.ItemIndex = 1;
begin HSL.SelectedColor := NewSwatch.Color;
LRedOrHue.Caption := '&Red:'; SLH.SelectedColor := NewSwatch.Color;
LGreenOrSat.Caption := '&Green:';
LBlueOrLum.Caption := '&Blue:';
ERedOrHue.MaxValue := 255;
EGreenOrSat.MaxValue := 255;
EBlueOrLum.MaxValue := 255;
ERedOrHue.Value := GetRValue(NewSwatch.Color);
EGreenOrSat.Value := GetGValue(NewSwatch.Color);
EBlueOrLum.Value := GetBValue(NewSwatch.Color);
end;
1:
begin
LRedOrHue.Caption := 'H&ue:';
LGreenOrSat.Caption := '&Sat:';
LBlueOrLum.Caption := '&Lum:';
ERedOrHue.MaxValue := MaxHue; //238;
EGreenOrSat.MaxValue := MaxSat; //240;
EBlueOrLum.MaxValue := MaxLum; //240;
RGBtoHSLRange(NewSwatch.Color, h, s, l);
ERedOrHue.Value := h;
EGreenOrSat.Value := s;
EBlueOrLum.Value := l;
end;
end;
end; end;
procedure TOfficeMoreColorsWin.HSLChange(Sender: TObject); procedure TOfficeMoreColorsWin.HSLChange(Sender: TObject);
begin begin
if HSL.Manual then NewSwatch.Color := HSL.SelectedColor;
case ColorModel.ItemIndex of end;
0:
begin procedure TOfficeMoreColorsWin.ERedChange(Sender: TObject);
ERedOrHue.Value := HSL.RValue; begin
EGreenOrSat.Value := HSL.GValue; if (ERed.Text <> '') and
EBlueOrLum.Value := HSL.BValue; (ERed.Focused {$IFDEF DELPHI} or ERed.Button.Focused{$ENDIF}) then
NewSwatch.Color := HSL.SelectedColor; begin
end; inc(FLockChange);
1: HSL.RValue := ERed.Value;
begin SLH.RValue := ERed.Value;
ERedOrHue.Value := HSL.HValue; NewSwatch.Color := RGB(ERed.Value, EGreen.Value, EBlue.Value);
EGreenOrSat.Value := HSL.SValue; dec(FLockChange);
EBlueOrLum.Value := HSL.LValue;
NewSwatch.Color := HSL.SelectedColor;
end;
end; end;
end; end;
procedure TOfficeMoreColorsWin.ERedOrHueChange(Sender: TObject); procedure TOfficeMoreColorsWin.EGreenChange(Sender: TObject);
begin begin
inc(FLockChange); if (EGreen.Text <> '') and
if (ERedOrHue.Text <> '') and (EGreen.Focused {$IFDEF DELPHI}or EGreen.Button.Focused{$ENDIF}) then
(ERedOrHue.Focused {$IFDEF DELPHI} or ERedOrHue.Button.Focused{$ENDIF}) begin
then inc(FLockChange);
case ColorModel.ItemIndex of HSL.GValue := EGreen.Value;
0: begin SLH.GValue := EGreen.Value;
HSL.RValue := ERedOrHue.Value; NewSwatch.Color := RGB(ERed.Value, EGreen.Value, EBlue.Value);
NewSwatch.Color := RGB(ERedOrHue.Value, EGreenOrSat.Value, EBlueOrLum.Value); dec(FLockChange);
end; end;
1: begin
HSL.HValue := ERedOrHue.Value;
NewSwatch.Color := HSLRangeToRGB(ERedOrHue.Value, EGreenOrSat.Value, EBlueOrLum.Value);
end;
end;
dec(FLockChange);
end; end;
procedure TOfficeMoreColorsWin.EGreenOrSatChange(Sender: TObject); procedure TOfficeMoreColorsWin.EBlueChange(Sender: TObject);
begin begin
inc(FLockChange); if (EBlue.Text <> '') and
NewSwatch.OnColorChange := nil; (EBlue.Focused {$IFDEF DELPHI} or EBlue.Button.Focused{$ENDIF}) then
if (EGreenOrSat.Text <> '') and begin
(EGreenOrSat.Focused {$IFDEF DELPHI}or EGreen.ButtonOrSat.Focused{$ENDIF}) inc(FLockChange);
then HSL.BValue := EBlue.Value;
case ColorModel.ItemIndex of SLH.BValue := EBlue.Value;
0: begin NewSwatch.Color := RGB(ERed.Value, EGreen.Value, EBlue.Value);
HSL.GValue := EGreenOrSat.Value; dec(FLockChange);
NewSwatch.Color := RGB(ERedOrHue.Value, EGreenOrSat.Value, EBlueOrLum.Value); end;
end;
1: begin
HSL.SValue := EGreenOrSat.Value;
NewSwatch.Color := HSLRangeToRGB(ERedOrHue.Value, EGreenOrSat.Value, EBlueOrLum.Value);
end;
end;
dec(FLockChange);
end; end;
procedure TOfficeMoreColorsWin.EBlueOrLumChange(Sender: TObject); procedure TOfficeMoreColorsWin.EHueChange(Sender: TObject);
begin begin
inc(FLockChange); if (EHue.Text <> '') and
if (EBlueOrLum.Text <> '') and (EHue.Focused {$IFDEF DELPHI} or EHue.Button.Focused{$ENDIF}) then
(EBlueOrLum.Focused {$IFDEF DELPHI} or EBlueOrLum.Button.Focused{$ENDIF}) begin
then inc(FLockChange);
case ColorModel.ItemIndex of HSL.HValue := EHue.Value;
0: begin SLH.HValue := EHue.Value;
HSL.BValue := EBlueOrLum.Value; NewSwatch.Color := HSLRangeToRGB(EHue.Value, ESat.Value, ELum.Value);
NewSwatch.Color := RGB(ERedOrHue.Value, EGreenOrSat.Value, EBlueOrLum.Value); dec(FLockChange);
end; end;
1: begin end;
HSL.LValue := EBlueOrLum.Value;
NewSwatch.Color := HSLRangeToRGB(ERedOrHue.Value, EGreenOrSat.Value, EBlueOrLum.Value); procedure TOfficeMoreColorsWin.ESatChange(Sender: TObject);
end; begin
end; if (ESat.Text <> '') and
dec(FLockChange); (ESat.Focused {$IFDEF DELPHI}or ESat.Button.Focused{$ENDIF}) then
begin
inc(FLockChange);
HSL.SValue := ESat.Value;
SLH.SValue := ESat.Value;
NewSwatch.Color := HSLRangeToRGB(EHue.Value, ESat.Value, ELum.Value);
dec(FLockChange);
end;
end;
procedure TOfficeMoreColorsWin.ELumChange(Sender: TObject);
begin
if (ELum.Text <> '') and
(ELum.Focused {$IFDEF DELPHI} or ELum.Button.Focused{$ENDIF}) then
begin
inc(FLockChange);
HSL.LValue := ELum.Value;
NewSwatch.Color := HSLRangeToRGB(EHue.Value, ESat.Value, ELum.Value);
dec(FLockChange);
end;
end; end;
procedure TOfficeMoreColorsWin.FormKeyDown(Sender: TObject; var Key: Word; procedure TOfficeMoreColorsWin.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); Shift: TShiftState);
begin begin
case Key of case Key of
VK_RETURN: ModalResult := mrOK; VK_RETURN: ModalResult := mrOK;
VK_ESCAPE: ModalResult := mrCancel; VK_ESCAPE: ModalResult := mrCancel;
end; end;
end; end;
procedure TOfficeMoreColorsWin.HexaChange(Sender: TObject); procedure TOfficeMoreColorsWin.HexaChange(Sender: TObject);
@ -227,59 +218,51 @@ var
h,s,l: Integer; h,s,l: Integer;
begin begin
NewSwatch.Hint := GetHint(NewSwatch.Color); NewSwatch.Hint := GetHint(NewSwatch.Color);
if (ERedOrHue = nil) or (EBlueOrLum = nil) or (EGreenOrSat = nil) or if (ERed = nil) or (EBlue = nil) or (EGreen = nil) or
(FLockChange <> 0) (EHue = nil) or (ESat = nil) or (ELum = nil) or (FLockChange <> 0)
then then
exit; exit;
if ColorModel.ItemIndex = 0 then // RGB ERed.Value := GetRValue(NewSwatch.Color);
begin EGreen.Value := GetGValue(NewSwatch.Color);
ERedOrHue.Value := GetRValue(NewSwatch.Color); EBlue.Value := GetBValue(NewSwatch.Color);
EGreenOrSat.Value := GetGValue(NewSwatch.Color); EHue.Value := GetHValue(NewSwatch.Color);
EBlueOrLum.Value := GetBValue(NewSwatch.Color); ESat.Value := GetSValue(NewSwatch.Color);
end else ELum.Value := GetLValue(NewSwatch.Color);
begin
ERedOrHue.Value := GetHValue(NewSwatch.Color);
EGreenOrSat.Value := GetSValue(NewSwatch.Color);
EBlueOrLum.Value := GetLValue(NewSwatch.Color);
end;
end; end;
procedure TOfficeMoreColorsWin.OldSwatchColorChange(Sender: TObject); procedure TOfficeMoreColorsWin.OldSwatchColorChange(Sender: TObject);
begin begin
OldSwatch.Hint := GetHint(OldSwatch.Color); OldSwatch.Hint := GetHint(OldSwatch.Color);
SetAllToSel(OldSwatch.Color); SetAllToSel(OldSwatch.Color);
end; end;
procedure TOfficeMoreColorsWin.SetAllToSel(c: TColor); procedure TOfficeMoreColorsWin.SetAllToSel(c: TColor);
var var
h, s, l: Integer; h, s, l: Integer;
begin begin
case Pages.ActivePageIndex of case Pages.ActivePageIndex of
// Standard Page // Standard Page
0: Hexa.SelectedColor := c; 0: Hexa.SelectedColor := c;
// Custom Page // Custom Page
1: 1: begin
begin HSL.SelectedColor := c;
HSL.SelectedColor := c; SLH.SelectedColor := c;
case ColorModel.ItemIndex of ERed.Value := GetRValue(c);
0: EGreen.Value := GetGValue(c);
begin EBlue.Value := GetBValue(c);
ERedOrHue.Value := GetRValue(c); RGBtoHSLRange(c, h, s, l);
EGreenOrSat.Value := GetGValue(c); EHue.Value := h;
EBlueOrLum.Value := GetBValue(c); ESat.Value := s;
end; ELum.Value := l;
1: end;
begin end;
RGBtoHSLRange(c, h, s, l); NewSwatch.Color := c;
ERedOrHue.Value := h; end;
EGreenOrSat.Value := s;
EBlueOrLum.Value := l; procedure TOfficeMoreColorsWin.SLHChange(Sender: TObject);
end; begin
end; NewSwatch.Color := SLH.SelectedColor;
end;
end;
NewSwatch.Color := c;
end; end;
procedure TOfficeMoreColorsWin.PagesChange(Sender: TObject); procedure TOfficeMoreColorsWin.PagesChange(Sender: TObject);
@ -289,6 +272,8 @@ end;
procedure TOfficeMoreColorsWin.FormResize(Sender: TObject); procedure TOfficeMoreColorsWin.FormResize(Sender: TObject);
begin begin
SLH.Width := SLH.Parent.ClientWidth - SLH.Left;
SLH.Height := ColorModel.Top - SLH.Top;
{$IFDEF mbXP_Lib} {$IFDEF mbXP_Lib}
grip.Left := ClientWidth - 15; grip.Left := ClientWidth - 15;
grip.Top := ClientHeight - 15; grip.Top := ClientHeight - 15;
@ -297,58 +282,116 @@ end;
procedure TOfficeMoreColorsWin.FormCreate(Sender: TObject); procedure TOfficeMoreColorsWin.FormCreate(Sender: TObject);
begin begin
SLH.Width := HSL.Width;
SLH.Height := HSL.Height;
SLH.Top := HSL.Top;
SLH.Left := HSL.Left;
SLH.Hide;
// SLH.Anchors := [akLeft, akTop, akRight, akBottom];
{$IFDEF mbXP_Lib} {$IFDEF mbXP_Lib}
ERedOrHue := TmbXPSpinEdit.CreateParented(Custom.Handle); ERed := TmbXPSpinEdit.CreateParented(Custom.Handle);
EGreenOrSat := TmbXPSpinEdit.CreateParented(Custom.Handle); EGreen := TmbXPSpinEdit.CreateParented(Custom.Handle);
EBlueOrLum := TmbXPSpinEdit.CreateParented(Custom.Handle); EBlue := TmbXPSpinEdit.CreateParented(Custom.Handle);
grip := TmbXPSizeGrip.CreateParented(Self.Handle); grip := TmbXPSizeGrip.CreateParented(Self.Handle);
{$ELSE} {$ELSE}
ERedOrHue := TSpinEdit.CreateParented(Custom.Handle); ERed := TSpinEdit.CreateParented(Custom.Handle);
EGreenOrSat := TSpinEdit.CreateParented(Custom.Handle); EGreen := TSpinEdit.CreateParented(Custom.Handle);
EBlueOrLum := TSpinEdit.CreateParented(Custom.Handle); EBlue := TSpinEdit.CreateParented(Custom.Handle);
EHue := TSpinEdit.CreateParented(Custom.Handle);
ESat := TSpinEdit.createParented(Custom.Handle);
ELum := TSpinEdit.CreateParented(Custom.Handle);
{$ENDIF} {$ENDIF}
with ERedOrHue do with ERed do
begin begin
Name := 'ERed'; Name := 'ERed';
Width := 47; Width := 47;
Height := 22; Height := 22;
Left := 74; Left := ColorModel.Left;
Top := LRedOrHue.Top - 4; //198; Top := LRed.Top - 4; //198;
Alignment := taRightJustify;
Anchors := [akLeft, akBottom]; Anchors := [akLeft, akBottom];
MaxValue := 255; MaxValue := 255;
MinValue := 0; MinValue := 0;
Value := 0; Value := 0;
OnChange := @ERedOrHueChange; OnChange := @ERedChange;
end; end;
with EGreenOrSat do with EGreen do
begin begin
Name := 'EGreen'; Name := 'EGreen';
Width := 47; Width := 47;
Height := 22; Height := 22;
Left := 74; Left := ColorModel.Left;
Top := LGreenOrSat.Top - 3; //224; Top := LGreen.Top - 3; //224;
Alignment := taRightJustify;
Anchors := [akLeft, akBottom]; Anchors := [akLeft, akBottom];
MaxValue := 255; MaxValue := 255;
MinValue := 0; MinValue := 0;
Value := 0; Value := 0;
OnChange := @EGreenOrSatChange; OnChange := @EGreenChange;
end; end;
with EBlueOrLum do with EBlue do
begin begin
Name := 'EBlue'; Name := 'EBlue';
Width := 47; Width := 47;
Height := 22; Height := 22;
Left := 74; Left := ColorModel.Left;
Top := LBlueOrLum.Top - 4; //251; Top := LBlue.Top - 4; //251;
Alignment := taRightJustify;
Anchors := [akLeft, akBottom]; Anchors := [akLeft, akBottom];
MaxValue := 255; MaxValue := 255;
MinValue := 0; MinValue := 0;
Value := 0; Value := 0;
OnChange := @EBlueOrLumChange; OnChange := @EBlueChange;
end; end;
Custom.InsertControl(ERedOrHue); with EHue do
Custom.InsertControl(EGreenOrSat); begin
Custom.InsertControl(EBlueOrLum); Name := 'EHue';
Width := 47;
Height := 22;
Left := ColorModel.Left + ColorModel.Width - Width;
Top := ERed.Top;
Alignment := taRightJustify;
Anchors := [akLeft, akBottom];
MaxValue := MaxHue;
MinValue := 0;
Value := 0;
OnChange := @EHueChange;
end;
with ESat do
begin
Name := 'ESat';
Width := 47;
Height := 22;
Left := ColorModel.Left + ColorModel.Width - Width;
Top := EGreen.Top;
Alignment := taRightJustify;
Anchors := [akLeft, akBottom];
MaxValue := MaxSat;
MinValue := 0;
Value := 0;
OnChange := @ESatChange;
end;
with ELum do
begin
Name := 'ELum';
Width := 47;
Height := 22;
Left := ColorModel.Left + ColorModel.Width - Width;
Top := EBlue.Top;
Alignment := taRightJustify;
Anchors := [akLeft, akBottom];
MaxValue := MaxLum;
MinValue := 0;
Value := 0;
OnChange := @ELumChange;
end;
Custom.InsertControl(ERed);
Custom.InsertControl(EGreen);
Custom.InsertControl(EBlue);
Custom.InsertControl(EHue);
Custom.InsertControl(ESat);
Custom.InsertControl(ELum);
{$IFDEF mbXP_Lib} {$IFDEF mbXP_Lib}
with grip do with grip do
begin begin

View File

@ -32,6 +32,8 @@ type
FSLCursor, FHCursor: TCursor; FSLCursor, FHCursor: TCursor;
PBack: TBitmap; PBack: TBitmap;
function GetManual: boolean; function GetManual: boolean;
function GetShowHint: Boolean;
procedure SetShowHint(AValue: Boolean);
procedure SelectColor(c: TColor); procedure SelectColor(c: TColor);
procedure SetH(v: integer); procedure SetH(v: integer);
procedure SetS(v: integer); procedure SetS(v: integer);
@ -79,7 +81,7 @@ type
property HPickerCursor: TCursor read FHCursor write SetHCursor default crDefault; property HPickerCursor: TCursor read FHCursor write SetHCursor default crDefault;
property SLPickerCursor: TCursor read FSLCursor write SetSLCursor default crDefault; property SLPickerCursor: TCursor read FSLCursor write SetSLCursor default crDefault;
property TabStop default true; property TabStop default true;
property ShowHint; property ShowHint read GetShowHint write SetShowHint;
property ParentShowHint; property ParentShowHint;
property Anchors; property Anchors;
property Align; property Align;
@ -326,6 +328,18 @@ begin
Result := FHPicker.Manual or FSLPicker.Manual; Result := FHPicker.Manual or FSLPicker.Manual;
end; end;
function TSLHColorPicker.GetShowHint: Boolean;
begin
result := inherited ShowHint;
end;
procedure TSLHColorPicker.SetShowHint(AValue: Boolean);
begin
inherited ShowHint := AValue;
FSLPicker.ShowHint := AValue;
FHPicker.ShowHint := AValue;
end;
procedure TSLHColorPicker.Resize; procedure TSLHColorPicker.Resize;
begin begin
inherited; inherited;

View File

@ -1,7 +1,7 @@
object Form1: TForm1 object Form1: TForm1
Left = 255 Left = 447
Height = 344 Height = 344
Top = 107 Top = 197
Width = 543 Width = 543
Caption = 'mbColor Lib v2.0.1 Demo' Caption = 'mbColor Lib v2.0.1 Demo'
ClientHeight = 344 ClientHeight = 344
@ -42,9 +42,9 @@ object Form1: TForm1
Height = 331 Height = 331
Top = 6 Top = 6
Width = 399 Width = 399
ActivePage = TabSheet8 ActivePage = TabSheet6
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
TabIndex = 8 TabIndex = 5
TabOrder = 0 TabOrder = 0
OnMouseMove = PageControl1MouseMove OnMouseMove = PageControl1MouseMove
object TabSheet1: TTabSheet object TabSheet1: TTabSheet

View File

@ -203,13 +203,16 @@
<UnitName Value="mbReg"/> <UnitName Value="mbReg"/>
</Item46> </Item46>
</Files> </Files>
<RequiredPkgs Count="2"> <RequiredPkgs Count="3">
<Item1> <Item1>
<PackageName Value="LCLBase"/> <PackageName Value="LCL"/>
</Item1> </Item1>
<Item2> <Item2>
<PackageName Value="FCL"/> <PackageName Value="LCLBase"/>
</Item2> </Item2>
<Item3>
<PackageName Value="FCL"/>
</Item3>
</RequiredPkgs> </RequiredPkgs>
<UsageOptions> <UsageOptions>
<UnitPath Value="$(PkgOutDir)"/> <UnitPath Value="$(PkgOutDir)"/>