lazarus-ccr/components/mbColorLib/mbOfficeColorDialog.pas

76 lines
1.5 KiB
ObjectPascal

unit mbOfficeColorDialog;
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
interface
uses
{$IFDEF FPC}
LCLIntf, LCLType,
{$ELSE}
Windows,
{$ENDIF}
SysUtils, Classes, Graphics, Forms, OfficeMoreColorsDialog;
type
TmbOfficeColorDialog = class(TComponent)
private
FWin: TOfficeMoreColorsWin;
FSelColor: TColor;
FUseHint: boolean;
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 UseHints: boolean read FUseHint write FUseHint default false;
end;
implementation
{ TmbOfficeColorDialog }
constructor TmbOfficeColorDialog.Create(AOwner: TComponent);
begin
inherited;
FSelColor := clWhite;
FUseHint := false;
end;
function TmbOfficeColorDialog.Execute: boolean;
begin
FWin := TOfficeMoreColorsWin.Create(Application);
try
FWin.OldSwatch.Color := FSelColor;
FWin.ShowHint := FUseHint;
Result := (FWin.ShowModal = IdOK);
if Result then
FSelColor := FWin.NewSwatch.Color
else
FSelColor := clNone;
finally
FWin.Free;
end;
end;
function TmbOfficeColorDialog.Execute(AColor: TColor): boolean;
begin
FWin := TOfficeMoreColorsWin.Create(Application);
try
FWin.OldSwatch.Color := AColor;
FWin.ShowHint := FUseHint;
Result := (FWin.ShowModal = IdOK);
if Result then
FSelColor := FWin.NewSwatch.Color
else
FSelColor := clNone;
finally
FWin.Free;
end;
end;
end.