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.