2013-11-23 72 views
2

SynEdit組件具有屬性「Highlighter」,其中包含一個下拉列表,其中列出了所有當前存在的熒光筆(設計時)。對我來說,這似乎是設計時組件的一個非常重要的概念,但我無法瞭解它是如何工作的:如何創建列出其他組件的組件屬性?

讓我們假設您將TSynEdit和TSynPasSyn拖放到窗體上。然後,您單擊具有屬性熒光筆的TSynedit。您現在可以選擇以前創建的TSynPasSyn。如果你創建另一個TSynPasSyn,它也會被添加到這個列表中。我的問題:

哪種方法可以在您自己的組件中完成這樣的事情?你可以簡單地使用一個屬性編輯器,或者你需要定製的助手類,還是完全不同的東西?

回答

11

也許這會讓你大吃一驚,但是在你自己的組件中獲取組件屬性的屬性編輯器中列出的現有組件時,不需要任何東西。只需將該屬性聲明爲所需的類型,VCL框架將完成剩下的工作。

例如,考慮這個非常簡單的組件:

type 
    TButtonSelector = class(TComponent) 
    private 
    FButton: TButton; 
    published 
    property Button: TButton read FButton write FButton; 
    end; 

在IDE中安裝此組件後,當您選擇在Object Inspector按鈕屬性,列出當前表單上的所有現有按鈕。

這是全部內建於DesignEditors.TComponentProperty,這意味着唯一的要求是讓你想從TComponent選擇下降的對象。

+1

謝謝!我從來不會相信這很簡單:D – Oelfrachter

相關問題