2016-01-20 61 views
0

我創建了一個簡單的設計時組件,它有助於選擇並在同一表單上展示其他組件。 (在單個監視器環境中設計全屏幕形式時,比IDE對象樹視圖更方便)。但在Delphi XE2中,我無法可靠地確保並檢測到幫助器組件本身位於頂端。當我選擇它時,IDE會在其周圍繪製8個藍色球作爲標記,並且在我看來,這些標記是實際頂級窗口的一部分。在delphi設計器的頂部保留一個控件

那麼,如何檢查在IDE設計器中是否選擇了某個組件?

+0

你知道你可以「釘住」了'結構View',並調用它'Shift' - 'Alt' - 'F11'? –

回答

0

那麼,如何檢查在IDE設計器中是否選擇了某個組件?

爲您的組件創建一個設計時編輯器(確保在僅包含designtime的包中實現它,而不是運行時包),並使用RegisterComponentEditor()進行註冊。 TComponentEditor具有Designer屬性來訪問表單設計的IDesigner接口,其中有一個GetSelections()方法:

procedure GetSelections(const List: IDesignerSelections); 

IDesignerSelections具有CountItems[]性能,其中Items[]返回TPersistent對象。因此,您可以循環查看您想要的組件對象(所有組件都從TPersistent派生)。

IDesigner也有SelectComponent()SetSelections()方法,這樣你就可以有需要的表單設計器中選擇其他組件:

procedure SelectComponent(Instance: TPersistent); overload; 
procedure SelectComponent(const ADesignObject: IDesignObject); overload; 
procedure SetSelections(const List: IDesignerSelections); 
+0

對不起,我無法將其格式化爲'代碼'。請有人刪除它。 – malom

+0

@malom:你應該可以自己刪除它。 –

相關問題