Редактор свойства, пример которого приведен ниже, имеет ограничение на устанавливаемые цвета: только clRed, clWhite или clBlue.

 

 

Code:

unit ClrComps;

 

interface

 

uses

SysUtils, WinTypes, WinProcs, Messages, Classes,

Graphics, Controls, Forms, Dialogs, DsgnIntf;

 

type

TColorComponent = class(TComponent)

private

FColor: TColor;

protected

procedure SetColor(Value: TColor);

public

constructor Create(AnOwner: TComponent); override;

published

property Color: TColor read FColor write SetColor;

end;

  

{ Это специальный редактор свойства выбора цветов... }

TMyColorProperty = class(TIntegerProperty)

public

function GetAttributes: TPropertyAttributes; override;

function GetValue: string; override;

procedure GetValues(Proc: TGetStrProc); override;

procedure SetValue(const Value: string); override;

end;

 

procedureRegister;

 

implementation

 

{ TMyColorProperty }

 

function TMyColorProperty.GetAttributes: TPropertyAttributes;

begin

Result := [paMultiSelect, paValueList];

end;

 

function TMyColorProperty.GetValue: string;

begin

Result := ColorToString(TColor(GetOrdValue));

end;

 

procedure TMyColorProperty.GetValues(Proc: TGetStrProc);

begin

Proc('clRed');

Proc('clWhite');

Proc('clBlue');

end;

 

procedure TMyColorProperty.SetValue(const Value: string);

var

NewValue: Longint;

begin

if IdentToColor(Value, NewValue) and

((NewValue = clRed) or

(NewValue = clWhite) or

(NewValue = clBlue)) then

SetOrdValue(NewValue);

end;

 

{ Образец компонента... }

 

constructor TColorComponent.Create(AnOwner: TComponent);

begin

inherited Create(AnOwner);

FColor := clRed;

end;

 

procedure TColorComponent.SetColor(Value: TColor);

begin

if (Value = clRed) or

(Value = clWhite) or

(Value = clBlue) then

begin

FColor := Value;

end;

end;

 

procedureRegister;

begin

RegisterComponents('Samples', [TColorComponent]);

RegisterPropertyEditor(TypeInfo(TColor), TColorComponent,

'Color', TMyColorProperty);

end;

 

end.

 

- Ed Jordan

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!