(*
  Auteur : Nicolas BRAULT (braultni@libertysurf.fr)
  Date : © 2002
  version : 0.9
  Commentaire : Cette version est presque la version finale,
                il reste encore quelques trucs à mettre mais pas de temps
                pour le faire... :-)
                Enfin pour l'instant
*)

unit ColorDialogAdv;

interface

uses
  Windows, Messages, SysUtils, Classes, UColorForm, graphics, Controls, couleur;

type
  TColorDialogAdv = class(Tcomponent)
  private
    { Déclarations privées }
    FColor: TColor;
    FOldColor : TColor;
    procedure SetColor(const Value: TColor);
  protected
    { Déclarations protégées }
  public
    { Déclarations publiques }
    Couleur : TCouleur;
    TheForm : TColorForm;

    constructor Create(Aowner : TComponent); override;
    destructor Destroy;override;
    function Execute:boolean;
  published
    { Déclarations publiées }
    property Color : TColor read FColor write SetColor;
  end;

implementation

{ TColorDialogAdv }

constructor TColorDialogAdv.Create(Aowner: TComponent);
begin
  Inherited create(Aowner);
  FOldColor := $000000;
  Couleur := TCouleur.Create;
  try
    TheForm := TColorForm.Create(self);
  except
    TheForm := nil;
  end;
end;

destructor TColorDialogAdv.Destroy;
begin
  Couleur.Free;
  TheForm.Free;
  inherited
end;

function TColorDialogAdv.Execute: boolean;
begin
  if TheForm=nil then
  begin
    Result := False
  end
  else
  if TheForm.ShowModal= mrOk then
  begin
    FOldColor := FColor;
    Couleur.Color := TheForm.Couleur.Color;
    FColor := Couleur.Color;
    Result := True
  end
  else
    Result := False;
end;

procedure TColorDialogAdv.SetColor(const Value: TColor);
begin
  FColor := Value;
  Couleur.Color := FColor;
  if not (csDesigning in ComponentState) then
    TheForm.Couleur := Couleur;
end;

end.
