lazarus-ccr/components/mbColorLib/mbOfficeColorDialog.pas

73 lines
1.8 KiB
ObjectPascal

unit mbOfficeColorDialog;
{$MODE DELPHI}
interface
uses
LCLIntf, LCLType,
SysUtils, Classes, Graphics, Forms, OfficeMoreColorsDialog;
type
TmbOfficeColorDialog = class(TComponent)
private
FWin: TOfficeMoreColorsWin;
FSelColor: TColor;
FUseHint: boolean;
FMaxHue, FMaxSat, FMaxLum: Integer;
FPickerIndex: Integer;
public
constructor Create(AOwner: TComponent); override;
function Execute: boolean; overload;
function Execute(AColor: TColor): boolean; overload;
published
property SelectedColor: TColor read FSelColor write FSelColor default clWhite;
property MaxHue: Integer read FMaxHue write FMaxHue default 360;
property MaxSaturation: Integer read FMaxSat write FMaxSat default 255;
property MaxLuminance: Integer read FMaxLum write FMaxLum default 255;
property UseHints: boolean read FUseHint write FUseHint default false;
end;
implementation
{ TmbOfficeColorDialog }
constructor TmbOfficeColorDialog.Create(AOwner: TComponent);
begin
inherited;
FSelColor := clWhite;
FUseHint := false;
FMaxHue := 360;
FMaxSat := 255;
FMaxLum := 255;
end;
function TmbOfficeColorDialog.Execute: boolean;
begin
Result := Execute(FSelColor);
end;
function TmbOfficeColorDialog.Execute(AColor: TColor): boolean;
begin
FWin := TOfficeMoreColorsWin.Create(Application);
try
FWin.ShowHint := FUseHint;
FWin.MaxHue := FMaxHue;
FWin.MaxSaturation := FMaxSat;
FWin.MaxLuminance := FMaxLum;
FWin.PickerIndex := FPickerIndex;
// FWin.OldSwatch.Color := AColor;
FWin.SelectedColor := AColor;
Result := (FWin.ShowModal = IdOK);
if Result then
FSelColor := FWin.SelectedColor //FWin.NewSwatch.Color
else
FSelColor := clNone;
FPickerIndex := FWin.PickerIndex;
finally
FWin.Free;
end;
end;
end.