SZKEVER

Top  Previous  Next

 

{     SZínkeverő komponens

    --------------------

    R,G,B szinértékek keverésével uj szineket hozhat létre

    A komponens aktiválása:

 

                szin := Szinkevero.Execute( szin )

 

    Created by: STELLA.SOFT

}

 

unit Szkever;

 

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, DsgnIntf, Szinform, Typinfo;

 

Type

 

TSzinkevero = class(TComponent)

private

  FSzin: TColor;

protected

public

  constructor Create(AOwner:TComponent);override;

  destructor Destroy;override;

  function Execute(sz: TColor): TColor;

published

  property szin: TColor read Fszin write Fszin;

end;

 

type

 

TSzinProperty = class(TIntegerProperty)

public

       FSzinDialog : TSZForm;

  function GetAttributes: TPropertyAttributes; override;

  function GetValue: string; override;

  procedure SetValue(const Value: string); override;

  procedure Edit; override;

end;

 

TSzinEditor = class(TDefaultEditor)

public

end;

 

Var

szForm: TSZForm;

Szinkevero: TSzinkevero;

 

procedure register;

 

implementation

 

procedure Register;

begin

RegisterComponents('AL', [TSzinkevero]);

RegisterComponentEditor(TSzinkevero, TSzinEditor);

RegisterPropertyEditor(TypeInfo(TColor), TSzinkevero, 'Szin', TSzinProperty);

end;

 

constructor TSzinkevero.Create(AOwner:TComponent);

begin

   inherited Create(AOwner);

end;

 

destructor TSzinkevero.Destroy;

begin

   inherited Destroy;

end;

 

function TSzinkevero.Execute(sz: TColor): TColor;

begin

Result:=szForm.Edit(sz)

end;

 

function TSzinProperty.GetAttributes: TPropertyAttributes;

begin

       Result := [paDialog,paAutoUpdate];

end;

 

 

procedure TSzinProperty.SetValue(const Value: string);

var new: Longint;

begin

   new := StrToInt(Value);

   SetOrdValue(new);

end;

 

 

function TSzinProperty.GetValue: string;

begin

Result := IntToStr(GetOrdValue);

end;

 

procedure TSzinProperty.Edit;

var Cur : TCursor;

begin

  Cur := Screen.Cursor;

  Screen.Cursor := crHourGlass;

  FSzinDialog := TSZForm.Create(Application);

  try

      Screen.Cursor := Cur;

         FSzinDialog.Edit(StrToInt(GetValue));

      If FSzindialog.Modalresult = mrOk then

      begin

         SetOrdValue(FSzindialog.RGBSzin);

      end;

  finally

      FSzinDialog.Free;

  end;

end;

 

 

end.