2011-02-10 2 views
3

에 반영 할 구성 요소에 속성을 추가하는 방법 객체에 속성을 추가 할 때 객체 속성에서 해당 속성을 어떻게 볼 수 있습니까?Delphi 7의 객체 검사기

답변

13

속성을 published으로 지정하십시오. 예를 들어,

private 
    FMyProperty: integer; 
published 
    property MyProperty: integer read FMyProperty write FMyProperty; 

종종, 당신은 속성이 변경 될 때 컨트롤을 다시 칠 (또는 다른 처리를 할) 필요가있다. 그런 다음

private 
    FMyProperty: integer; 
    procedure SetMyProperty(MyProperty: integer); 
published 
    property MyProperty: integer read FMyProperty write SetMyProperty; 

... 

procedure TMyControl.SetMyProperty(MyProperty: integer); 
begin 
    if FMyProperty <> MyProperty then 
    begin 
    FMyProperty := MyProperty; 
    Invalidate; // for example 
    end; 
end; 
+0

와우 10 초 전에, 당신이 빠르다 완료 :-) 수 : t은 RegisterComponent를 사용하여 새로운 클래스를 등록! – jachguate

+0

@jachguate : 알아. 나를 때리는 것이 쉽지 않습니다! :) –

+0

하하하 ... +1, btw. ;) – jachguate

4

게시 된 섹션으로 해당 속성을 추가 할 수있는,이 같은,이 오브젝트 인스펙터에 표시 할 것입니다 :

TMyComponent = class(TComponent) 
... 
published 
    property MyProperty: string read FMyProperty write SetMyProperty; 
3

docs에서 :

속성을 구성 요소 클래스의 게시 된 섹션에 선언 된 선언은 디자인 타임에 객체 속성에서 편집 할 수 있습니다.

1

Delphi에서 디자인 타임 패키지로 등록해야하거나 구성 요소 관리자에서 아무 것도 볼 수 없다는 것을 잊지 마세요 !!!

내 말은 ... 내가 만들 수있는 새로운 TPanel과는 TMyPanel라고 해 새로운 게시 속성을 추가 후손 :

type 
    TPanel1 = class(TPanel) 
    private 
    FMyName: String; 
    { Private declarations } 
    protected 
    { Protected declarations } 
    public 
    { Public declarations } 
    published 
    { Published declarations } 
    property MyName : String read FMyName write FMyName; 
    end; 

을하지만 'HAVN 경우 그 속성은 오브젝트 인스펙터에 표시되지 않습니다

procedure Register; 
begin 
    RegisterComponents('Samples', [TPanel1]); 
end; 

그냥

관련 문제